From e4d798f07897a6378d0f2588e4c2335ec85ca935 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Fri, 20 Jan 2012 21:50:17 +0000 Subject: [PATCH] More dead code removal (using -Wunreachable-code) llvm-svn: 148577 --- clang/lib/AST/ASTImporter.cpp | 11 +-- clang/lib/AST/Decl.cpp | 3 - clang/lib/AST/DeclBase.cpp | 2 +- clang/lib/AST/DeclarationName.cpp | 5 +- clang/lib/AST/DumpXML.cpp | 1 - clang/lib/AST/Expr.cpp | 11 +-- clang/lib/AST/ExprClassification.cpp | 3 - clang/lib/AST/ExprConstant.cpp | 10 +- clang/lib/AST/ItaniumMangle.cpp | 3 - clang/lib/AST/NestedNameSpecifier.cpp | 17 ++-- clang/lib/AST/Stmt.cpp | 2 - clang/lib/AST/StmtProfile.cpp | 1 - clang/lib/AST/TemplateBase.cpp | 28 +++--- clang/lib/AST/Type.cpp | 6 -- clang/lib/AST/TypeLoc.cpp | 97 +++++++++---------- clang/lib/AST/TypePrinter.cpp | 2 +- clang/lib/Analysis/CFG.cpp | 1 - clang/lib/Analysis/CocoaConventions.cpp | 3 - clang/lib/Analysis/FormatString.cpp | 10 +- clang/lib/Analysis/ScanfFormatString.cpp | 4 +- clang/lib/CodeGen/CGBuiltin.cpp | 1 - clang/lib/CodeGen/CGCleanup.cpp | 1 - clang/lib/CodeGen/CGDebugInfo.cpp | 3 - clang/lib/CodeGen/CGException.cpp | 3 +- clang/lib/CodeGen/CGExpr.cpp | 4 - clang/lib/CodeGen/CGExprAgg.cpp | 1 - clang/lib/CodeGen/CGExprComplex.cpp | 1 - clang/lib/CodeGen/CGExprScalar.cpp | 13 --- clang/lib/CodeGen/CGObjC.cpp | 1 - clang/lib/CodeGen/CGObjCMac.cpp | 1 - clang/lib/CodeGen/CGRTTI.cpp | 7 +- clang/lib/CodeGen/CodeGenModule.cpp | 6 +- clang/lib/CodeGen/CodeGenModule.h | 1 - clang/lib/CodeGen/CodeGenTypes.cpp | 2 - clang/lib/CodeGen/TargetInfo.cpp | 1 - clang/lib/Frontend/CompilerInvocation.cpp | 2 - clang/lib/Index/ASTLocation.cpp | 8 +- clang/lib/Parse/ParseExprCXX.cpp | 2 +- clang/lib/Sema/SemaDeclCXX.cpp | 4 +- clang/lib/Sema/SemaLookup.cpp | 1 - clang/lib/Sema/SemaTemplateDeduction.cpp | 12 +-- clang/lib/Sema/SemaTemplateVariadic.cpp | 3 - clang/lib/Sema/SemaType.cpp | 8 +- .../Checkers/GenericTaintChecker.cpp | 3 - .../Checkers/PthreadLockChecker.cpp | 1 - .../StaticAnalyzer/Core/CheckerContext.cpp | 9 +- clang/lib/StaticAnalyzer/Core/Environment.cpp | 1 - clang/lib/StaticAnalyzer/Core/ExprEngine.cpp | 3 - .../Core/SimpleConstraintManager.cpp | 4 - clang/tools/libclang/CIndexCodeCompletion.cpp | 3 +- 50 files changed, 107 insertions(+), 223 deletions(-) diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index 10f5a206d5b2..abf214aa1a15 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -332,7 +332,6 @@ static bool IsStructurallyEquivalent(StructuralEquivalenceContext &Context, } llvm_unreachable("Invalid template argument kind"); - return true; } /// \brief Determine structural equivalence for the common part of array @@ -1357,8 +1356,8 @@ QualType ASTNodeImporter::VisitBuiltinType(const BuiltinType *T) { // wchar_t? return Importer.getToContext().WCharTy; } - - return QualType(); + + llvm_unreachable("Invalid BuiltinType Kind!"); } QualType ASTNodeImporter::VisitComplexType(const ComplexType *T) { @@ -1983,7 +1982,6 @@ ASTNodeImporter::ImportTemplateArgument(const TemplateArgument &From) { } llvm_unreachable("Invalid template argument kind"); - return TemplateArgument(); } bool ASTNodeImporter::ImportTemplateArguments(const TemplateArgument *FromArgs, @@ -4214,7 +4212,6 @@ NestedNameSpecifier *ASTImporter::Import(NestedNameSpecifier *FromNNS) { } llvm_unreachable("Invalid nested name specifier kind"); - return 0; } NestedNameSpecifierLoc ASTImporter::Import(NestedNameSpecifierLoc FromNNS) { @@ -4309,7 +4306,6 @@ TemplateName ASTImporter::Import(TemplateName From) { } llvm_unreachable("Invalid template name kind"); - return TemplateName(); } SourceLocation ASTImporter::Import(SourceLocation FromLoc) { @@ -4453,8 +4449,7 @@ DeclarationName ASTImporter::Import(DeclarationName FromName) { return DeclarationName::getUsingDirectiveName(); } - // Silence bogus GCC warning - return DeclarationName(); + llvm_unreachable("Invalid DeclarationName Kind!"); } IdentifierInfo *ASTImporter::Import(const IdentifierInfo *FromId) { diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp index 001620a611bf..49227e919588 100644 --- a/clang/lib/AST/Decl.cpp +++ b/clang/lib/AST/Decl.cpp @@ -48,8 +48,6 @@ static llvm::Optional getVisibilityOf(const Decl *D) { case VisibilityAttr::Protected: return ProtectedVisibility; } - - return DefaultVisibility; } // If we're on Mac OS X, an 'availability' for Mac OS X attribute @@ -1141,7 +1139,6 @@ const char *VarDecl::getStorageClassSpecifierString(StorageClass SC) { } llvm_unreachable("Invalid storage class"); - return 0; } VarDecl *VarDecl::Create(ASTContext &C, DeclContext *DC, diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp index 3763ebd2f7d7..da54a44784e2 100644 --- a/clang/lib/AST/DeclBase.cpp +++ b/clang/lib/AST/DeclBase.cpp @@ -529,7 +529,7 @@ unsigned Decl::getIdentifierNamespaceForKind(Kind DeclKind) { return 0; } - return 0; + llvm_unreachable("Invalid DeclKind!"); } void Decl::setAttrs(const AttrVec &attrs) { diff --git a/clang/lib/AST/DeclarationName.cpp b/clang/lib/AST/DeclarationName.cpp index bf647ed7ac35..a5488e67ca23 100644 --- a/clang/lib/AST/DeclarationName.cpp +++ b/clang/lib/AST/DeclarationName.cpp @@ -125,8 +125,8 @@ int DeclarationName::compare(DeclarationName LHS, DeclarationName RHS) { case DeclarationName::CXXUsingDirective: return 0; } - - return 0; + + llvm_unreachable("Invalid DeclarationName Kind!"); } } // end namespace clang @@ -189,7 +189,6 @@ DeclarationName::NameKind DeclarationName::getNameKind() const { return ObjCMultiArgSelector; } - break; } // Can't actually get here. diff --git a/clang/lib/AST/DumpXML.cpp b/clang/lib/AST/DumpXML.cpp index 9dd5a010f08c..c5e23ccc6ead 100644 --- a/clang/lib/AST/DumpXML.cpp +++ b/clang/lib/AST/DumpXML.cpp @@ -165,7 +165,6 @@ static StringRef getTypeKindName(Type *T) { } llvm_unreachable("unknown type kind!"); - return "unknown_type"; } struct XMLDumper : public XMLDeclVisitor, diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 7fc070031154..a92dafb27327 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -124,7 +124,6 @@ SourceLocation Expr::getExprLoc() const { #include "clang/AST/StmtNodes.inc" } llvm_unreachable("unknown statement kind"); - return SourceLocation(); } //===----------------------------------------------------------------------===// @@ -1213,7 +1212,6 @@ const char *CastExpr::getCastKindName() const { } llvm_unreachable("Unhandled cast kind!"); - return 0; } Expr *CastExpr::getSubExprAsWritten() { @@ -1255,7 +1253,6 @@ CXXBaseSpecifier **CastExpr::path_buffer() { #include "clang/AST/StmtNodes.inc" default: llvm_unreachable("non-cast expressions not possible here"); - return 0; } } @@ -1343,7 +1340,7 @@ const char *BinaryOperator::getOpcodeStr(Opcode Op) { case BO_Comma: return ","; } - return ""; + llvm_unreachable("Invalid OpCode!"); } BinaryOperatorKind @@ -3015,7 +3012,7 @@ SourceRange ObjCMessageExpr::getReceiverRange() const { return getSuperLoc(); } - return SourceLocation(); + llvm_unreachable("Invalid ReceiverKind!"); } Selector ObjCMessageExpr::getSelector() const { @@ -3064,8 +3061,8 @@ StringRef ObjCBridgedCastExpr::getBridgeKindName() const { case OBC_BridgeRetained: return "__bridge_retained"; } - - return "__bridge"; + + llvm_unreachable("Invalid BridgeKind!"); } bool ChooseExpr::isConditionTrue(const ASTContext &C) const { diff --git a/clang/lib/AST/ExprClassification.cpp b/clang/lib/AST/ExprClassification.cpp index 60e6f96c963b..311b80547145 100644 --- a/clang/lib/AST/ExprClassification.cpp +++ b/clang/lib/AST/ExprClassification.cpp @@ -47,7 +47,6 @@ static Cl::Kinds ClassifyExprValueKind(const LangOptions &Lang, return Cl::CL_XValue; } llvm_unreachable("Invalid value category of implicit cast."); - return Cl::CL_PRValue; } Cl Expr::ClassifyImpl(ASTContext &Ctx, SourceLocation *Loc) const { @@ -99,7 +98,6 @@ static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) { #define EXPR(Kind, Base) #include "clang/AST/StmtNodes.inc" llvm_unreachable("cannot classify a statement"); - break; // First come the expressions that are always lvalues, unconditionally. case Expr::ObjCIsaExprClass: @@ -371,7 +369,6 @@ static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) { } llvm_unreachable("unhandled expression kind in classification"); - return Cl::CL_LValue; } /// ClassifyDecl - Return the classification of an expression referencing the diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp index 5d6140695902..bdedb1608ed8 100644 --- a/clang/lib/AST/ExprConstant.cpp +++ b/clang/lib/AST/ExprConstant.cpp @@ -3756,7 +3756,6 @@ static int EvaluateBuiltinClassifyType(const CallExpr *E) { return union_type_class; else // FIXME: offset_type_class, method_type_class, & lang_type_class? llvm_unreachable("CallExpr::isBuiltinClassifyType(): unimplemented type"); - return -1; } /// EvaluateBuiltinConstantPForLValue - Determine the result of @@ -4385,7 +4384,6 @@ bool IntExprEvaluator::VisitUnaryExprOrTypeTraitExpr( } llvm_unreachable("unknown expr/type trait"); - return Error(E); } bool IntExprEvaluator::VisitOffsetOfExpr(const OffsetOfExpr *OOE) { @@ -4427,7 +4425,6 @@ bool IntExprEvaluator::VisitOffsetOfExpr(const OffsetOfExpr *OOE) { case OffsetOfExpr::OffsetOfNode::Identifier: llvm_unreachable("dependent __builtin_offsetof"); - return Error(OOE); case OffsetOfExpr::OffsetOfNode::Base: { CXXBaseSpecifier *BaseSpec = ON.getBase(); @@ -4618,7 +4615,6 @@ bool IntExprEvaluator::VisitCastExpr(const CastExpr *E) { } llvm_unreachable("unknown cast resulting in integral value"); - return Error(E); } bool IntExprEvaluator::VisitUnaryReal(const UnaryOperator *E) { @@ -4881,8 +4877,6 @@ bool FloatExprEvaluator::VisitCastExpr(const CastExpr *E) { return true; } } - - return Error(E); } //===----------------------------------------------------------------------===// @@ -5092,7 +5086,6 @@ bool ComplexExprEvaluator::VisitCastExpr(const CastExpr *E) { } llvm_unreachable("unknown cast resulting in complex value"); - return Error(E); } bool ComplexExprEvaluator::VisitBinaryOperator(const BinaryOperator *E) { @@ -5928,8 +5921,7 @@ static ICEDiag CheckICE(const Expr* E, ASTContext &Ctx) { } } - // Silence a GCC warning - return ICEDiag(2, E->getLocStart()); + llvm_unreachable("Invalid StmtClass!"); } /// Evaluate an expression as a C++11 integral constant expression. diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index 7f2d5628a881..427be32a4607 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -1370,7 +1370,6 @@ void CXXNameMangler::mangleType(TemplateName TN) { case TemplateName::OverloadedTemplate: llvm_unreachable("can't mangle an overloaded template name as a "); - break; case TemplateName::DependentTemplate: { const DependentTemplateName *Dependent = TN.getAsDependentTemplateName(); @@ -1741,7 +1740,6 @@ void CXXNameMangler::mangleType(const BuiltinType *T) { #include "clang/AST/BuiltinTypes.def" case BuiltinType::Dependent: llvm_unreachable("mangling a placeholder type"); - break; case BuiltinType::ObjCId: Out << "11objc_object"; break; case BuiltinType::ObjCClass: Out << "10objc_class"; break; case BuiltinType::ObjCSel: Out << "13objc_selector"; break; @@ -2226,7 +2224,6 @@ recurse: case Expr::ParenListExprClass: case Expr::CXXScalarValueInitExprClass: llvm_unreachable("unexpected statement kind"); - break; // FIXME: invent manglings for all these. case Expr::BlockExprClass: diff --git a/clang/lib/AST/NestedNameSpecifier.cpp b/clang/lib/AST/NestedNameSpecifier.cpp index 858cf12dc66f..c59d40a8c2bf 100644 --- a/clang/lib/AST/NestedNameSpecifier.cpp +++ b/clang/lib/AST/NestedNameSpecifier.cpp @@ -130,7 +130,7 @@ NestedNameSpecifier::SpecifierKind NestedNameSpecifier::getKind() const { return TypeSpecWithTemplate; } - return Global; + llvm_unreachable("Invalid NNS Kind!"); } /// \brief Retrieve the namespace stored in this nested name @@ -170,8 +170,7 @@ bool NestedNameSpecifier::isDependent() const { return getAsType()->isDependentType(); } - // Necessary to suppress a GCC warning. - return false; + llvm_unreachable("Invalid NNS Kind!"); } /// \brief Whether this nested name specifier refers to a dependent @@ -191,9 +190,8 @@ bool NestedNameSpecifier::isInstantiationDependent() const { case TypeSpecWithTemplate: return getAsType()->isInstantiationDependentType(); } - - // Necessary to suppress a GCC warning. - return false; + + llvm_unreachable("Invalid NNS Kind!"); } bool NestedNameSpecifier::containsUnexpandedParameterPack() const { @@ -211,8 +209,7 @@ bool NestedNameSpecifier::containsUnexpandedParameterPack() const { return getAsType()->containsUnexpandedParameterPack(); } - // Necessary to suppress a GCC warning. - return false; + llvm_unreachable("Invalid NNS Kind!"); } /// \brief Print this nested name specifier to the given output @@ -382,8 +379,8 @@ SourceRange NestedNameSpecifierLoc::getLocalSourceRange() const { LoadSourceLocation(Data, Offset + sizeof(void*))); } } - - return SourceRange(); + + llvm_unreachable("Invalid NNS Kind!"); } TypeLoc NestedNameSpecifierLoc::getTypeLoc() const { diff --git a/clang/lib/AST/Stmt.cpp b/clang/lib/AST/Stmt.cpp index e7b87e4db679..8b2e35376bde 100644 --- a/clang/lib/AST/Stmt.cpp +++ b/clang/lib/AST/Stmt.cpp @@ -164,7 +164,6 @@ Stmt::child_range Stmt::children() { #include "clang/AST/StmtNodes.inc" } llvm_unreachable("unknown statement kind!"); - return child_range(); } SourceRange Stmt::getSourceRange() const { @@ -177,7 +176,6 @@ SourceRange Stmt::getSourceRange() const { #include "clang/AST/StmtNodes.inc" } llvm_unreachable("unknown statement kind!"); - return SourceRange(); } void CompoundStmt::setStmts(ASTContext &C, Stmt **Stmts, unsigned NumStmts) { diff --git a/clang/lib/AST/StmtProfile.cpp b/clang/lib/AST/StmtProfile.cpp index 5a6b771b9a8e..2fb67d93a663 100644 --- a/clang/lib/AST/StmtProfile.cpp +++ b/clang/lib/AST/StmtProfile.cpp @@ -503,7 +503,6 @@ static Stmt::StmtClass DecodeOperatorCall(const CXXOperatorCallExpr *S, case OO_Conditional: case NUM_OVERLOADED_OPERATORS: llvm_unreachable("Invalid operator call kind"); - return Stmt::ArraySubscriptExprClass; case OO_Plus: if (S->getNumArgs() == 1) { diff --git a/clang/lib/AST/TemplateBase.cpp b/clang/lib/AST/TemplateBase.cpp index 0c011a8ef090..57df8a4dceca 100644 --- a/clang/lib/AST/TemplateBase.cpp +++ b/clang/lib/AST/TemplateBase.cpp @@ -100,7 +100,7 @@ bool TemplateArgument::isDependent() const { return false; } - return false; + llvm_unreachable("Invalid TemplateArgument Kind!"); } bool TemplateArgument::isInstantiationDependent() const { @@ -137,8 +137,8 @@ bool TemplateArgument::isInstantiationDependent() const { return false; } - - return false; + + llvm_unreachable("Invalid TemplateArgument Kind!"); } bool TemplateArgument::isPackExpansion() const { @@ -159,8 +159,8 @@ bool TemplateArgument::isPackExpansion() const { case Expression: return isa(getAsExpr()); } - - return false; + + llvm_unreachable("Invalid TemplateArgument Kind!"); } bool TemplateArgument::containsUnexpandedParameterPack() const { @@ -278,8 +278,7 @@ bool TemplateArgument::structurallyEquals(const TemplateArgument &Other) const { return true; } - // Suppress warnings. - return false; + llvm_unreachable("Invalid TemplateArgument Kind!"); } TemplateArgument TemplateArgument::getPackExpansionPattern() const { @@ -302,8 +301,8 @@ TemplateArgument TemplateArgument::getPackExpansionPattern() const { case Template: return TemplateArgument(); } - - return TemplateArgument(); + + llvm_unreachable("Invalid TemplateArgument Kind!"); } void TemplateArgument::print(const PrintingPolicy &Policy, @@ -412,8 +411,7 @@ SourceRange TemplateArgumentLoc::getSourceRange() const { return SourceRange(); } - // Silence bonus gcc warning. - return SourceRange(); + llvm_unreachable("Invalid TemplateArgument Kind!"); } TemplateArgumentLoc @@ -474,8 +472,8 @@ TemplateArgumentLoc::getPackExpansionPattern(SourceLocation &Ellipsis, case TemplateArgument::Null: return TemplateArgumentLoc(); } - - return TemplateArgumentLoc(); + + llvm_unreachable("Invalid TemplateArgument Kind!"); } const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB, @@ -525,8 +523,8 @@ const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB, return DB << OS.str(); } } - - return DB; + + llvm_unreachable("Invalid TemplateArgument Kind!"); } const ASTTemplateArgumentListInfo * diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 7fd83b54e409..7b30c500c6e2 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -1364,7 +1364,6 @@ TypeWithKeyword::getTagTypeKindForTypeSpec(unsigned TypeSpec) { } llvm_unreachable("Type specifier is not a tag type kind."); - return TTK_Union; } ElaboratedTypeKeyword @@ -1419,7 +1418,6 @@ TypeWithKeyword::getKeywordName(ElaboratedTypeKeyword Keyword) { } llvm_unreachable("Unknown elaborated type keyword."); - return ""; } DependentTemplateSpecializationType::DependentTemplateSpecializationType( @@ -1479,7 +1477,6 @@ const char *Type::getTypeClassName() const { } llvm_unreachable("Invalid type class."); - return 0; } const char *BuiltinType::getName(const PrintingPolicy &Policy) const { @@ -1521,7 +1518,6 @@ const char *BuiltinType::getName(const PrintingPolicy &Policy) const { } llvm_unreachable("Invalid builtin type."); - return 0; } QualType QualType::getNonLValueExprType(ASTContext &Context) const { @@ -1544,7 +1540,6 @@ StringRef FunctionType::getNameForCallConv(CallingConv CC) { switch (CC) { case CC_Default: llvm_unreachable("no name for default cc"); - return ""; case CC_C: return "cdecl"; case CC_X86StdCall: return "stdcall"; @@ -1556,7 +1551,6 @@ StringRef FunctionType::getNameForCallConv(CallingConv CC) { } llvm_unreachable("Invalid calling convention."); - return ""; } FunctionProtoType::FunctionProtoType(QualType result, const QualType *args, diff --git a/clang/lib/AST/TypeLoc.cpp b/clang/lib/AST/TypeLoc.cpp index 97b0b501aa86..ed7faa9429ce 100644 --- a/clang/lib/AST/TypeLoc.cpp +++ b/clang/lib/AST/TypeLoc.cpp @@ -196,57 +196,54 @@ SourceRange TypeOfExprTypeLoc::getLocalSourceRange() const { TypeSpecifierType BuiltinTypeLoc::getWrittenTypeSpec() const { if (needsExtraLocalData()) return static_cast(getWrittenBuiltinSpecs().Type); - else { - switch (getTypePtr()->getKind()) { - case BuiltinType::Void: - return TST_void; - case BuiltinType::Bool: - return TST_bool; - case BuiltinType::Char_U: - case BuiltinType::Char_S: - return TST_char; - case BuiltinType::Char16: - return TST_char16; - case BuiltinType::Char32: - return TST_char32; - case BuiltinType::WChar_S: - case BuiltinType::WChar_U: - return TST_wchar; - - case BuiltinType::UChar: - case BuiltinType::UShort: - case BuiltinType::UInt: - case BuiltinType::ULong: - case BuiltinType::ULongLong: - case BuiltinType::UInt128: - case BuiltinType::SChar: - case BuiltinType::Short: - case BuiltinType::Int: - case BuiltinType::Long: - case BuiltinType::LongLong: - case BuiltinType::Int128: - case BuiltinType::Half: - case BuiltinType::Float: - case BuiltinType::Double: - case BuiltinType::LongDouble: - llvm_unreachable("Builtin type needs extra local data!"); - // Fall through, if the impossible happens. - - case BuiltinType::NullPtr: - case BuiltinType::Overload: - case BuiltinType::Dependent: - case BuiltinType::BoundMember: - case BuiltinType::UnknownAny: - case BuiltinType::ARCUnbridgedCast: - case BuiltinType::PseudoObject: - case BuiltinType::ObjCId: - case BuiltinType::ObjCClass: - case BuiltinType::ObjCSel: - return TST_unspecified; - } + switch (getTypePtr()->getKind()) { + case BuiltinType::Void: + return TST_void; + case BuiltinType::Bool: + return TST_bool; + case BuiltinType::Char_U: + case BuiltinType::Char_S: + return TST_char; + case BuiltinType::Char16: + return TST_char16; + case BuiltinType::Char32: + return TST_char32; + case BuiltinType::WChar_S: + case BuiltinType::WChar_U: + return TST_wchar; + case BuiltinType::UChar: + case BuiltinType::UShort: + case BuiltinType::UInt: + case BuiltinType::ULong: + case BuiltinType::ULongLong: + case BuiltinType::UInt128: + case BuiltinType::SChar: + case BuiltinType::Short: + case BuiltinType::Int: + case BuiltinType::Long: + case BuiltinType::LongLong: + case BuiltinType::Int128: + case BuiltinType::Half: + case BuiltinType::Float: + case BuiltinType::Double: + case BuiltinType::LongDouble: + llvm_unreachable("Builtin type needs extra local data!"); + // Fall through, if the impossible happens. + + case BuiltinType::NullPtr: + case BuiltinType::Overload: + case BuiltinType::Dependent: + case BuiltinType::BoundMember: + case BuiltinType::UnknownAny: + case BuiltinType::ARCUnbridgedCast: + case BuiltinType::PseudoObject: + case BuiltinType::ObjCId: + case BuiltinType::ObjCClass: + case BuiltinType::ObjCSel: + return TST_unspecified; } - - return TST_unspecified; + + llvm_unreachable("Invalid BuiltinType Kind!"); } TypeLoc TypeLoc::IgnoreParensImpl(TypeLoc TL) { diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp index 5dd42721d31d..b6d71108bd5d 100644 --- a/clang/lib/AST/TypePrinter.cpp +++ b/clang/lib/AST/TypePrinter.cpp @@ -934,7 +934,7 @@ void TypePrinter::printAttributed(const AttributedType *T, case AttributedType::attr_objc_ownership: S += "objc_ownership("; switch (T->getEquivalentType().getObjCLifetime()) { - case Qualifiers::OCL_None: llvm_unreachable("no ownership!"); break; + case Qualifiers::OCL_None: llvm_unreachable("no ownership!"); case Qualifiers::OCL_ExplicitNone: S += "none"; break; case Qualifiers::OCL_Strong: S += "strong"; break; case Qualifiers::OCL_Weak: S += "weak"; break; diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp index 4ccbf595a740..7b84710b5944 100644 --- a/clang/lib/Analysis/CFG.cpp +++ b/clang/lib/Analysis/CFG.cpp @@ -3090,7 +3090,6 @@ CFGImplicitDtor::getDestructorDecl(ASTContext &astContext) const { return 0; } llvm_unreachable("getKind() returned bogus value"); - return 0; } bool CFGImplicitDtor::isNoReturn(ASTContext &astContext) const { diff --git a/clang/lib/Analysis/CocoaConventions.cpp b/clang/lib/Analysis/CocoaConventions.cpp index 0c1531da148c..ee8a6efb3587 100644 --- a/clang/lib/Analysis/CocoaConventions.cpp +++ b/clang/lib/Analysis/CocoaConventions.cpp @@ -58,7 +58,6 @@ cocoa::NamingConvention cocoa::deriveNamingConvention(Selector S, return CreateRule; } llvm_unreachable("unexpected naming convention"); - return NoConvention; } bool cocoa::isRefType(QualType RetTy, StringRef Prefix, @@ -176,6 +175,4 @@ bool coreFoundation::followsCreateRule(const FunctionDecl *fn) { // If we matched a lowercase character, it isn't the end of the // word. Keep scanning. } - - return false; } diff --git a/clang/lib/Analysis/FormatString.cpp b/clang/lib/Analysis/FormatString.cpp index dcab03c3c090..207f77301b4b 100644 --- a/clang/lib/Analysis/FormatString.cpp +++ b/clang/lib/Analysis/FormatString.cpp @@ -340,9 +340,7 @@ bool ArgTypeResult::matchesType(ASTContext &C, QualType argTy) const { return argTy->getAs() != NULL; } - // FIXME: Should be unreachable, but Clang is currently emitting - // a warning. - return false; + llvm_unreachable("Invalid ArgTypeResult Kind!"); } QualType ArgTypeResult::getRepresentativeType(ASTContext &C) const { @@ -369,9 +367,7 @@ QualType ArgTypeResult::getRepresentativeType(ASTContext &C) const { } } - // FIXME: Should be unreachable, but Clang is currently emitting - // a warning. - return QualType(); + llvm_unreachable("Invalid ArgTypeResult Kind!"); } std::string ArgTypeResult::getRepresentativeTypeName(ASTContext &C) const { @@ -577,5 +573,5 @@ bool FormatSpecifier::hasValidLengthModifier() const { return false; } } - return false; + llvm_unreachable("Invalid LengthModifier Kind!"); } diff --git a/clang/lib/Analysis/ScanfFormatString.cpp b/clang/lib/Analysis/ScanfFormatString.cpp index d5a44cb8e0b7..38afd615c192 100644 --- a/clang/lib/Analysis/ScanfFormatString.cpp +++ b/clang/lib/Analysis/ScanfFormatString.cpp @@ -462,7 +462,7 @@ bool ScanfArgTypeResult::matchesType(ASTContext& C, QualType argTy) const { } } - return false; // Unreachable, but we still get a warning. + llvm_unreachable("Invalid ScanfArgTypeResult Kind!"); } QualType ScanfArgTypeResult::getRepresentativeType(ASTContext &C) const { @@ -479,7 +479,7 @@ QualType ScanfArgTypeResult::getRepresentativeType(ASTContext &C) const { return C.getPointerType(A.getRepresentativeType(C)); } - return QualType(); // Not reachable. + llvm_unreachable("Invalid ScanfArgTypeResult Kind!"); } std::string ScanfArgTypeResult::getRepresentativeTypeName(ASTContext& C) const { diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index c2abae8a6aee..a3e21dcab68c 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -4577,5 +4577,4 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID, return Builder.CreateCall(F, Ops, ""); } } - return 0; } diff --git a/clang/lib/CodeGen/CGCleanup.cpp b/clang/lib/CodeGen/CGCleanup.cpp index 308409dbb63f..f1f17afdb451 100644 --- a/clang/lib/CodeGen/CGCleanup.cpp +++ b/clang/lib/CodeGen/CGCleanup.cpp @@ -84,7 +84,6 @@ RValue DominatingValue::saved_type::restore(CodeGenFunction &CGF) { } llvm_unreachable("bad saved r-value kind"); - return RValue(); } /// Push an entry of the given size onto this protected-scope stack. diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index ba89d3756e89..3d0e8cc29b96 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -1565,8 +1565,6 @@ static QualType UnwrapTypeForDebugInfo(QualType T) { if (T == LastT) return T; } while (true); - - return T; } /// getType - Get the type from the cache or return null type if it doesn't exist. @@ -1677,7 +1675,6 @@ llvm::DIType CGDebugInfo::CreateTypeNode(QualType Ty, llvm::DIFile Unit) { case Type::UnaryTransform: case Type::Auto: llvm_unreachable("type should have been unwrapped!"); - return llvm::DIType(); } assert(Diag && "Fall through without a diagnostic?"); diff --git a/clang/lib/CodeGen/CGException.cpp b/clang/lib/CodeGen/CGException.cpp index 7600c48bdbcc..e1eefc0bc3b2 100644 --- a/clang/lib/CodeGen/CGException.cpp +++ b/clang/lib/CodeGen/CGException.cpp @@ -636,8 +636,7 @@ static bool isNonEHScope(const EHScope &S) { return false; } - // Suppress warning. - return false; + llvm_unreachable("Invalid EHScope Kind!"); } llvm::BasicBlock *CodeGenFunction::getInvokeDestImpl() { diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index 43ab116dae74..97a2f0546668 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -1427,10 +1427,6 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) { return EmitFunctionDeclLValue(*this, E, fn); llvm_unreachable("Unhandled DeclRefExpr"); - - // an invalid LValue, but the assert will - // ensure that this point is never reached. - return LValue(); } LValue CodeGenFunction::EmitBlockDeclRefLValue(const BlockDeclRefExpr *E) { diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index fbcdcc0d3d75..780ff26f2386 100644 --- a/clang/lib/CodeGen/CGExprAgg.cpp +++ b/clang/lib/CodeGen/CGExprAgg.cpp @@ -349,7 +349,6 @@ void AggExprEmitter::VisitCastExpr(CastExpr *E) { case CK_LValueBitCast: llvm_unreachable("should not be emitting lvalue bitcast as rvalue"); - break; case CK_Dependent: case CK_BitCast: diff --git a/clang/lib/CodeGen/CGExprComplex.cpp b/clang/lib/CodeGen/CGExprComplex.cpp index b4b1b1d5f94a..53f7d65ef1b2 100644 --- a/clang/lib/CodeGen/CGExprComplex.cpp +++ b/clang/lib/CodeGen/CGExprComplex.cpp @@ -817,7 +817,6 @@ EmitComplexCompoundAssignmentLValue(const CompoundAssignOperator *E) { default: llvm_unreachable("unexpected complex compound assignment"); - Op = 0; } ComplexPairTy Val; // ignored diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp index faa90872e7e4..e1342d3ce5d4 100644 --- a/clang/lib/CodeGen/CGExprScalar.cpp +++ b/clang/lib/CodeGen/CGExprScalar.cpp @@ -1167,7 +1167,6 @@ Value *ScalarExprEmitter::VisitCastExpr(CastExpr *CE) { case CK_ConstructorConversion: case CK_ToUnion: llvm_unreachable("scalar cast to non-scalar value"); - break; case CK_LValueToRValue: assert(CGF.getContext().hasSameUnqualifiedType(E->getType(), DestTy)); @@ -1247,7 +1246,6 @@ Value *ScalarExprEmitter::VisitCastExpr(CastExpr *CE) { } llvm_unreachable("unknown scalar cast"); - return 0; } Value *ScalarExprEmitter::VisitStmtExpr(const StmtExpr *E) { @@ -1272,10 +1270,8 @@ EmitAddConsiderOverflowBehavior(const UnaryOperator *E, switch (CGF.getContext().getLangOptions().getSignedOverflowBehavior()) { case LangOptions::SOB_Undefined: return Builder.CreateNSWAdd(InVal, NextVal, IsInc ? "inc" : "dec"); - break; case LangOptions::SOB_Defined: return Builder.CreateAdd(InVal, NextVal, IsInc ? "inc" : "dec"); - break; case LangOptions::SOB_Trapping: BinOpInfo BinOp; BinOp.LHS = InVal; @@ -1875,7 +1871,6 @@ Value *ScalarExprEmitter::EmitOverflowCheckedBinOp(const BinOpInfo &Ops) { break; default: llvm_unreachable("Unsupported operation for overflow detection"); - IID = 0; } OpID <<= 1; OpID |= 1; @@ -2175,36 +2170,28 @@ static llvm::Intrinsic::ID GetIntrinsic(IntrinsicType IT, case BuiltinType::UChar: return (IT == VCMPEQ) ? llvm::Intrinsic::ppc_altivec_vcmpequb_p : llvm::Intrinsic::ppc_altivec_vcmpgtub_p; - break; case BuiltinType::Char_S: case BuiltinType::SChar: return (IT == VCMPEQ) ? llvm::Intrinsic::ppc_altivec_vcmpequb_p : llvm::Intrinsic::ppc_altivec_vcmpgtsb_p; - break; case BuiltinType::UShort: return (IT == VCMPEQ) ? llvm::Intrinsic::ppc_altivec_vcmpequh_p : llvm::Intrinsic::ppc_altivec_vcmpgtuh_p; - break; case BuiltinType::Short: return (IT == VCMPEQ) ? llvm::Intrinsic::ppc_altivec_vcmpequh_p : llvm::Intrinsic::ppc_altivec_vcmpgtsh_p; - break; case BuiltinType::UInt: case BuiltinType::ULong: return (IT == VCMPEQ) ? llvm::Intrinsic::ppc_altivec_vcmpequw_p : llvm::Intrinsic::ppc_altivec_vcmpgtuw_p; - break; case BuiltinType::Int: case BuiltinType::Long: return (IT == VCMPEQ) ? llvm::Intrinsic::ppc_altivec_vcmpequw_p : llvm::Intrinsic::ppc_altivec_vcmpgtsw_p; - break; case BuiltinType::Float: return (IT == VCMPEQ) ? llvm::Intrinsic::ppc_altivec_vcmpeqfp_p : llvm::Intrinsic::ppc_altivec_vcmpgtfp_p; - break; } - return llvm::Intrinsic::not_intrinsic; } Value *ScalarExprEmitter::EmitCompare(const BinaryOperator *E,unsigned UICmpOpc, diff --git a/clang/lib/CodeGen/CGObjC.cpp b/clang/lib/CodeGen/CGObjC.cpp index 6bf32a50f420..581d463b8734 100644 --- a/clang/lib/CodeGen/CGObjC.cpp +++ b/clang/lib/CodeGen/CGObjC.cpp @@ -2086,7 +2086,6 @@ static TryEmitResult tryEmitARCRetainLoadOfScalar(CodeGenFunction &CGF, } llvm_unreachable("impossible lifetime!"); - return TryEmitResult(); } static TryEmitResult tryEmitARCRetainLoadOfScalar(CodeGenFunction &CGF, diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index 159e927508a4..ecf6181b1cec 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -1516,7 +1516,6 @@ llvm::Constant *CGObjCMac::GetEHType(QualType T) { return CGM.GetAddrOfRTTIDescriptor(T, /*ForEH=*/true); llvm_unreachable("asking for catch type for ObjC type in fragile runtime"); - return 0; } /// Generate a constant CFString object. diff --git a/clang/lib/CodeGen/CGRTTI.cpp b/clang/lib/CodeGen/CGRTTI.cpp index d9790d0b9e75..120e711e8407 100644 --- a/clang/lib/CodeGen/CGRTTI.cpp +++ b/clang/lib/CodeGen/CGRTTI.cpp @@ -207,9 +207,8 @@ static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) { case BuiltinType::ObjCSel: llvm_unreachable("FIXME: Objective-C types are unsupported!"); } - - // Silent gcc. - return false; + + llvm_unreachable("Invalid BuiltinType Kind!"); } static bool TypeInfoIsInStandardLibrary(const PointerType *PointerTy) { @@ -345,7 +344,7 @@ getTypeInfoLinkage(CodeGenModule &CGM, QualType Ty) { return llvm::GlobalValue::LinkOnceODRLinkage; } - return llvm::GlobalValue::LinkOnceODRLinkage; + llvm_unreachable("Invalid linkage!"); } // CanUseSingleInheritance - Return whether the given record decl has a "single, diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index e7c0b4c066ff..c54b904abcb0 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -57,7 +57,6 @@ static CGCXXABI &createCXXABI(CodeGenModule &CGM) { } llvm_unreachable("invalid C++ ABI kind"); - return *CreateItaniumCXXABI(CGM); } @@ -1340,9 +1339,8 @@ CodeGenModule::getVTableLinkage(const CXXRecordDecl *RD) { case TSK_ExplicitInstantiationDefinition: return llvm::GlobalVariable::WeakODRLinkage; } - - // Silence GCC warning. - return llvm::GlobalVariable::LinkOnceODRLinkage; + + llvm_unreachable("Invalid TemplateSpecializationKind!"); } CharUnits CodeGenModule::GetTargetTypeStoreSize(llvm::Type *Ty) const { diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h index d94d10afc159..ca096c1019f8 100644 --- a/clang/lib/CodeGen/CodeGenModule.h +++ b/clang/lib/CodeGen/CodeGenModule.h @@ -469,7 +469,6 @@ public: case ProtectedVisibility: return llvm::GlobalValue::ProtectedVisibility; } llvm_unreachable("unknown visibility!"); - return llvm::GlobalValue::DefaultVisibility; } llvm::Constant *GetAddrOfGlobal(GlobalDecl GD) { diff --git a/clang/lib/CodeGen/CodeGenTypes.cpp b/clang/lib/CodeGen/CodeGenTypes.cpp index 578695009bba..b5546e2f18e5 100644 --- a/clang/lib/CodeGen/CodeGenTypes.cpp +++ b/clang/lib/CodeGen/CodeGenTypes.cpp @@ -305,7 +305,6 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) { #define NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) case Type::Class: #include "clang/AST/TypeNodes.def" llvm_unreachable("Non-canonical or dependent types aren't possible."); - break; case Type::Builtin: { switch (cast(Ty)->getKind()) { @@ -374,7 +373,6 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) { case BuiltinType::Id: #include "clang/AST/BuiltinTypes.def" llvm_unreachable("Unexpected placeholder builtin type!"); - break; } break; } diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index e9f88b7aaf16..88bf8fe12292 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -2847,7 +2847,6 @@ void PTXABIInfo::computeInfo(CGFunctionInfo &FI) const { llvm::Value *PTXABIInfo::EmitVAArg(llvm::Value *VAListAddr, QualType Ty, CodeGenFunction &CFG) const { llvm_unreachable("PTX does not support varargs"); - return 0; } void PTXTargetCodeGenInfo::SetTargetAttributes(const Decl *D, diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index a64b8cf88302..671cfc5a05f7 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -395,7 +395,6 @@ static const char *getInputKindName(InputKind Kind) { } llvm_unreachable("Unexpected language kind!"); - return 0; } static const char *getActionName(frontend::ActionKind Kind) { @@ -433,7 +432,6 @@ static const char *getActionName(frontend::ActionKind Kind) { } llvm_unreachable("Unexpected language kind!"); - return 0; } static void FileSystemOptsToArgs(const FileSystemOptions &Opts, diff --git a/clang/lib/Index/ASTLocation.cpp b/clang/lib/Index/ASTLocation.cpp index a8537b1a1a05..2d5dc88f8466 100644 --- a/clang/lib/Index/ASTLocation.cpp +++ b/clang/lib/Index/ASTLocation.cpp @@ -50,8 +50,8 @@ Decl *ASTLocation::getReferencedDecl() { case N_Stmt: return getDeclFromExpr(Stm); } - - return 0; + + llvm_unreachable("Invalid ASTLocation Kind!"); } SourceRange ASTLocation::getSourceRange() const { @@ -68,8 +68,8 @@ SourceRange ASTLocation::getSourceRange() const { case N_Type: return AsTypeLoc().getLocalSourceRange(); } - - return SourceRange(); + + llvm_unreachable("Invalid ASTLocation Kind!"); } void ASTLocation::print(raw_ostream &OS) const { diff --git a/clang/lib/Parse/ParseExprCXX.cpp b/clang/lib/Parse/ParseExprCXX.cpp index 4bd4c6f7eb21..8046f6b88c7a 100644 --- a/clang/lib/Parse/ParseExprCXX.cpp +++ b/clang/lib/Parse/ParseExprCXX.cpp @@ -2464,7 +2464,7 @@ ExprResult Parser::ParseArrayTypeTrait() { T.getCloseLocation()); } } - return ExprError(); + llvm_unreachable("Invalid ArrayTypeTrait!"); } /// ParseExpressionTrait - Parse built-in expression-trait diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 9693c18979e4..fc16b9bbaf54 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -2673,8 +2673,8 @@ struct BaseAndFieldInfo { case IIK_Default: return false; } - - return false; + + llvm_unreachable("Invalid ImplicitInitializerKind!"); } }; } diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp index 445909817909..dd50cd2a5a25 100644 --- a/clang/lib/Sema/SemaLookup.cpp +++ b/clang/lib/Sema/SemaLookup.cpp @@ -1732,7 +1732,6 @@ bool Sema::DiagnoseAmbiguousLookup(LookupResult &Result) { } llvm_unreachable("unknown ambiguity kind"); - return true; } namespace { diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp index 137556fa214f..0d74f24f4d75 100644 --- a/clang/lib/Sema/SemaTemplateDeduction.cpp +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp @@ -278,7 +278,7 @@ checkDeducedTemplateArguments(ASTContext &Context, return X; } - return DeducedTemplateArgument(); + llvm_unreachable("Invalid TemplateArgument Kind!"); } /// \brief Deduce the value of the given non-type template parameter @@ -1529,7 +1529,7 @@ DeduceTemplateArgumentsByTypeMatch(Sema &S, return Sema::TDK_Success; } - return Sema::TDK_Success; + llvm_unreachable("Invalid Type Class!"); } static Sema::TemplateDeductionResult @@ -1570,7 +1570,6 @@ DeduceTemplateArguments(Sema &S, case TemplateArgument::TemplateExpansion: llvm_unreachable("caller should handle pack expansions"); - break; case TemplateArgument::Declaration: if (Arg.getKind() == TemplateArgument::Declaration && @@ -1630,7 +1629,7 @@ DeduceTemplateArguments(Sema &S, llvm_unreachable("Argument packs should be expanded by the caller!"); } - return Sema::TDK_Success; + llvm_unreachable("Invalid TemplateArgument Kind!"); } /// \brief Determine whether there is a template argument to be used for @@ -1880,7 +1879,7 @@ static bool isSameTemplateArg(ASTContext &Context, return true; } - return false; + llvm_unreachable("Invalid TemplateArgument Kind!"); } /// \brief Allocate a TemplateArgumentLoc where all locations have @@ -1905,7 +1904,6 @@ getTrivialTemplateArgumentLoc(Sema &S, switch (Arg.getKind()) { case TemplateArgument::Null: llvm_unreachable("Can't get a NULL template argument here"); - break; case TemplateArgument::Type: return TemplateArgumentLoc(Arg, @@ -1950,7 +1948,7 @@ getTrivialTemplateArgumentLoc(Sema &S, return TemplateArgumentLoc(Arg, TemplateArgumentLocInfo()); } - return TemplateArgumentLoc(); + llvm_unreachable("Invalid TemplateArgument Kind!"); } diff --git a/clang/lib/Sema/SemaTemplateVariadic.cpp b/clang/lib/Sema/SemaTemplateVariadic.cpp index 44242f1c137c..3dc60f8c7ae9 100644 --- a/clang/lib/Sema/SemaTemplateVariadic.cpp +++ b/clang/lib/Sema/SemaTemplateVariadic.cpp @@ -388,7 +388,6 @@ Sema::ActOnPackExpansion(const ParsedTemplateArgument &Arg, return Arg.getTemplatePackExpansion(EllipsisLoc); } llvm_unreachable("Unhandled template argument kind?"); - return ParsedTemplateArgument(); } TypeResult Sema::ActOnPackExpansion(ParsedType Type, @@ -632,7 +631,6 @@ unsigned Sema::getNumArgumentsInExpansion(QualType T, } llvm_unreachable("No unexpanded parameter packs in type expansion."); - return 0; } bool Sema::containsUnexpandedParameterPacks(Declarator &D) { @@ -695,7 +693,6 @@ bool Sema::containsUnexpandedParameterPacks(Declarator &D) { // declarator-id (conceptually), so the parser should not invoke this // routine at this time. llvm_unreachable("Could not have seen this kind of declarator chunk"); - break; case DeclaratorChunk::MemberPointer: if (Chunk.Mem.Scope().getScopeRep() && diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index 006cf973d87c..e1bd81395525 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -1794,10 +1794,8 @@ static QualType GetDeclSpecTypeForDeclarator(TypeProcessingState &state, switch (D.getContext()) { case Declarator::KNRTypeListContext: llvm_unreachable("K&R type lists aren't allowed in C++"); - break; case Declarator::LambdaExprContext: llvm_unreachable("Can't specify a type specifier in lambda grammar"); - break; case Declarator::ObjCParameterContext: case Declarator::ObjCResultContext: case Declarator::PrototypeContext: @@ -2327,7 +2325,6 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, case NestedNameSpecifier::NamespaceAlias: case NestedNameSpecifier::Global: llvm_unreachable("Nested-name-specifier must name a type"); - break; case NestedNameSpecifier::TypeSpec: case NestedNameSpecifier::TypeSpecWithTemplate: @@ -2659,7 +2656,7 @@ static void transferARCOwnershipToDeclaratorChunk(TypeProcessingState &state, const char *attrStr = 0; switch (ownership) { - case Qualifiers::OCL_None: llvm_unreachable("no ownership!"); break; + case Qualifiers::OCL_None: llvm_unreachable("no ownership!"); case Qualifiers::OCL_ExplicitNone: attrStr = "none"; break; case Qualifiers::OCL_Strong: attrStr = "strong"; break; case Qualifiers::OCL_Weak: attrStr = "weak"; break; @@ -2780,7 +2777,6 @@ static AttributeList::Kind getAttrListKind(AttributedType::Kind kind) { return AttributeList::AT_pcs; } llvm_unreachable("unexpected attribute kind!"); - return AttributeList::Kind(); } static void fillAttributedTypeLoc(AttributedTypeLoc TL, @@ -3055,7 +3051,6 @@ namespace { case NestedNameSpecifier::NamespaceAlias: case NestedNameSpecifier::Global: llvm_unreachable("Nested-name-specifier must name a type"); - break; } // Finally fill in MemberPointerLocInfo fields. @@ -3572,7 +3567,6 @@ namespace { } llvm_unreachable("unknown wrapping kind"); - return QualType(); } }; } diff --git a/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp index c3cd3b05c5a2..4ddb7d3a1ee9 100644 --- a/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp @@ -225,14 +225,11 @@ GenericTaintChecker::TaintPropagationRule::getTaintPropagationRule( case Builtin::BIstrncpy: case Builtin::BIstrncat: return TaintPropagationRule(1, 2, 0, true); - break; case Builtin::BIstrlcpy: case Builtin::BIstrlcat: return TaintPropagationRule(1, 2, 0, false); - break; case Builtin::BIstrndup: return TaintPropagationRule(0, 1, ReturnValueIndex); - break; default: break; diff --git a/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp index a3bbd2585919..f7ef5314e8d4 100644 --- a/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp @@ -135,7 +135,6 @@ void PthreadLockChecker::AcquireLock(CheckerContext &C, const CallExpr *CE, break; default: llvm_unreachable("Unknown tryLock locking semantics"); - break; } assert(lockFail && lockSucc); C.addTransition(lockFail); diff --git a/clang/lib/StaticAnalyzer/Core/CheckerContext.cpp b/clang/lib/StaticAnalyzer/Core/CheckerContext.cpp index 6aaa37732591..47b7c48d452f 100644 --- a/clang/lib/StaticAnalyzer/Core/CheckerContext.cpp +++ b/clang/lib/StaticAnalyzer/Core/CheckerContext.cpp @@ -56,13 +56,10 @@ bool CheckerContext::isCLibraryFunction(const FunctionDecl *FD, } StringRef CheckerContext::getMacroNameOrSpelling(SourceLocation &Loc) { - if (!Loc.isMacroID()) { - SmallVector buf; - return Lexer::getSpelling(Loc, buf, getSourceManager(), getLangOptions()); - } else { + if (Loc.isMacroID()) return Lexer::getImmediateMacroName(Loc, getSourceManager(), getLangOptions()); - } - return StringRef(); + SmallVector buf; + return Lexer::getSpelling(Loc, buf, getSourceManager(), getLangOptions()); } diff --git a/clang/lib/StaticAnalyzer/Core/Environment.cpp b/clang/lib/StaticAnalyzer/Core/Environment.cpp index 691530bdcb21..7d1134470783 100644 --- a/clang/lib/StaticAnalyzer/Core/Environment.cpp +++ b/clang/lib/StaticAnalyzer/Core/Environment.cpp @@ -59,7 +59,6 @@ SVal Environment::getSVal(const EnvironmentEntry &Entry, case Stmt::GenericSelectionExprClass: llvm_unreachable("ParenExprs and GenericSelectionExprs should " "have been handled by IgnoreParens()"); - return UnknownVal(); case Stmt::CharacterLiteralClass: { const CharacterLiteral* C = cast(E); return svalBuilder.makeIntVal(C->getValue(), C->getType()); diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp index a48d69abc11b..4ccc26c1b03e 100644 --- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -211,8 +211,6 @@ void ExprEngine::processCFGElement(const CFGElement E, ExplodedNode *Pred, ProcessImplicitDtor(*E.getAs(), Pred); return; } - currentStmtIdx = 0; - currentBuilderContext = 0; } static bool shouldRemoveDeadBindings(AnalysisManager &AMgr, @@ -529,7 +527,6 @@ void ExprEngine::Visit(const Stmt *S, ExplodedNode *Pred, case Stmt::WhileStmtClass: case Expr::MSDependentExistsStmtClass: llvm_unreachable("Stmt should not be in analyzer evaluation loop"); - break; case Stmt::GNUNullExprClass: { // GNU __null is a pointer-width integer, not an actual pointer. diff --git a/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp b/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp index 6fa7bb1ec527..fc573814f63e 100644 --- a/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp +++ b/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp @@ -231,16 +231,12 @@ static llvm::APSInt computeAdjustment(const SymExpr *LHS, switch (SE->getOpcode()) { case BO_Add: return SE->getRHS(); - break; case BO_Sub: return -SE->getRHS(); - break; default: // We cannot simplify non-additive operators. return DefaultAdjustment; } - - return DefaultAdjustment; } const ProgramState *SimpleConstraintManager::assumeSymRel(const ProgramState *state, diff --git a/clang/tools/libclang/CIndexCodeCompletion.cpp b/clang/tools/libclang/CIndexCodeCompletion.cpp index d8ac4cf3e6c5..cfc484e67501 100644 --- a/clang/tools/libclang/CIndexCodeCompletion.cpp +++ b/clang/tools/libclang/CIndexCodeCompletion.cpp @@ -141,8 +141,7 @@ CXString clang_getCompletionChunkText(CXCompletionString completion_string, return createCXString(""); } - // Should be unreachable, but let's be careful. - return createCXString((const char*)0); + llvm_unreachable("Invalid CodeCompletionString Kind!"); }