Switch assert(0/false) llvm_unreachable.

llvm-svn: 140367
This commit is contained in:
David Blaikie 2011-09-23 05:06:16 +00:00
parent 42fe6bd5f2
commit 83d382b1ca
117 changed files with 342 additions and 336 deletions

View File

@ -66,11 +66,11 @@ protected:
virtual ~Attr(); virtual ~Attr();
void* operator new(size_t bytes) throw() { void* operator new(size_t bytes) throw() {
assert(0 && "Attrs cannot be allocated with regular 'new'."); llvm_unreachable("Attrs cannot be allocated with regular 'new'.");
return 0; return 0;
} }
void operator delete(void* data) throw() { void operator delete(void* data) throw() {
assert(0 && "Attrs cannot be released with regular 'delete'."); llvm_unreachable("Attrs cannot be released with regular 'delete'.");
} }
public: public:

View File

@ -908,7 +908,7 @@ protected:
// FIXME: This should probably never be called, but it's here as // FIXME: This should probably never be called, but it's here as
TemplateParmPosition() TemplateParmPosition()
: Depth(0), Position(0) : Depth(0), Position(0)
{ /* assert(0 && "Cannot create positionless template parameter"); */ } { /* llvm_unreachable("Cannot create positionless template parameter"); */ }
TemplateParmPosition(unsigned D, unsigned P) TemplateParmPosition(unsigned D, unsigned P)
: Depth(D), Position(P) : Depth(D), Position(P)

View File

@ -30,7 +30,7 @@ class DeclVisitor {
public: public:
RetTy Visit(Decl *D) { RetTy Visit(Decl *D) {
switch (D->getKind()) { switch (D->getKind()) {
default: assert(false && "Decl that isn't part of DeclNodes.inc!"); default: llvm_unreachable("Decl that isn't part of DeclNodes.inc!");
#define DECL(DERIVED, BASE) \ #define DECL(DERIVED, BASE) \
case Decl::DERIVED: DISPATCH(DERIVED##Decl, DERIVED##Decl); case Decl::DERIVED: DISPATCH(DERIVED##Decl, DERIVED##Decl);
#define ABSTRACT_DECL(DECL) #define ABSTRACT_DECL(DECL)

View File

@ -135,7 +135,7 @@ public:
// This is pretty lame. // This is pretty lame.
virtual void mangleItaniumGuardVariable(const VarDecl *D, virtual void mangleItaniumGuardVariable(const VarDecl *D,
raw_ostream &) { raw_ostream &) {
assert(0 && "Target does not support mangling guard variables"); llvm_unreachable("Target does not support mangling guard variables");
} }
/// @} /// @}
}; };

View File

@ -1322,7 +1322,7 @@ bool RecursiveASTVisitor<Derived>::TraverseFunctionInstantiations(
case TSK_ExplicitSpecialization: case TSK_ExplicitSpecialization:
break; break;
default: default:
assert(false && "Unknown specialization kind."); llvm_unreachable("Unknown specialization kind.");
} }
} }

View File

@ -107,11 +107,11 @@ public:
// Make vanilla 'new' and 'delete' illegal for Stmts. // Make vanilla 'new' and 'delete' illegal for Stmts.
protected: protected:
void* operator new(size_t bytes) throw() { void* operator new(size_t bytes) throw() {
assert(0 && "Stmts cannot be allocated with regular 'new'."); llvm_unreachable("Stmts cannot be allocated with regular 'new'.");
return 0; return 0;
} }
void operator delete(void* data) throw() { void operator delete(void* data) throw() {
assert(0 && "Stmts cannot be released with regular 'delete'."); llvm_unreachable("Stmts cannot be released with regular 'delete'.");
} }
class StmtBitfields { class StmtBitfields {

View File

@ -42,7 +42,7 @@ public:
// below. // below.
if (PTR(BinaryOperator) BinOp = dyn_cast<BinaryOperator>(S)) { if (PTR(BinaryOperator) BinOp = dyn_cast<BinaryOperator>(S)) {
switch (BinOp->getOpcode()) { switch (BinOp->getOpcode()) {
default: assert(0 && "Unknown binary operator!"); default: llvm_unreachable("Unknown binary operator!");
case BO_PtrMemD: DISPATCH(BinPtrMemD, BinaryOperator); case BO_PtrMemD: DISPATCH(BinPtrMemD, BinaryOperator);
case BO_PtrMemI: DISPATCH(BinPtrMemI, BinaryOperator); case BO_PtrMemI: DISPATCH(BinPtrMemI, BinaryOperator);
case BO_Mul: DISPATCH(BinMul, BinaryOperator); case BO_Mul: DISPATCH(BinMul, BinaryOperator);
@ -80,7 +80,7 @@ public:
} }
} else if (PTR(UnaryOperator) UnOp = dyn_cast<UnaryOperator>(S)) { } else if (PTR(UnaryOperator) UnOp = dyn_cast<UnaryOperator>(S)) {
switch (UnOp->getOpcode()) { switch (UnOp->getOpcode()) {
default: assert(0 && "Unknown unary operator!"); default: llvm_unreachable("Unknown unary operator!");
case UO_PostInc: DISPATCH(UnaryPostInc, UnaryOperator); case UO_PostInc: DISPATCH(UnaryPostInc, UnaryOperator);
case UO_PostDec: DISPATCH(UnaryPostDec, UnaryOperator); case UO_PostDec: DISPATCH(UnaryPostDec, UnaryOperator);
case UO_PreInc: DISPATCH(UnaryPreInc, UnaryOperator); case UO_PreInc: DISPATCH(UnaryPreInc, UnaryOperator);
@ -99,7 +99,7 @@ public:
// Top switch stmt: dispatch to VisitFooStmt for each FooStmt. // Top switch stmt: dispatch to VisitFooStmt for each FooStmt.
switch (S->getStmtClass()) { switch (S->getStmtClass()) {
default: assert(0 && "Unknown stmt kind!"); default: llvm_unreachable("Unknown stmt kind!");
#define ABSTRACT_STMT(STMT) #define ABSTRACT_STMT(STMT)
#define STMT(CLASS, PARENT) \ #define STMT(CLASS, PARENT) \
case Stmt::CLASS ## Class: DISPATCH(CLASS, CLASS); case Stmt::CLASS ## Class: DISPATCH(CLASS, CLASS);

View File

@ -2252,7 +2252,7 @@ public:
friend class StmtIteratorBase; friend class StmtIteratorBase;
void Profile(llvm::FoldingSetNodeID &ID) { void Profile(llvm::FoldingSetNodeID &ID) {
assert(0 && "Cannot unique VariableArrayTypes."); llvm_unreachable("Cannot unique VariableArrayTypes.");
} }
}; };

View File

@ -28,7 +28,7 @@ public:
RetTy Visit(const Type *T) { RetTy Visit(const Type *T) {
// Top switch stmt: dispatch to VisitFooType for each FooType. // Top switch stmt: dispatch to VisitFooType for each FooType.
switch (T->getTypeClass()) { switch (T->getTypeClass()) {
default: assert(0 && "Unknown type class!"); default: llvm_unreachable("Unknown type class!");
#define ABSTRACT_TYPE(CLASS, PARENT) #define ABSTRACT_TYPE(CLASS, PARENT)
#define TYPE(CLASS, PARENT) case Type::CLASS: DISPATCH(CLASS##Type); #define TYPE(CLASS, PARENT) case Type::CLASS: DISPATCH(CLASS##Type);
#include "clang/AST/TypeNodes.def" #include "clang/AST/TypeNodes.def"

View File

@ -69,7 +69,7 @@ public:
DISPATCH_CASE(UsingDirective) DISPATCH_CASE(UsingDirective)
DISPATCH_CASE(Using) DISPATCH_CASE(Using)
default: default:
assert(false && "Subtype of ScopedDecl not handled."); llvm_unreachable("Subtype of ScopedDecl not handled.");
} }
} }

View File

@ -45,7 +45,7 @@ break;
CONDVAR_CASE(WhileStmt) CONDVAR_CASE(WhileStmt)
#undef CONDVAR_CASE #undef CONDVAR_CASE
default: default:
assert(false && "Infeasible"); llvm_unreachable("Infeasible");
} }
static_cast<ImplClass*>(this)->Visit(CondVar->getInit()); static_cast<ImplClass*>(this)->Visit(CondVar->getInit());
} }

View File

@ -1226,7 +1226,7 @@ struct DeclaratorChunk {
void destroy() { void destroy() {
switch (Kind) { switch (Kind) {
default: assert(0 && "Unknown decl type!"); default: llvm_unreachable("Unknown decl type!");
case DeclaratorChunk::Function: return Fun.destroy(); case DeclaratorChunk::Function: return Fun.destroy();
case DeclaratorChunk::Pointer: return Ptr.destroy(); case DeclaratorChunk::Pointer: return Ptr.destroy();
case DeclaratorChunk::BlockPointer: return Cls.destroy(); case DeclaratorChunk::BlockPointer: return Cls.destroy();

View File

@ -93,7 +93,7 @@ static double GetApproxValue(const llvm::APFloat &F) {
void APValue::print(raw_ostream &OS) const { void APValue::print(raw_ostream &OS) const {
switch (getKind()) { switch (getKind()) {
default: assert(0 && "Unknown APValue kind!"); default: llvm_unreachable("Unknown APValue kind!");
case Uninitialized: case Uninitialized:
OS << "Uninitialized"; OS << "Uninitialized";
return; return;
@ -123,7 +123,7 @@ void APValue::print(raw_ostream &OS) const {
static void WriteShortAPValueToStream(raw_ostream& Out, static void WriteShortAPValueToStream(raw_ostream& Out,
const APValue& V) { const APValue& V) {
switch (V.getKind()) { switch (V.getKind()) {
default: assert(0 && "Unknown APValue kind!"); default: llvm_unreachable("Unknown APValue kind!");
case APValue::Uninitialized: case APValue::Uninitialized:
Out << "Uninitialized"; Out << "Uninitialized";
break; break;

View File

@ -682,7 +682,7 @@ const llvm::fltSemantics &ASTContext::getFloatTypeSemantics(QualType T) const {
const BuiltinType *BT = T->getAs<BuiltinType>(); const BuiltinType *BT = T->getAs<BuiltinType>();
assert(BT && "Not a floating point type!"); assert(BT && "Not a floating point type!");
switch (BT->getKind()) { switch (BT->getKind()) {
default: assert(0 && "Not a floating point type!"); default: llvm_unreachable("Not a floating point type!");
case BuiltinType::Float: return Target->getFloatFormat(); case BuiltinType::Float: return Target->getFloatFormat();
case BuiltinType::Double: return Target->getDoubleFormat(); case BuiltinType::Double: return Target->getDoubleFormat();
case BuiltinType::LongDouble: return Target->getLongDoubleFormat(); case BuiltinType::LongDouble: return Target->getLongDoubleFormat();
@ -849,7 +849,7 @@ ASTContext::getTypeInfo(const Type *T) const {
case Type::Builtin: case Type::Builtin:
switch (cast<BuiltinType>(T)->getKind()) { switch (cast<BuiltinType>(T)->getKind()) {
default: assert(0 && "Unknown builtin type!"); default: llvm_unreachable("Unknown builtin type!");
case BuiltinType::Void: case BuiltinType::Void:
// GCC extension: alignof(void) = 8 bits. // GCC extension: alignof(void) = 8 bits.
Width = 0; Width = 0;
@ -3218,7 +3218,7 @@ ASTContext::getCanonicalTemplateArgument(const TemplateArgument &Arg) const {
} }
// Silence GCC warning // Silence GCC warning
assert(false && "Unhandled template argument kind"); llvm_unreachable("Unhandled template argument kind");
return TemplateArgument(); return TemplateArgument();
} }
@ -3432,7 +3432,7 @@ static FloatingRank getFloatingRank(QualType T) {
assert(T->getAs<BuiltinType>() && "getFloatingRank(): not a floating type"); assert(T->getAs<BuiltinType>() && "getFloatingRank(): not a floating type");
switch (T->getAs<BuiltinType>()->getKind()) { switch (T->getAs<BuiltinType>()->getKind()) {
default: assert(0 && "getFloatingRank(): not a floating type"); default: llvm_unreachable("getFloatingRank(): not a floating type");
case BuiltinType::Float: return FloatRank; case BuiltinType::Float: return FloatRank;
case BuiltinType::Double: return DoubleRank; case BuiltinType::Double: return DoubleRank;
case BuiltinType::LongDouble: return LongDoubleRank; case BuiltinType::LongDouble: return LongDoubleRank;
@ -3448,7 +3448,7 @@ QualType ASTContext::getFloatingTypeOfSizeWithinDomain(QualType Size,
FloatingRank EltRank = getFloatingRank(Size); FloatingRank EltRank = getFloatingRank(Size);
if (Domain->isComplexType()) { if (Domain->isComplexType()) {
switch (EltRank) { switch (EltRank) {
default: assert(0 && "getFloatingRank(): illegal value for rank"); default: llvm_unreachable("getFloatingRank(): illegal value for rank");
case FloatRank: return FloatComplexTy; case FloatRank: return FloatComplexTy;
case DoubleRank: return DoubleComplexTy; case DoubleRank: return DoubleComplexTy;
case LongDoubleRank: return LongDoubleComplexTy; case LongDoubleRank: return LongDoubleComplexTy;
@ -3457,7 +3457,7 @@ QualType ASTContext::getFloatingTypeOfSizeWithinDomain(QualType Size,
assert(Domain->isRealFloatingType() && "Unknown domain!"); assert(Domain->isRealFloatingType() && "Unknown domain!");
switch (EltRank) { switch (EltRank) {
default: assert(0 && "getFloatingRank(): illegal value for rank"); default: llvm_unreachable("getFloatingRank(): illegal value for rank");
case FloatRank: return FloatTy; case FloatRank: return FloatTy;
case DoubleRank: return DoubleTy; case DoubleRank: return DoubleTy;
case LongDoubleRank: return LongDoubleTy; case LongDoubleRank: return LongDoubleTy;
@ -3498,7 +3498,7 @@ unsigned ASTContext::getIntegerRank(const Type *T) const {
T = getFromTargetType(Target->getChar32Type()).getTypePtr(); T = getFromTargetType(Target->getChar32Type()).getTypePtr();
switch (cast<BuiltinType>(T)->getKind()) { switch (cast<BuiltinType>(T)->getKind()) {
default: assert(0 && "getIntegerRank(): not a built-in integer"); default: llvm_unreachable("getIntegerRank(): not a built-in integer");
case BuiltinType::Bool: case BuiltinType::Bool:
return 1 + (getIntWidth(BoolTy) << 3); return 1 + (getIntWidth(BoolTy) << 3);
case BuiltinType::Char_S: case BuiltinType::Char_S:
@ -4177,7 +4177,7 @@ void ASTContext::getObjCEncodingForType(QualType T, std::string& S,
static char ObjCEncodingForPrimitiveKind(const ASTContext *C, QualType T) { static char ObjCEncodingForPrimitiveKind(const ASTContext *C, QualType T) {
switch (T->getAs<BuiltinType>()->getKind()) { switch (T->getAs<BuiltinType>()->getKind()) {
default: assert(0 && "Unhandled builtin type kind"); default: llvm_unreachable("Unhandled builtin type kind");
case BuiltinType::Void: return 'v'; case BuiltinType::Void: return 'v';
case BuiltinType::Bool: return 'B'; case BuiltinType::Bool: return 'B';
case BuiltinType::Char_U: case BuiltinType::Char_U:
@ -4536,7 +4536,7 @@ void ASTContext::getObjCEncodingForTypeImpl(QualType T, std::string& S,
return; return;
} }
assert(0 && "@encode for type not implemented!"); llvm_unreachable("@encode for type not implemented!");
} }
void ASTContext::getObjCEncodingForStructureImpl(RecordDecl *RDecl, void ASTContext::getObjCEncodingForStructureImpl(RecordDecl *RDecl,
@ -4918,7 +4918,7 @@ CanQualType ASTContext::getFromTargetType(unsigned Type) const {
case TargetInfo::UnsignedLongLong: return UnsignedLongLongTy; case TargetInfo::UnsignedLongLong: return UnsignedLongLongTy;
} }
assert(false && "Unhandled TargetInfo::IntType value"); llvm_unreachable("Unhandled TargetInfo::IntType value");
return CanQualType(); return CanQualType();
} }
@ -5748,13 +5748,13 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS,
#define NON_CANONICAL_TYPE(Class, Base) case Type::Class: #define NON_CANONICAL_TYPE(Class, Base) case Type::Class:
#define DEPENDENT_TYPE(Class, Base) case Type::Class: #define DEPENDENT_TYPE(Class, Base) case Type::Class:
#include "clang/AST/TypeNodes.def" #include "clang/AST/TypeNodes.def"
assert(false && "Non-canonical and dependent types shouldn't get here"); llvm_unreachable("Non-canonical and dependent types shouldn't get here");
return QualType(); return QualType();
case Type::LValueReference: case Type::LValueReference:
case Type::RValueReference: case Type::RValueReference:
case Type::MemberPointer: case Type::MemberPointer:
assert(false && "C++ should never be in mergeTypes"); llvm_unreachable("C++ should never be in mergeTypes");
return QualType(); return QualType();
case Type::ObjCInterface: case Type::ObjCInterface:
@ -5762,7 +5762,7 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS,
case Type::VariableArray: case Type::VariableArray:
case Type::FunctionProto: case Type::FunctionProto:
case Type::ExtVector: case Type::ExtVector:
assert(false && "Types are eliminated above"); llvm_unreachable("Types are eliminated above");
return QualType(); return QualType();
case Type::Pointer: case Type::Pointer:
@ -6014,7 +6014,7 @@ QualType ASTContext::getCorrespondingUnsignedType(QualType T) {
case BuiltinType::Int128: case BuiltinType::Int128:
return UnsignedInt128Ty; return UnsignedInt128Ty;
default: default:
assert(0 && "Unexpected signed integer type"); llvm_unreachable("Unexpected signed integer type");
return QualType(); return QualType();
} }
} }
@ -6072,7 +6072,7 @@ static QualType DecodeTypeFromStr(const char *&Str, const ASTContext &Context,
// Read the base type. // Read the base type.
switch (*Str++) { switch (*Str++) {
default: assert(0 && "Unknown builtin type letter!"); default: llvm_unreachable("Unknown builtin type letter!");
case 'v': case 'v':
assert(HowLong == 0 && !Signed && !Unsigned && assert(HowLong == 0 && !Signed && !Unsigned &&
"Bad modifiers used with 'v'!"); "Bad modifiers used with 'v'!");
@ -6475,7 +6475,7 @@ MangleContext *ASTContext::createMangleContext() {
case CXXABI_Microsoft: case CXXABI_Microsoft:
return createMicrosoftMangleContext(*this, getDiagnostics()); return createMicrosoftMangleContext(*this, getDiagnostics());
} }
assert(0 && "Unsupported ABI"); llvm_unreachable("Unsupported ABI");
return 0; return 0;
} }

View File

@ -235,7 +235,7 @@ void clang::FormatASTNodeDiagnosticArgument(
bool NeedQuotes = true; bool NeedQuotes = true;
switch (Kind) { switch (Kind) {
default: assert(0 && "unknown ArgumentKind"); default: llvm_unreachable("unknown ArgumentKind");
case Diagnostic::ak_qualtype: { case Diagnostic::ak_qualtype: {
assert(ModLen == 0 && ArgLen == 0 && assert(ModLen == 0 && ArgLen == 0 &&
"Invalid modifier for QualType argument"); "Invalid modifier for QualType argument");

View File

@ -1803,7 +1803,7 @@ ASTNodeImporter::ImportDeclarationNameLoc(const DeclarationNameInfo &From,
To.setNamedTypeInfo(Importer.Import(FromTInfo)); To.setNamedTypeInfo(Importer.Import(FromTInfo));
return; return;
} }
assert(0 && "Unknown name kind."); llvm_unreachable("Unknown name kind.");
} }
} }

View File

@ -1890,7 +1890,7 @@ FunctionDecl::TemplatedKind FunctionDecl::getTemplatedKind() const {
<DependentFunctionTemplateSpecializationInfo*>()) <DependentFunctionTemplateSpecializationInfo*>())
return TK_DependentFunctionTemplateSpecialization; return TK_DependentFunctionTemplateSpecialization;
assert(false && "Did we miss a TemplateOrSpecialization type?"); llvm_unreachable("Did we miss a TemplateOrSpecialization type?");
return TK_NonTemplate; return TK_NonTemplate;
} }
@ -2114,7 +2114,7 @@ FunctionDecl::setTemplateSpecializationKind(TemplateSpecializationKind TSK,
MSInfo->getPointOfInstantiation().isInvalid()) MSInfo->getPointOfInstantiation().isInvalid())
MSInfo->setPointOfInstantiation(PointOfInstantiation); MSInfo->setPointOfInstantiation(PointOfInstantiation);
} else } else
assert(false && "Function cannot have a template specialization kind"); llvm_unreachable("Function cannot have a template specialization kind");
} }
SourceLocation FunctionDecl::getPointOfInstantiation() const { SourceLocation FunctionDecl::getPointOfInstantiation() const {

View File

@ -43,7 +43,7 @@ static bool StatSwitch = false;
const char *Decl::getDeclKindName() const { const char *Decl::getDeclKindName() const {
switch (DeclKind) { switch (DeclKind) {
default: assert(0 && "Declaration not in DeclNodes.inc!"); default: llvm_unreachable("Declaration not in DeclNodes.inc!");
#define DECL(DERIVED, BASE) case DERIVED: return #DERIVED; #define DECL(DERIVED, BASE) case DERIVED: return #DERIVED;
#define ABSTRACT_DECL(DECL) #define ABSTRACT_DECL(DECL)
#include "clang/AST/DeclNodes.inc" #include "clang/AST/DeclNodes.inc"
@ -62,7 +62,7 @@ void Decl::setInvalidDecl(bool Invalid) {
const char *DeclContext::getDeclKindName() const { const char *DeclContext::getDeclKindName() const {
switch (DeclKind) { switch (DeclKind) {
default: assert(0 && "Declaration context not in DeclNodes.inc!"); default: llvm_unreachable("Declaration context not in DeclNodes.inc!");
#define DECL(DERIVED, BASE) case Decl::DERIVED: return #DERIVED; #define DECL(DERIVED, BASE) case Decl::DERIVED: return #DERIVED;
#define ABSTRACT_DECL(DECL) #define ABSTRACT_DECL(DECL)
#include "clang/AST/DeclNodes.inc" #include "clang/AST/DeclNodes.inc"
@ -100,7 +100,7 @@ void Decl::PrintStats() {
void Decl::add(Kind k) { void Decl::add(Kind k) {
switch (k) { switch (k) {
default: assert(0 && "Declaration not in DeclNodes.inc!"); default: llvm_unreachable("Declaration not in DeclNodes.inc!");
#define DECL(DERIVED, BASE) case DERIVED: ++n##DERIVED##s; break; #define DECL(DERIVED, BASE) case DERIVED: ++n##DERIVED##s; break;
#define ABSTRACT_DECL(DECL) #define ABSTRACT_DECL(DECL)
#include "clang/AST/DeclNodes.inc" #include "clang/AST/DeclNodes.inc"
@ -571,7 +571,7 @@ Decl *Decl::castFromDeclContext (const DeclContext *D) {
if (DK >= first##NAME && DK <= last##NAME) \ if (DK >= first##NAME && DK <= last##NAME) \
return static_cast<NAME##Decl*>(const_cast<DeclContext*>(D)); return static_cast<NAME##Decl*>(const_cast<DeclContext*>(D));
#include "clang/AST/DeclNodes.inc" #include "clang/AST/DeclNodes.inc"
assert(false && "a decl that inherits DeclContext isn't handled"); llvm_unreachable("a decl that inherits DeclContext isn't handled");
return 0; return 0;
} }
} }
@ -591,7 +591,7 @@ DeclContext *Decl::castToDeclContext(const Decl *D) {
if (DK >= first##NAME && DK <= last##NAME) \ if (DK >= first##NAME && DK <= last##NAME) \
return static_cast<NAME##Decl*>(const_cast<Decl*>(D)); return static_cast<NAME##Decl*>(const_cast<Decl*>(D));
#include "clang/AST/DeclNodes.inc" #include "clang/AST/DeclNodes.inc"
assert(false && "a decl that inherits DeclContext isn't handled"); llvm_unreachable("a decl that inherits DeclContext isn't handled");
return 0; return 0;
} }
} }

View File

@ -671,7 +671,7 @@ NotASpecialMember:;
case AS_private: data().HasPrivateFields = true; break; case AS_private: data().HasPrivateFields = true; break;
case AS_protected: data().HasProtectedFields = true; break; case AS_protected: data().HasProtectedFields = true; break;
case AS_public: data().HasPublicFields = true; break; case AS_public: data().HasPublicFields = true; break;
case AS_none: assert(0 && "Invalid access specifier"); case AS_none: llvm_unreachable("Invalid access specifier");
}; };
if ((data().HasPrivateFields + data().HasProtectedFields + if ((data().HasPrivateFields + data().HasProtectedFields +
data().HasPublicFields) > 1) data().HasPublicFields) > 1)
@ -1053,7 +1053,7 @@ CXXRecordDecl::setTemplateSpecializationKind(TemplateSpecializationKind TSK) {
return; return;
} }
assert(false && "Not a class template or member class specialization"); llvm_unreachable("Not a class template or member class specialization");
} }
CXXDestructorDecl *CXXRecordDecl::getDestructor() const { CXXDestructorDecl *CXXRecordDecl::getDestructor() const {
@ -1693,7 +1693,7 @@ static const char *getAccessName(AccessSpecifier AS) {
switch (AS) { switch (AS) {
default: default:
case AS_none: case AS_none:
assert(0 && "Invalid access specifier!"); llvm_unreachable("Invalid access specifier!");
return 0; return 0;
case AS_public: case AS_public:
return "public"; return "public";

View File

@ -549,7 +549,7 @@ ObjCInterfaceDecl *ObjCMethodDecl::getClassInterface() {
return IMD->getClassInterface(); return IMD->getClassInterface();
assert(!isa<ObjCProtocolDecl>(getDeclContext()) && "It's a protocol method"); assert(!isa<ObjCProtocolDecl>(getDeclContext()) && "It's a protocol method");
assert(false && "unknown method context"); llvm_unreachable("unknown method context");
return 0; return 0;
} }
@ -781,7 +781,7 @@ const ObjCInterfaceDecl *ObjCIvarDecl::getContainingInterface() const {
default: default:
case ObjCCategoryImpl: case ObjCCategoryImpl:
case ObjCProtocol: case ObjCProtocol:
assert(0 && "invalid ivar container!"); llvm_unreachable("invalid ivar container!");
return 0; return 0;
// Ivars can only appear in class extension categories. // Ivars can only appear in class extension categories.

View File

@ -114,7 +114,7 @@ static QualType GetBaseType(QualType T) {
else if (const VectorType *VTy = BaseType->getAs<VectorType>()) else if (const VectorType *VTy = BaseType->getAs<VectorType>())
BaseType = VTy->getElementType(); BaseType = VTy->getElementType();
else else
assert(0 && "Unknown declarator!"); llvm_unreachable("Unknown declarator!");
} }
return BaseType; return BaseType;
} }
@ -192,7 +192,7 @@ void DeclPrinter::ProcessDeclGroup(SmallVectorImpl<Decl*>& Decls) {
void DeclPrinter::Print(AccessSpecifier AS) { void DeclPrinter::Print(AccessSpecifier AS) {
switch(AS) { switch(AS) {
case AS_none: assert(0 && "No access specifier!"); break; case AS_none: llvm_unreachable("No access specifier!"); break;
case AS_public: Out << "public"; break; case AS_public: Out << "public"; break;
case AS_protected: Out << "protected"; break; case AS_protected: Out << "protected"; break;
case AS_private: Out << "private"; break; case AS_private: Out << "private"; break;

View File

@ -193,7 +193,7 @@ DeclarationName::NameKind DeclarationName::getNameKind() const {
} }
// Can't actually get here. // Can't actually get here.
assert(0 && "This should be unreachable!"); llvm_unreachable("This should be unreachable!");
return Identifier; return Identifier;
} }
@ -276,7 +276,7 @@ void DeclarationName::printName(raw_ostream &OS) const {
return; return;
} }
assert(false && "Unexpected declaration name kind"); llvm_unreachable("Unexpected declaration name kind");
} }
QualType DeclarationName::getCXXNameType() const { QualType DeclarationName::getCXXNameType() const {
@ -338,7 +338,7 @@ void *DeclarationName::getFETokenInfoAsVoid() const {
return getCXXLiteralIdentifier()->getFETokenInfo<void>(); return getCXXLiteralIdentifier()->getFETokenInfo<void>();
default: default:
assert(false && "Declaration name has no FETokenInfo"); llvm_unreachable("Declaration name has no FETokenInfo");
} }
return 0; return 0;
} }
@ -364,7 +364,7 @@ void DeclarationName::setFETokenInfo(void *T) {
break; break;
default: default:
assert(false && "Declaration name has no FETokenInfo"); llvm_unreachable("Declaration name has no FETokenInfo");
} }
} }
@ -588,7 +588,7 @@ void DeclarationNameInfo::printName(raw_ostream &OS) const {
Name.printName(OS); Name.printName(OS);
return; return;
} }
assert(false && "Unexpected declaration name kind"); llvm_unreachable("Unexpected declaration name kind");
} }
SourceLocation DeclarationNameInfo::getEndLoc() const { SourceLocation DeclarationNameInfo::getEndLoc() const {
@ -621,6 +621,6 @@ SourceLocation DeclarationNameInfo::getEndLoc() const {
case DeclarationName::CXXUsingDirective: case DeclarationName::CXXUsingDirective:
return NameLoc; return NameLoc;
} }
assert(false && "Unexpected declaration name kind"); llvm_unreachable("Unexpected declaration name kind");
return SourceLocation(); return SourceLocation();
} }

View File

@ -595,7 +595,7 @@ getLocationOfByte(unsigned ByteNo, const SourceManager &SM,
/// corresponds to, e.g. "sizeof" or "[pre]++". /// corresponds to, e.g. "sizeof" or "[pre]++".
const char *UnaryOperator::getOpcodeStr(Opcode Op) { const char *UnaryOperator::getOpcodeStr(Opcode Op) {
switch (Op) { switch (Op) {
default: assert(0 && "Unknown unary operator"); default: llvm_unreachable("Unknown unary operator");
case UO_PostInc: return "++"; case UO_PostInc: return "++";
case UO_PostDec: return "--"; case UO_PostDec: return "--";
case UO_PreInc: return "++"; case UO_PreInc: return "++";
@ -615,7 +615,7 @@ const char *UnaryOperator::getOpcodeStr(Opcode Op) {
UnaryOperatorKind UnaryOperatorKind
UnaryOperator::getOverloadedOpcode(OverloadedOperatorKind OO, bool Postfix) { UnaryOperator::getOverloadedOpcode(OverloadedOperatorKind OO, bool Postfix) {
switch (OO) { switch (OO) {
default: assert(false && "No unary operator for overloaded function"); default: llvm_unreachable("No unary operator for overloaded function");
case OO_PlusPlus: return Postfix ? UO_PostInc : UO_PreInc; case OO_PlusPlus: return Postfix ? UO_PostInc : UO_PreInc;
case OO_MinusMinus: return Postfix ? UO_PostDec : UO_PreDec; case OO_MinusMinus: return Postfix ? UO_PostDec : UO_PreDec;
case OO_Amp: return UO_AddrOf; case OO_Amp: return UO_AddrOf;
@ -1289,7 +1289,7 @@ const char *BinaryOperator::getOpcodeStr(Opcode Op) {
BinaryOperatorKind BinaryOperatorKind
BinaryOperator::getOverloadedOpcode(OverloadedOperatorKind OO) { BinaryOperator::getOverloadedOpcode(OverloadedOperatorKind OO) {
switch (OO) { switch (OO) {
default: assert(false && "Not an overloadable binary operator"); default: llvm_unreachable("Not an overloadable binary operator");
case OO_Plus: return BO_Add; case OO_Plus: return BO_Add;
case OO_Minus: return BO_Sub; case OO_Minus: return BO_Sub;
case OO_Star: return BO_Mul; case OO_Star: return BO_Mul;
@ -2495,7 +2495,7 @@ Expr::isNullPointerConstant(ASTContext &Ctx,
if (isValueDependent()) { if (isValueDependent()) {
switch (NPC) { switch (NPC) {
case NPC_NeverValueDependent: case NPC_NeverValueDependent:
assert(false && "Unexpected value dependent expression!"); llvm_unreachable("Unexpected value dependent expression!");
// If the unthinkable happens, fall through to the safest alternative. // If the unthinkable happens, fall through to the safest alternative.
case NPC_ValueDependentIsNull: case NPC_ValueDependentIsNull:

View File

@ -388,7 +388,7 @@ public:
ExprEvaluatorBase(EvalInfo &Info) : Info(Info) {} ExprEvaluatorBase(EvalInfo &Info) : Info(Info) {}
RetTy VisitStmt(const Stmt *) { RetTy VisitStmt(const Stmt *) {
assert(0 && "Expression evaluator should not be called on stmts"); llvm_unreachable("Expression evaluator should not be called on stmts");
return DerivedError(0); return DerivedError(0);
} }
RetTy VisitExpr(const Expr *E) { RetTy VisitExpr(const Expr *E) {
@ -1218,7 +1218,7 @@ static int EvaluateBuiltinClassifyType(const CallExpr *E) {
else if (ArgTy->isUnionType()) else if (ArgTy->isUnionType())
return union_type_class; return union_type_class;
else // FIXME: offset_type_class, method_type_class, & lang_type_class? else // FIXME: offset_type_class, method_type_class, & lang_type_class?
assert(0 && "CallExpr::isBuiltinClassifyType(): unimplemented type"); llvm_unreachable("CallExpr::isBuiltinClassifyType(): unimplemented type");
return -1; return -1;
} }
@ -1427,7 +1427,7 @@ bool IntExprEvaluator::VisitBinaryOperator(const BinaryOperator *E) {
switch (E->getOpcode()) { switch (E->getOpcode()) {
default: default:
assert(0 && "Invalid binary operator!"); llvm_unreachable("Invalid binary operator!");
case BO_LT: case BO_LT:
return Success(CR == APFloat::cmpLessThan, E); return Success(CR == APFloat::cmpLessThan, E);
case BO_GT: case BO_GT:

View File

@ -1069,7 +1069,7 @@ void CXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND,
case DeclarationName::ObjCZeroArgSelector: case DeclarationName::ObjCZeroArgSelector:
case DeclarationName::ObjCOneArgSelector: case DeclarationName::ObjCOneArgSelector:
case DeclarationName::ObjCMultiArgSelector: case DeclarationName::ObjCMultiArgSelector:
assert(false && "Can't mangle Objective-C selector names here!"); llvm_unreachable("Can't mangle Objective-C selector names here!");
break; break;
case DeclarationName::CXXConstructorName: case DeclarationName::CXXConstructorName:
@ -1124,7 +1124,7 @@ void CXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND,
break; break;
case DeclarationName::CXXUsingDirective: case DeclarationName::CXXUsingDirective:
assert(false && "Can't mangle a using directive name!"); llvm_unreachable("Can't mangle a using directive name!");
break; break;
} }
} }
@ -1512,7 +1512,7 @@ CXXNameMangler::mangleOperatorName(OverloadedOperatorKind OO, unsigned Arity) {
case OO_None: case OO_None:
case NUM_OVERLOADED_OPERATORS: case NUM_OVERLOADED_OPERATORS:
assert(false && "Not an overloaded operator"); llvm_unreachable("Not an overloaded operator");
break; break;
} }
} }

View File

@ -332,15 +332,15 @@ MicrosoftCXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND,
case DeclarationName::ObjCZeroArgSelector: case DeclarationName::ObjCZeroArgSelector:
case DeclarationName::ObjCOneArgSelector: case DeclarationName::ObjCOneArgSelector:
case DeclarationName::ObjCMultiArgSelector: case DeclarationName::ObjCMultiArgSelector:
assert(false && "Can't mangle Objective-C selector names here!"); llvm_unreachable("Can't mangle Objective-C selector names here!");
break; break;
case DeclarationName::CXXConstructorName: case DeclarationName::CXXConstructorName:
assert(false && "Can't mangle constructors yet!"); llvm_unreachable("Can't mangle constructors yet!");
break; break;
case DeclarationName::CXXDestructorName: case DeclarationName::CXXDestructorName:
assert(false && "Can't mangle destructors yet!"); llvm_unreachable("Can't mangle destructors yet!");
break; break;
case DeclarationName::CXXConversionFunctionName: case DeclarationName::CXXConversionFunctionName:
@ -355,11 +355,11 @@ MicrosoftCXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND,
case DeclarationName::CXXLiteralOperatorName: case DeclarationName::CXXLiteralOperatorName:
// FIXME: Was this added in VS2010? Does MS even know how to mangle this? // FIXME: Was this added in VS2010? Does MS even know how to mangle this?
assert(false && "Don't know how to mangle literal operators yet!"); llvm_unreachable("Don't know how to mangle literal operators yet!");
break; break;
case DeclarationName::CXXUsingDirective: case DeclarationName::CXXUsingDirective:
assert(false && "Can't mangle a using directive name!"); llvm_unreachable("Can't mangle a using directive name!");
break; break;
} }
} }
@ -513,12 +513,12 @@ void MicrosoftCXXNameMangler::mangleOperatorName(OverloadedOperatorKind OO) {
case OO_Array_Delete: Out << "?_V"; break; case OO_Array_Delete: Out << "?_V"; break;
case OO_Conditional: case OO_Conditional:
assert(false && "Don't know how to mangle ?:"); llvm_unreachable("Don't know how to mangle ?:");
break; break;
case OO_None: case OO_None:
case NUM_OVERLOADED_OPERATORS: case NUM_OVERLOADED_OPERATORS:
assert(false && "Not an overloaded operator"); llvm_unreachable("Not an overloaded operator");
break; break;
} }
} }
@ -712,7 +712,7 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T) {
case BuiltinType::Dependent: case BuiltinType::Dependent:
case BuiltinType::UnknownAny: case BuiltinType::UnknownAny:
case BuiltinType::BoundMember: case BuiltinType::BoundMember:
assert(false && llvm_unreachable(
"Overloaded and dependent types shouldn't get to name mangling"); "Overloaded and dependent types shouldn't get to name mangling");
break; break;
case BuiltinType::ObjCId: Out << "PAUobjc_object@@"; break; case BuiltinType::ObjCId: Out << "PAUobjc_object@@"; break;
@ -722,7 +722,7 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T) {
case BuiltinType::Char16: case BuiltinType::Char16:
case BuiltinType::Char32: case BuiltinType::Char32:
case BuiltinType::NullPtr: case BuiltinType::NullPtr:
assert(false && "Don't know how to mangle this type"); llvm_unreachable("Don't know how to mangle this type");
break; break;
} }
} }
@ -869,7 +869,7 @@ void MicrosoftCXXNameMangler::mangleCallingConvention(const FunctionType *T,
CC = IsInstMethod ? getASTContext().getDefaultMethodCallConv() : CC_C; CC = IsInstMethod ? getASTContext().getDefaultMethodCallConv() : CC_C;
switch (CC) { switch (CC) {
default: default:
assert(0 && "Unsupported CC for mangling"); llvm_unreachable("Unsupported CC for mangling");
case CC_Default: case CC_Default:
case CC_C: Out << 'A'; break; case CC_C: Out << 'A'; break;
case CC_X86Pascal: Out << 'C'; break; case CC_X86Pascal: Out << 'C'; break;
@ -890,7 +890,7 @@ void MicrosoftCXXNameMangler::mangleThrowSpecification(
} }
void MicrosoftCXXNameMangler::mangleType(const UnresolvedUsingType *T) { void MicrosoftCXXNameMangler::mangleType(const UnresolvedUsingType *T) {
assert(false && "Don't know how to mangle UnresolvedUsingTypes yet!"); llvm_unreachable("Don't know how to mangle UnresolvedUsingTypes yet!");
} }
// <type> ::= <union-type> | <struct-type> | <class-type> | <enum-type> // <type> ::= <union-type> | <struct-type> | <class-type> | <enum-type>
@ -962,10 +962,10 @@ void MicrosoftCXXNameMangler::mangleExtraDimensions(QualType ElementTy) {
Dimensions.push_back(CAT->getSize()); Dimensions.push_back(CAT->getSize());
ElementTy = CAT->getElementType(); ElementTy = CAT->getElementType();
} else if (ElementTy->isVariableArrayType()) { } else if (ElementTy->isVariableArrayType()) {
assert(false && "Don't know how to mangle VLAs!"); llvm_unreachable("Don't know how to mangle VLAs!");
} else if (ElementTy->isDependentSizedArrayType()) { } else if (ElementTy->isDependentSizedArrayType()) {
// The dependent expression has to be folded into a constant (TODO). // The dependent expression has to be folded into a constant (TODO).
assert(false && "Don't know how to mangle dependent-sized arrays!"); llvm_unreachable("Don't know how to mangle dependent-sized arrays!");
} else if (ElementTy->isIncompleteArrayType()) continue; } else if (ElementTy->isIncompleteArrayType()) continue;
else break; else break;
} }
@ -999,12 +999,12 @@ void MicrosoftCXXNameMangler::mangleType(const MemberPointerType *T) {
} }
void MicrosoftCXXNameMangler::mangleType(const TemplateTypeParmType *T) { void MicrosoftCXXNameMangler::mangleType(const TemplateTypeParmType *T) {
assert(false && "Don't know how to mangle TemplateTypeParmTypes yet!"); llvm_unreachable("Don't know how to mangle TemplateTypeParmTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType( void MicrosoftCXXNameMangler::mangleType(
const SubstTemplateTypeParmPackType *T) { const SubstTemplateTypeParmPackType *T) {
assert(false && llvm_unreachable(
"Don't know how to mangle SubstTemplateTypeParmPackTypes yet!"); "Don't know how to mangle SubstTemplateTypeParmPackTypes yet!");
} }
@ -1045,21 +1045,22 @@ void MicrosoftCXXNameMangler::mangleType(const LValueReferenceType *T) {
} }
void MicrosoftCXXNameMangler::mangleType(const RValueReferenceType *T) { void MicrosoftCXXNameMangler::mangleType(const RValueReferenceType *T) {
assert(false && "Don't know how to mangle RValueReferenceTypes yet!"); llvm_unreachable("Don't know how to mangle RValueReferenceTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const ComplexType *T) { void MicrosoftCXXNameMangler::mangleType(const ComplexType *T) {
assert(false && "Don't know how to mangle ComplexTypes yet!"); llvm_unreachable("Don't know how to mangle ComplexTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const VectorType *T) { void MicrosoftCXXNameMangler::mangleType(const VectorType *T) {
assert(false && "Don't know how to mangle VectorTypes yet!"); llvm_unreachable("Don't know how to mangle VectorTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const ExtVectorType *T) { void MicrosoftCXXNameMangler::mangleType(const ExtVectorType *T) {
assert(false && "Don't know how to mangle ExtVectorTypes yet!"); llvm_unreachable("Don't know how to mangle ExtVectorTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const DependentSizedExtVectorType *T) { void MicrosoftCXXNameMangler::mangleType(const DependentSizedExtVectorType *T) {
assert(false && "Don't know how to mangle DependentSizedExtVectorTypes yet!"); llvm_unreachable(
"Don't know how to mangle DependentSizedExtVectorTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const ObjCInterfaceType *T) { void MicrosoftCXXNameMangler::mangleType(const ObjCInterfaceType *T) {
@ -1080,45 +1081,45 @@ void MicrosoftCXXNameMangler::mangleType(const BlockPointerType *T) {
} }
void MicrosoftCXXNameMangler::mangleType(const InjectedClassNameType *T) { void MicrosoftCXXNameMangler::mangleType(const InjectedClassNameType *T) {
assert(false && "Don't know how to mangle InjectedClassNameTypes yet!"); llvm_unreachable("Don't know how to mangle InjectedClassNameTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const TemplateSpecializationType *T) { void MicrosoftCXXNameMangler::mangleType(const TemplateSpecializationType *T) {
assert(false && "Don't know how to mangle TemplateSpecializationTypes yet!"); llvm_unreachable("Don't know how to mangle TemplateSpecializationTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const DependentNameType *T) { void MicrosoftCXXNameMangler::mangleType(const DependentNameType *T) {
assert(false && "Don't know how to mangle DependentNameTypes yet!"); llvm_unreachable("Don't know how to mangle DependentNameTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType( void MicrosoftCXXNameMangler::mangleType(
const DependentTemplateSpecializationType *T) { const DependentTemplateSpecializationType *T) {
assert(false && llvm_unreachable(
"Don't know how to mangle DependentTemplateSpecializationTypes yet!"); "Don't know how to mangle DependentTemplateSpecializationTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const PackExpansionType *T) { void MicrosoftCXXNameMangler::mangleType(const PackExpansionType *T) {
assert(false && "Don't know how to mangle PackExpansionTypes yet!"); llvm_unreachable("Don't know how to mangle PackExpansionTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const TypeOfType *T) { void MicrosoftCXXNameMangler::mangleType(const TypeOfType *T) {
assert(false && "Don't know how to mangle TypeOfTypes yet!"); llvm_unreachable("Don't know how to mangle TypeOfTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const TypeOfExprType *T) { void MicrosoftCXXNameMangler::mangleType(const TypeOfExprType *T) {
assert(false && "Don't know how to mangle TypeOfExprTypes yet!"); llvm_unreachable("Don't know how to mangle TypeOfExprTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const DecltypeType *T) { void MicrosoftCXXNameMangler::mangleType(const DecltypeType *T) {
assert(false && "Don't know how to mangle DecltypeTypes yet!"); llvm_unreachable("Don't know how to mangle DecltypeTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const UnaryTransformType *T) { void MicrosoftCXXNameMangler::mangleType(const UnaryTransformType *T) {
assert(false && "Don't know how to mangle UnaryTransformationTypes yet!"); llvm_unreachable("Don't know how to mangle UnaryTransformationTypes yet!");
} }
void MicrosoftCXXNameMangler::mangleType(const AutoType *T) { void MicrosoftCXXNameMangler::mangleType(const AutoType *T) {
assert(false && "Don't know how to mangle AutoTypes yet!"); llvm_unreachable("Don't know how to mangle AutoTypes yet!");
} }
void MicrosoftMangleContext::mangleName(const NamedDecl *D, void MicrosoftMangleContext::mangleName(const NamedDecl *D,
@ -1138,17 +1139,17 @@ void MicrosoftMangleContext::mangleName(const NamedDecl *D,
void MicrosoftMangleContext::mangleThunk(const CXXMethodDecl *MD, void MicrosoftMangleContext::mangleThunk(const CXXMethodDecl *MD,
const ThunkInfo &Thunk, const ThunkInfo &Thunk,
raw_ostream &) { raw_ostream &) {
assert(false && "Can't yet mangle thunks!"); llvm_unreachable("Can't yet mangle thunks!");
} }
void MicrosoftMangleContext::mangleCXXDtorThunk(const CXXDestructorDecl *DD, void MicrosoftMangleContext::mangleCXXDtorThunk(const CXXDestructorDecl *DD,
CXXDtorType Type, CXXDtorType Type,
const ThisAdjustment &, const ThisAdjustment &,
raw_ostream &) { raw_ostream &) {
assert(false && "Can't yet mangle destructor thunks!"); llvm_unreachable("Can't yet mangle destructor thunks!");
} }
void MicrosoftMangleContext::mangleCXXVTable(const CXXRecordDecl *RD, void MicrosoftMangleContext::mangleCXXVTable(const CXXRecordDecl *RD,
raw_ostream &) { raw_ostream &) {
assert(false && "Can't yet mangle virtual tables!"); llvm_unreachable("Can't yet mangle virtual tables!");
} }
void MicrosoftMangleContext::mangleCXXVTT(const CXXRecordDecl *RD, void MicrosoftMangleContext::mangleCXXVTT(const CXXRecordDecl *RD,
raw_ostream &) { raw_ostream &) {
@ -1162,25 +1163,25 @@ void MicrosoftMangleContext::mangleCXXCtorVTable(const CXXRecordDecl *RD,
} }
void MicrosoftMangleContext::mangleCXXRTTI(QualType T, void MicrosoftMangleContext::mangleCXXRTTI(QualType T,
raw_ostream &) { raw_ostream &) {
assert(false && "Can't yet mangle RTTI!"); llvm_unreachable("Can't yet mangle RTTI!");
} }
void MicrosoftMangleContext::mangleCXXRTTIName(QualType T, void MicrosoftMangleContext::mangleCXXRTTIName(QualType T,
raw_ostream &) { raw_ostream &) {
assert(false && "Can't yet mangle RTTI names!"); llvm_unreachable("Can't yet mangle RTTI names!");
} }
void MicrosoftMangleContext::mangleCXXCtor(const CXXConstructorDecl *D, void MicrosoftMangleContext::mangleCXXCtor(const CXXConstructorDecl *D,
CXXCtorType Type, CXXCtorType Type,
raw_ostream &) { raw_ostream &) {
assert(false && "Can't yet mangle constructors!"); llvm_unreachable("Can't yet mangle constructors!");
} }
void MicrosoftMangleContext::mangleCXXDtor(const CXXDestructorDecl *D, void MicrosoftMangleContext::mangleCXXDtor(const CXXDestructorDecl *D,
CXXDtorType Type, CXXDtorType Type,
raw_ostream &) { raw_ostream &) {
assert(false && "Can't yet mangle destructors!"); llvm_unreachable("Can't yet mangle destructors!");
} }
void MicrosoftMangleContext::mangleReferenceTemporary(const clang::VarDecl *, void MicrosoftMangleContext::mangleReferenceTemporary(const clang::VarDecl *,
raw_ostream &) { raw_ostream &) {
assert(false && "Can't yet mangle reference temporaries!"); llvm_unreachable("Can't yet mangle reference temporaries!");
} }
MangleContext *clang::createMicrosoftMangleContext(ASTContext &Context, MangleContext *clang::createMicrosoftMangleContext(ASTContext &Context,

View File

@ -294,7 +294,7 @@ void StmtDumper::DumpDeclarator(Decl *D) {
DumpSubTree(SAD->getMessage()); DumpSubTree(SAD->getMessage());
OS << ");\""; OS << ");\"";
} else { } else {
assert(0 && "Unexpected decl"); llvm_unreachable("Unexpected decl");
} }
} }
@ -416,7 +416,7 @@ void StmtDumper::VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node) {
void StmtDumper::VisitPredefinedExpr(PredefinedExpr *Node) { void StmtDumper::VisitPredefinedExpr(PredefinedExpr *Node) {
DumpExpr(Node); DumpExpr(Node);
switch (Node->getIdentType()) { switch (Node->getIdentType()) {
default: assert(0 && "unknown case"); default: llvm_unreachable("unknown case");
case PredefinedExpr::Func: OS << " __func__"; break; case PredefinedExpr::Func: OS << " __func__"; break;
case PredefinedExpr::Function: OS << " __FUNCTION__"; break; case PredefinedExpr::Function: OS << " __FUNCTION__"; break;
case PredefinedExpr::PrettyFunction: OS << " __PRETTY_FUNCTION__";break; case PredefinedExpr::PrettyFunction: OS << " __PRETTY_FUNCTION__";break;

View File

@ -584,7 +584,7 @@ void StmtPrinter::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *Node) {
void StmtPrinter::VisitPredefinedExpr(PredefinedExpr *Node) { void StmtPrinter::VisitPredefinedExpr(PredefinedExpr *Node) {
switch (Node->getIdentType()) { switch (Node->getIdentType()) {
default: default:
assert(0 && "unknown case"); llvm_unreachable("unknown case");
case PredefinedExpr::Func: case PredefinedExpr::Func:
OS << "__func__"; OS << "__func__";
break; break;
@ -658,7 +658,7 @@ void StmtPrinter::VisitIntegerLiteral(IntegerLiteral *Node) {
// Emit suffixes. Integer literals are always a builtin integer type. // Emit suffixes. Integer literals are always a builtin integer type.
switch (Node->getType()->getAs<BuiltinType>()->getKind()) { switch (Node->getType()->getAs<BuiltinType>()->getKind()) {
default: assert(0 && "Unexpected type for integer literal!"); default: llvm_unreachable("Unexpected type for integer literal!");
case BuiltinType::Int: break; // no suffix. case BuiltinType::Int: break; // no suffix.
case BuiltinType::UInt: OS << 'U'; break; case BuiltinType::UInt: OS << 'U'; break;
case BuiltinType::Long: OS << 'L'; break; case BuiltinType::Long: OS << 'L'; break;
@ -1051,7 +1051,7 @@ void StmtPrinter::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *Node) {
OS << ' ' << OpStrings[Kind] << ' '; OS << ' ' << OpStrings[Kind] << ' ';
PrintExpr(Node->getArg(1)); PrintExpr(Node->getArg(1));
} else { } else {
assert(false && "unknown overloaded operator"); llvm_unreachable("unknown overloaded operator");
} }
} }

View File

@ -68,7 +68,7 @@ TemplateArgument TemplateArgument::CreatePackCopy(ASTContext &Context,
bool TemplateArgument::isDependent() const { bool TemplateArgument::isDependent() const {
switch (getKind()) { switch (getKind()) {
case Null: case Null:
assert(false && "Should not have a NULL template argument"); llvm_unreachable("Should not have a NULL template argument");
return false; return false;
case Type: case Type:
@ -107,7 +107,7 @@ bool TemplateArgument::isDependent() const {
bool TemplateArgument::isInstantiationDependent() const { bool TemplateArgument::isInstantiationDependent() const {
switch (getKind()) { switch (getKind()) {
case Null: case Null:
assert(false && "Should not have a NULL template argument"); llvm_unreachable("Should not have a NULL template argument");
return false; return false;
case Type: case Type:

View File

@ -3373,7 +3373,7 @@ public:
OS << " && ..."; OS << " && ...";
return; return;
default: default:
assert(false && "Invalid logical operator."); llvm_unreachable("Invalid logical operator.");
} }
} }
@ -3521,7 +3521,7 @@ static void print_block(raw_ostream &OS, const CFG* cfg,
OS << ")"; OS << ")";
} else } else
assert(false && "Invalid label statement in CFGBlock."); llvm_unreachable("Invalid label statement in CFGBlock.");
OS << ":\n"; OS << ":\n";
} }

View File

@ -209,7 +209,7 @@ clang::analyze_format_string::ParseLengthModifier(FormatSpecifier &FS,
bool ArgTypeResult::matchesType(ASTContext &C, QualType argTy) const { bool ArgTypeResult::matchesType(ASTContext &C, QualType argTy) const {
switch (K) { switch (K) {
case InvalidTy: case InvalidTy:
assert(false && "ArgTypeResult must be valid"); llvm_unreachable("ArgTypeResult must be valid");
return true; return true;
case UnknownTy: case UnknownTy:
@ -312,7 +312,7 @@ bool ArgTypeResult::matchesType(ASTContext &C, QualType argTy) const {
QualType ArgTypeResult::getRepresentativeType(ASTContext &C) const { QualType ArgTypeResult::getRepresentativeType(ASTContext &C) const {
switch (K) { switch (K) {
case InvalidTy: case InvalidTy:
assert(false && "No representative type for Invalid ArgTypeResult"); llvm_unreachable("No representative type for Invalid ArgTypeResult");
// Fall-through. // Fall-through.
case UnknownTy: case UnknownTy:
return QualType(); return QualType();

View File

@ -461,7 +461,7 @@ bool PrintfSpecifier::fixType(QualType QT) {
HasAlternativeForm = 0; HasAlternativeForm = 0;
HasPlusPrefix = 0; HasPlusPrefix = 0;
} else { } else {
assert(0 && "Unexpected type"); llvm_unreachable("Unexpected type");
} }
return true; return true;

View File

@ -494,7 +494,7 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, unsigned DiagClass,
bool ShouldEmitInSystemHeader = false; bool ShouldEmitInSystemHeader = false;
switch (MappingInfo & 7) { switch (MappingInfo & 7) {
default: assert(0 && "Unknown mapping!"); default: llvm_unreachable("Unknown mapping!");
case diag::MAP_IGNORE: case diag::MAP_IGNORE:
if (Diag.EnableAllWarnings) { if (Diag.EnableAllWarnings) {
// Leave the warning disabled if it was explicitly ignored. // Leave the warning disabled if it was explicitly ignored.

View File

@ -87,7 +87,7 @@ TargetInfo::~TargetInfo() {}
/// For example, SignedShort -> "short". /// For example, SignedShort -> "short".
const char *TargetInfo::getTypeName(IntType T) { const char *TargetInfo::getTypeName(IntType T) {
switch (T) { switch (T) {
default: assert(0 && "not an integer!"); default: llvm_unreachable("not an integer!");
case SignedShort: return "short"; case SignedShort: return "short";
case UnsignedShort: return "unsigned short"; case UnsignedShort: return "unsigned short";
case SignedInt: return "int"; case SignedInt: return "int";
@ -103,7 +103,7 @@ const char *TargetInfo::getTypeName(IntType T) {
/// integer type enum. For example, SignedLong -> "L". /// integer type enum. For example, SignedLong -> "L".
const char *TargetInfo::getTypeConstantSuffix(IntType T) { const char *TargetInfo::getTypeConstantSuffix(IntType T) {
switch (T) { switch (T) {
default: assert(0 && "not an integer!"); default: llvm_unreachable("not an integer!");
case SignedShort: case SignedShort:
case SignedInt: return ""; case SignedInt: return "";
case SignedLong: return "L"; case SignedLong: return "L";
@ -119,7 +119,7 @@ const char *TargetInfo::getTypeConstantSuffix(IntType T) {
/// enum. For example, SignedInt -> getIntWidth(). /// enum. For example, SignedInt -> getIntWidth().
unsigned TargetInfo::getTypeWidth(IntType T) const { unsigned TargetInfo::getTypeWidth(IntType T) const {
switch (T) { switch (T) {
default: assert(0 && "not an integer!"); default: llvm_unreachable("not an integer!");
case SignedShort: case SignedShort:
case UnsignedShort: return getShortWidth(); case UnsignedShort: return getShortWidth();
case SignedInt: case SignedInt:
@ -135,7 +135,7 @@ unsigned TargetInfo::getTypeWidth(IntType T) const {
/// enum. For example, SignedInt -> getIntAlign(). /// enum. For example, SignedInt -> getIntAlign().
unsigned TargetInfo::getTypeAlign(IntType T) const { unsigned TargetInfo::getTypeAlign(IntType T) const {
switch (T) { switch (T) {
default: assert(0 && "not an integer!"); default: llvm_unreachable("not an integer!");
case SignedShort: case SignedShort:
case UnsignedShort: return getShortAlign(); case UnsignedShort: return getShortAlign();
case SignedInt: case SignedInt:
@ -151,7 +151,7 @@ unsigned TargetInfo::getTypeAlign(IntType T) const {
/// the type is signed; false otherwise. /// the type is signed; false otherwise.
bool TargetInfo::isTypeSigned(IntType T) { bool TargetInfo::isTypeSigned(IntType T) {
switch (T) { switch (T) {
default: assert(0 && "not an integer!"); default: llvm_unreachable("not an integer!");
case SignedShort: case SignedShort:
case SignedInt: case SignedInt:
case SignedLong: case SignedLong:

View File

@ -2795,7 +2795,7 @@ public:
else if (ABI == "eabi") else if (ABI == "eabi")
Builder.defineMacro("__mips_eabi"); Builder.defineMacro("__mips_eabi");
else else
assert(false && "Invalid ABI for Mips32."); llvm_unreachable("Invalid ABI for Mips32.");
} }
virtual void getGCCRegAliases(const GCCRegAlias *&Aliases, virtual void getGCCRegAliases(const GCCRegAlias *&Aliases,
unsigned &NumAliases) const { unsigned &NumAliases) const {
@ -2897,7 +2897,7 @@ public:
Builder.defineMacro("_MIPS_SIM", "_ABI64"); Builder.defineMacro("_MIPS_SIM", "_ABI64");
} }
else else
assert(false && "Invalid ABI for Mips64."); llvm_unreachable("Invalid ABI for Mips64.");
} }
virtual void getGCCRegAliases(const GCCRegAlias *&Aliases, virtual void getGCCRegAliases(const GCCRegAlias *&Aliases,
unsigned &NumAliases) const { unsigned &NumAliases) const {

View File

@ -152,7 +152,7 @@ static Value *EmitFAbs(CodeGenFunction &CGF, Value *V, QualType ValTy) {
StringRef FnName; StringRef FnName;
switch (ValTyP->getKind()) { switch (ValTyP->getKind()) {
default: assert(0 && "Isn't a scalar fp type!"); default: llvm_unreachable("Isn't a scalar fp type!");
case BuiltinType::Float: FnName = "fabsf"; break; case BuiltinType::Float: FnName = "fabsf"; break;
case BuiltinType::Double: FnName = "fabs"; break; case BuiltinType::Double: FnName = "fabs"; break;
case BuiltinType::LongDouble: FnName = "fabsl"; break; case BuiltinType::LongDouble: FnName = "fabsl"; break;
@ -396,7 +396,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
Value *RHS = EmitScalarExpr(E->getArg(1)); Value *RHS = EmitScalarExpr(E->getArg(1));
switch (BuiltinID) { switch (BuiltinID) {
default: assert(0 && "Unknown ordered comparison"); default: llvm_unreachable("Unknown ordered comparison");
case Builtin::BI__builtin_isgreater: case Builtin::BI__builtin_isgreater:
LHS = Builder.CreateFCmpOGT(LHS, RHS, "cmp"); LHS = Builder.CreateFCmpOGT(LHS, RHS, "cmp");
break; break;
@ -775,7 +775,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
case Builtin::BI__sync_lock_test_and_set: case Builtin::BI__sync_lock_test_and_set:
case Builtin::BI__sync_lock_release: case Builtin::BI__sync_lock_release:
case Builtin::BI__sync_swap: case Builtin::BI__sync_swap:
assert(0 && "Shouldn't make it through sema"); llvm_unreachable("Shouldn't make it through sema");
case Builtin::BI__sync_fetch_and_add_1: case Builtin::BI__sync_fetch_and_add_1:
case Builtin::BI__sync_fetch_and_add_2: case Builtin::BI__sync_fetch_and_add_2:
case Builtin::BI__sync_fetch_and_add_4: case Builtin::BI__sync_fetch_and_add_4:
@ -1541,7 +1541,7 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
case ARM::BI__builtin_neon_vld4_dup_v: case ARM::BI__builtin_neon_vld4_dup_v:
Int = Intrinsic::arm_neon_vld2; Int = Intrinsic::arm_neon_vld2;
break; break;
default: assert(0 && "unknown vld_dup intrinsic?"); default: llvm_unreachable("unknown vld_dup intrinsic?");
} }
Function *F = CGM.getIntrinsic(Int, Ty); Function *F = CGM.getIntrinsic(Int, Ty);
Value *Align = GetPointeeAlignment(*this, E->getArg(1)); Value *Align = GetPointeeAlignment(*this, E->getArg(1));
@ -1560,7 +1560,7 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
case ARM::BI__builtin_neon_vld4_dup_v: case ARM::BI__builtin_neon_vld4_dup_v:
Int = Intrinsic::arm_neon_vld2lane; Int = Intrinsic::arm_neon_vld2lane;
break; break;
default: assert(0 && "unknown vld_dup intrinsic?"); default: llvm_unreachable("unknown vld_dup intrinsic?");
} }
Function *F = CGM.getIntrinsic(Int, Ty); Function *F = CGM.getIntrinsic(Int, Ty);
llvm::StructType *STy = cast<llvm::StructType>(F->getReturnType()); llvm::StructType *STy = cast<llvm::StructType>(F->getReturnType());
@ -2013,7 +2013,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
Intrinsic::ID ID = Intrinsic::not_intrinsic; Intrinsic::ID ID = Intrinsic::not_intrinsic;
switch (BuiltinID) { switch (BuiltinID) {
default: assert(0 && "Unsupported shift intrinsic!"); default: llvm_unreachable("Unsupported shift intrinsic!");
case X86::BI__builtin_ia32_pslldi128: case X86::BI__builtin_ia32_pslldi128:
name = "pslldi"; name = "pslldi";
ID = Intrinsic::x86_sse2_psll_d; ID = Intrinsic::x86_sse2_psll_d;
@ -2073,7 +2073,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
Intrinsic::ID ID = Intrinsic::not_intrinsic; Intrinsic::ID ID = Intrinsic::not_intrinsic;
switch (BuiltinID) { switch (BuiltinID) {
default: assert(0 && "Unsupported shift intrinsic!"); default: llvm_unreachable("Unsupported shift intrinsic!");
case X86::BI__builtin_ia32_pslldi: case X86::BI__builtin_ia32_pslldi:
name = "pslldi"; name = "pslldi";
ID = Intrinsic::x86_mmx_psll_d; ID = Intrinsic::x86_mmx_psll_d;
@ -2398,7 +2398,7 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID,
Ops.pop_back(); Ops.pop_back();
switch (BuiltinID) { switch (BuiltinID) {
default: assert(0 && "Unsupported ld/lvsl/lvsr intrinsic!"); default: llvm_unreachable("Unsupported ld/lvsl/lvsr intrinsic!");
case PPC::BI__builtin_altivec_lvx: case PPC::BI__builtin_altivec_lvx:
ID = Intrinsic::ppc_altivec_lvx; ID = Intrinsic::ppc_altivec_lvx;
break; break;
@ -2437,7 +2437,7 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID,
Ops.pop_back(); Ops.pop_back();
switch (BuiltinID) { switch (BuiltinID) {
default: assert(0 && "Unsupported st intrinsic!"); default: llvm_unreachable("Unsupported st intrinsic!");
case PPC::BI__builtin_altivec_stvx: case PPC::BI__builtin_altivec_stvx:
ID = Intrinsic::ppc_altivec_stvx; ID = Intrinsic::ppc_altivec_stvx;
break; break;

View File

@ -783,7 +783,7 @@ void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI,
break; break;
case ABIArgInfo::Expand: case ABIArgInfo::Expand:
assert(0 && "Invalid ABI kind for return argument"); llvm_unreachable("Invalid ABI kind for return argument");
} }
if (RetAttrs) if (RetAttrs)
@ -1243,7 +1243,7 @@ void CodeGenFunction::EmitFunctionEpilog(const CGFunctionInfo &FI) {
break; break;
case ABIArgInfo::Expand: case ABIArgInfo::Expand:
assert(0 && "Invalid ABI kind for return argument"); llvm_unreachable("Invalid ABI kind for return argument");
} }
llvm::Instruction *Ret = RV ? Builder.CreateRet(RV) : Builder.CreateRetVoid(); llvm::Instruction *Ret = RV ? Builder.CreateRet(RV) : Builder.CreateRetVoid();
@ -1860,10 +1860,10 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
} }
case ABIArgInfo::Expand: case ABIArgInfo::Expand:
assert(0 && "Invalid ABI kind for return argument"); llvm_unreachable("Invalid ABI kind for return argument");
} }
assert(0 && "Unhandled ABIArgInfo::Kind"); llvm_unreachable("Unhandled ABIArgInfo::Kind");
return RValue::get(0); return RValue::get(0);
} }

View File

@ -290,16 +290,16 @@ llvm::DIType CGDebugInfo::CreateType(const BuiltinType *BT) {
const char *BTName = NULL; const char *BTName = NULL;
switch (BT->getKind()) { switch (BT->getKind()) {
case BuiltinType::Dependent: case BuiltinType::Dependent:
assert(0 && "Unexpected builtin type Dependent"); llvm_unreachable("Unexpected builtin type Dependent");
return llvm::DIType(); return llvm::DIType();
case BuiltinType::Overload: case BuiltinType::Overload:
assert(0 && "Unexpected builtin type Overload"); llvm_unreachable("Unexpected builtin type Overload");
return llvm::DIType(); return llvm::DIType();
case BuiltinType::BoundMember: case BuiltinType::BoundMember:
assert(0 && "Unexpected builtin type BoundMember"); llvm_unreachable("Unexpected builtin type BoundMember");
return llvm::DIType(); return llvm::DIType();
case BuiltinType::UnknownAny: case BuiltinType::UnknownAny:
assert(0 && "Unexpected builtin type UnknownAny"); llvm_unreachable("Unexpected builtin type UnknownAny");
return llvm::DIType(); return llvm::DIType();
case BuiltinType::NullPtr: case BuiltinType::NullPtr:
return DBuilder. return DBuilder.
@ -1543,7 +1543,7 @@ llvm::DIType CGDebugInfo::CreateTypeNode(QualType Ty,
#define NON_CANONICAL_TYPE(Class, Base) #define NON_CANONICAL_TYPE(Class, Base)
#define DEPENDENT_TYPE(Class, Base) case Type::Class: #define DEPENDENT_TYPE(Class, Base) case Type::Class:
#include "clang/AST/TypeNodes.def" #include "clang/AST/TypeNodes.def"
assert(false && "Dependent types cannot show up in debug information"); llvm_unreachable("Dependent types cannot show up in debug information");
case Type::ExtVector: case Type::ExtVector:
case Type::Vector: case Type::Vector:

View File

@ -72,7 +72,7 @@ void CodeGenFunction::EmitDecl(const Decl &D) {
case Decl::FriendTemplate: case Decl::FriendTemplate:
case Decl::Block: case Decl::Block:
case Decl::ClassScopeFunctionSpecialization: case Decl::ClassScopeFunctionSpecialization:
assert(0 && "Declaration should not be in declstmts!"); llvm_unreachable("Declaration should not be in declstmts!");
case Decl::Function: // void X(); case Decl::Function: // void X();
case Decl::Record: // struct/union/class X; case Decl::Record: // struct/union/class X;
case Decl::Enum: // enum X; case Decl::Enum: // enum X;
@ -136,7 +136,7 @@ void CodeGenFunction::EmitVarDecl(const VarDecl &D) {
return CGM.getOpenCLRuntime().EmitWorkGroupLocalVarDecl(*this, D); return CGM.getOpenCLRuntime().EmitWorkGroupLocalVarDecl(*this, D);
} }
assert(0 && "Unknown storage class"); llvm_unreachable("Unknown storage class");
} }
static std::string GetStaticDeclName(CodeGenFunction &CGF, const VarDecl &D, static std::string GetStaticDeclName(CodeGenFunction &CGF, const VarDecl &D,
@ -158,14 +158,14 @@ static std::string GetStaticDeclName(CodeGenFunction &CGF, const VarDecl &D,
ContextName = Name.getString(); ContextName = Name.getString();
} }
else else
assert(0 && "Unknown context for block static var decl"); llvm_unreachable("Unknown context for block static var decl");
} else if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(CGF.CurFuncDecl)) { } else if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(CGF.CurFuncDecl)) {
StringRef Name = CGM.getMangledName(FD); StringRef Name = CGM.getMangledName(FD);
ContextName = Name.str(); ContextName = Name.str();
} else if (isa<ObjCMethodDecl>(CGF.CurFuncDecl)) } else if (isa<ObjCMethodDecl>(CGF.CurFuncDecl))
ContextName = CGF.CurFn->getName(); ContextName = CGF.CurFn->getName();
else else
assert(0 && "Unknown context for static var decl"); llvm_unreachable("Unknown context for static var decl");
return ContextName + Separator + D.getNameAsString(); return ContextName + Separator + D.getNameAsString();
} }

View File

@ -474,7 +474,8 @@ CodeGenFunction::EmitReferenceBindingToExpr(const Expr *E,
else { else {
switch (ObjCARCReferenceLifetimeType.getObjCLifetime()) { switch (ObjCARCReferenceLifetimeType.getObjCLifetime()) {
case Qualifiers::OCL_None: case Qualifiers::OCL_None:
assert(0 && "Not a reference temporary that needs to be deallocated"); llvm_unreachable(
"Not a reference temporary that needs to be deallocated");
case Qualifiers::OCL_ExplicitNone: case Qualifiers::OCL_ExplicitNone:
case Qualifiers::OCL_Autoreleasing: case Qualifiers::OCL_Autoreleasing:
// Nothing to do. // Nothing to do.
@ -1196,7 +1197,7 @@ void CodeGenFunction::EmitStoreThroughExtVectorComponentLValue(RValue Src,
Vec = Builder.CreateShuffleVector(Vec, ExtSrcVal, MaskV, "tmp"); Vec = Builder.CreateShuffleVector(Vec, ExtSrcVal, MaskV, "tmp");
} else { } else {
// We should never shorten the vector // We should never shorten the vector
assert(0 && "unexpected shorten vector length"); llvm_unreachable("unexpected shorten vector length");
} }
} else { } else {
// If the Src is a scalar (not a vector) it must be updating one element. // If the Src is a scalar (not a vector) it must be updating one element.
@ -1387,7 +1388,7 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) {
if (const FunctionDecl *fn = dyn_cast<FunctionDecl>(ND)) if (const FunctionDecl *fn = dyn_cast<FunctionDecl>(ND))
return EmitFunctionDeclLValue(*this, E, fn); return EmitFunctionDeclLValue(*this, E, fn);
assert(false && "Unhandled DeclRefExpr"); llvm_unreachable("Unhandled DeclRefExpr");
// an invalid LValue, but the assert will // an invalid LValue, but the assert will
// ensure that this point is never reached. // ensure that this point is never reached.
@ -1407,7 +1408,7 @@ LValue CodeGenFunction::EmitUnaryOpLValue(const UnaryOperator *E) {
QualType ExprTy = getContext().getCanonicalType(E->getSubExpr()->getType()); QualType ExprTy = getContext().getCanonicalType(E->getSubExpr()->getType());
switch (E->getOpcode()) { switch (E->getOpcode()) {
default: assert(0 && "Unknown unary operator lvalue!"); default: llvm_unreachable("Unknown unary operator lvalue!");
case UO_Deref: { case UO_Deref: {
QualType T = E->getSubExpr()->getType()->getPointeeType(); QualType T = E->getSubExpr()->getType()->getPointeeType();
assert(!T.isNull() && "CodeGenFunction::EmitUnaryOpLValue: Illegal type"); assert(!T.isNull() && "CodeGenFunction::EmitUnaryOpLValue: Illegal type");
@ -1483,7 +1484,7 @@ LValue CodeGenFunction::EmitPredefinedLValue(const PredefinedExpr *E) {
std::string GlobalVarName; std::string GlobalVarName;
switch (Type) { switch (Type) {
default: assert(0 && "Invalid type"); default: llvm_unreachable("Invalid type");
case PredefinedExpr::Func: case PredefinedExpr::Func:
GlobalVarName = "__func__."; GlobalVarName = "__func__.";
break; break;
@ -1793,7 +1794,7 @@ LValue CodeGenFunction::EmitMemberExpr(const MemberExpr *E) {
if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(ND)) if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(ND))
return EmitFunctionDeclLValue(*this, E, FD); return EmitFunctionDeclLValue(*this, E, FD);
assert(false && "Unhandled member declaration!"); llvm_unreachable("Unhandled member declaration!");
return LValue(); return LValue();
} }

View File

@ -318,7 +318,7 @@ void AggExprEmitter::VisitCastExpr(CastExpr *E) {
case CK_DerivedToBase: case CK_DerivedToBase:
case CK_BaseToDerived: case CK_BaseToDerived:
case CK_UncheckedDerivedToBase: { case CK_UncheckedDerivedToBase: {
assert(0 && "cannot perform hierarchy conversion in EmitAggExpr: " llvm_unreachable("cannot perform hierarchy conversion in EmitAggExpr: "
"should have been unpacked before we got here"); "should have been unpacked before we got here");
break; break;
} }

View File

@ -103,7 +103,7 @@ public:
ComplexPairTy VisitStmt(Stmt *S) { ComplexPairTy VisitStmt(Stmt *S) {
S->dump(CGF.getContext().getSourceManager()); S->dump(CGF.getContext().getSourceManager());
assert(0 && "Stmt can't have complex result type!"); llvm_unreachable("Stmt can't have complex result type!");
return ComplexPairTy(); return ComplexPairTy();
} }
ComplexPairTy VisitExpr(Expr *S); ComplexPairTy VisitExpr(Expr *S);

View File

@ -780,7 +780,7 @@ public:
if (ILE->getType()->isVectorType()) if (ILE->getType()->isVectorType())
return 0; return 0;
assert(0 && "Unable to handle InitListExpr"); llvm_unreachable("Unable to handle InitListExpr");
// Get rid of control reaches end of void function warning. // Get rid of control reaches end of void function warning.
// Not reached. // Not reached.
return 0; return 0;
@ -966,7 +966,7 @@ llvm::Constant *CodeGenModule::EmitConstantExpr(const Expr *E,
if (Success && !Result.HasSideEffects) { if (Success && !Result.HasSideEffects) {
switch (Result.Val.getKind()) { switch (Result.Val.getKind()) {
case APValue::Uninitialized: case APValue::Uninitialized:
assert(0 && "Constant expressions should be initialized."); llvm_unreachable("Constant expressions should be initialized.");
return 0; return 0;
case APValue::LValue: { case APValue::LValue: {
llvm::Type *DestTy = getTypes().ConvertTypeForMem(DestType); llvm::Type *DestTy = getTypes().ConvertTypeForMem(DestType);

View File

@ -153,7 +153,7 @@ public:
Value *VisitStmt(Stmt *S) { Value *VisitStmt(Stmt *S) {
S->dump(CGF.getContext().getSourceManager()); S->dump(CGF.getContext().getSourceManager());
assert(0 && "Stmt can't have complex result type!"); llvm_unreachable("Stmt can't have complex result type!");
return 0; return 0;
} }
Value *VisitExpr(Expr *S); Value *VisitExpr(Expr *S);
@ -1266,7 +1266,7 @@ EmitAddConsiderOverflowBehavior(const UnaryOperator *E,
return EmitOverflowCheckedBinOp(BinOp); return EmitOverflowCheckedBinOp(BinOp);
break; break;
} }
assert(false && "Unknown SignedOverflowBehaviorTy"); llvm_unreachable("Unknown SignedOverflowBehaviorTy");
return 0; return 0;
} }
@ -1780,7 +1780,7 @@ Value *ScalarExprEmitter::EmitOverflowCheckedBinOp(const BinOpInfo &Ops) {
IID = llvm::Intrinsic::smul_with_overflow; IID = llvm::Intrinsic::smul_with_overflow;
break; break;
default: default:
assert(false && "Unsupported operation for overflow detection"); llvm_unreachable("Unsupported operation for overflow detection");
IID = 0; IID = 0;
} }
OpID <<= 1; OpID <<= 1;
@ -2076,7 +2076,7 @@ enum IntrinsicType { VCMPEQ, VCMPGT };
static llvm::Intrinsic::ID GetIntrinsic(IntrinsicType IT, static llvm::Intrinsic::ID GetIntrinsic(IntrinsicType IT,
BuiltinType::Kind ElemKind) { BuiltinType::Kind ElemKind) {
switch (ElemKind) { switch (ElemKind) {
default: assert(0 && "unexpected element type"); default: llvm_unreachable("unexpected element type");
case BuiltinType::Char_U: case BuiltinType::Char_U:
case BuiltinType::UChar: case BuiltinType::UChar:
return (IT == VCMPEQ) ? llvm::Intrinsic::ppc_altivec_vcmpequb_p : return (IT == VCMPEQ) ? llvm::Intrinsic::ppc_altivec_vcmpequb_p :
@ -2146,7 +2146,7 @@ Value *ScalarExprEmitter::EmitCompare(const BinaryOperator *E,unsigned UICmpOpc,
BuiltinType::Kind ElementKind = BTy->getKind(); BuiltinType::Kind ElementKind = BTy->getKind();
switch(E->getOpcode()) { switch(E->getOpcode()) {
default: assert(0 && "is not a comparison operation"); default: llvm_unreachable("is not a comparison operation");
case BO_EQ: case BO_EQ:
CR6 = CR6_LT; CR6 = CR6_LT;
ID = GetIntrinsic(VCMPEQ, ElementKind); ID = GetIntrinsic(VCMPEQ, ElementKind);
@ -2755,7 +2755,7 @@ LValue CodeGenFunction::EmitCompoundAssignmentLValue(
case BO_LOr: case BO_LOr:
case BO_Assign: case BO_Assign:
case BO_Comma: case BO_Comma:
assert(false && "Not valid compound assignment operators"); llvm_unreachable("Not valid compound assignment operators");
break; break;
} }

View File

@ -2333,7 +2333,7 @@ void CGObjCGNU::EmitObjCGlobalAssign(CodeGenFunction &CGF,
B.CreateCall2(GlobalAssignFn, src, dst); B.CreateCall2(GlobalAssignFn, src, dst);
else else
// FIXME. Add threadloca assign API // FIXME. Add threadloca assign API
assert(false && "EmitObjCGlobalAssign - Threal Local API NYI"); llvm_unreachable("EmitObjCGlobalAssign - Threal Local API NYI");
} }
void CGObjCGNU::EmitObjCIvarAssign(CodeGenFunction &CGF, void CGObjCGNU::EmitObjCIvarAssign(CodeGenFunction &CGF,

View File

@ -1060,7 +1060,7 @@ public:
/// GetClassGlobal - Return the global variable for the Objective-C /// GetClassGlobal - Return the global variable for the Objective-C
/// class of the given name. /// class of the given name.
virtual llvm::GlobalVariable *GetClassGlobal(const std::string &Name) { virtual llvm::GlobalVariable *GetClassGlobal(const std::string &Name) {
assert(false && "CGObjCMac::GetClassGlobal"); llvm_unreachable("CGObjCMac::GetClassGlobal");
return 0; return 0;
} }
}; };

View File

@ -208,8 +208,7 @@ public:
virtual llvm::Value *EmitNSAutoreleasePoolClassRef(CGBuilderTy &Builder) { virtual llvm::Value *EmitNSAutoreleasePoolClassRef(CGBuilderTy &Builder) {
assert(false &&"autoreleasepool unsupported in this ABI"); llvm_unreachable("autoreleasepool unsupported in this ABI");
return 0;
} }
/// EnumerationMutationFunction - Return the function that's called by the /// EnumerationMutationFunction - Return the function that's called by the

View File

@ -203,7 +203,7 @@ static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) {
case BuiltinType::ObjCId: case BuiltinType::ObjCId:
case BuiltinType::ObjCClass: case BuiltinType::ObjCClass:
case BuiltinType::ObjCSel: case BuiltinType::ObjCSel:
assert(false && "FIXME: Objective-C types are unsupported!"); llvm_unreachable("FIXME: Objective-C types are unsupported!");
} }
// Silent gcc. // Silent gcc.
@ -393,11 +393,11 @@ void RTTIBuilder::BuildVTablePointer(const Type *Ty) {
#define NON_CANONICAL_TYPE(Class, Base) case Type::Class: #define NON_CANONICAL_TYPE(Class, Base) case Type::Class:
#define DEPENDENT_TYPE(Class, Base) case Type::Class: #define DEPENDENT_TYPE(Class, Base) case Type::Class:
#include "clang/AST/TypeNodes.def" #include "clang/AST/TypeNodes.def"
assert(false && "Non-canonical and dependent types shouldn't get here"); llvm_unreachable("Non-canonical and dependent types shouldn't get here");
case Type::LValueReference: case Type::LValueReference:
case Type::RValueReference: case Type::RValueReference:
assert(false && "References shouldn't get here"); llvm_unreachable("References shouldn't get here");
case Type::Builtin: case Type::Builtin:
// GCC treats vector and complex types as fundamental types. // GCC treats vector and complex types as fundamental types.
@ -590,7 +590,7 @@ llvm::Constant *RTTIBuilder::BuildTypeInfo(QualType Ty, bool Force) {
#define NON_CANONICAL_TYPE(Class, Base) case Type::Class: #define NON_CANONICAL_TYPE(Class, Base) case Type::Class:
#define DEPENDENT_TYPE(Class, Base) case Type::Class: #define DEPENDENT_TYPE(Class, Base) case Type::Class:
#include "clang/AST/TypeNodes.def" #include "clang/AST/TypeNodes.def"
assert(false && "Non-canonical and dependent types shouldn't get here"); llvm_unreachable("Non-canonical and dependent types shouldn't get here");
// GCC treats vector types as fundamental types. // GCC treats vector types as fundamental types.
case Type::Builtin: case Type::Builtin:
@ -604,7 +604,7 @@ llvm::Constant *RTTIBuilder::BuildTypeInfo(QualType Ty, bool Force) {
case Type::LValueReference: case Type::LValueReference:
case Type::RValueReference: case Type::RValueReference:
assert(false && "References shouldn't get here"); llvm_unreachable("References shouldn't get here");
case Type::ConstantArray: case Type::ConstantArray:
case Type::IncompleteArray: case Type::IncompleteArray:

View File

@ -137,10 +137,12 @@ void CodeGenFunction::EmitStmt(const Stmt *S) {
EmitObjCAtTryStmt(cast<ObjCAtTryStmt>(*S)); EmitObjCAtTryStmt(cast<ObjCAtTryStmt>(*S));
break; break;
case Stmt::ObjCAtCatchStmtClass: case Stmt::ObjCAtCatchStmtClass:
assert(0 && "@catch statements should be handled by EmitObjCAtTryStmt"); llvm_unreachable(
"@catch statements should be handled by EmitObjCAtTryStmt");
break; break;
case Stmt::ObjCAtFinallyStmtClass: case Stmt::ObjCAtFinallyStmtClass:
assert(0 && "@finally statements should be handled by EmitObjCAtTryStmt"); llvm_unreachable(
"@finally statements should be handled by EmitObjCAtTryStmt");
break; break;
case Stmt::ObjCAtThrowStmtClass: case Stmt::ObjCAtThrowStmtClass:
EmitObjCAtThrowStmt(cast<ObjCAtThrowStmt>(*S)); EmitObjCAtThrowStmt(cast<ObjCAtThrowStmt>(*S));

View File

@ -263,7 +263,7 @@ static BaseOffset ComputeBaseOffset(ASTContext &Context,
if (!const_cast<CXXRecordDecl *>(DerivedRD)-> if (!const_cast<CXXRecordDecl *>(DerivedRD)->
isDerivedFrom(const_cast<CXXRecordDecl *>(BaseRD), Paths)) { isDerivedFrom(const_cast<CXXRecordDecl *>(BaseRD), Paths)) {
assert(false && "Class must be derived from the passed in base class!"); llvm_unreachable("Class must be derived from the passed in base class!");
return BaseOffset(); return BaseOffset();
} }
@ -303,7 +303,7 @@ ComputeReturnAdjustmentBaseOffset(ASTContext &Context,
CanBaseReturnType = CanBaseReturnType =
CanBaseReturnType->getAs<PointerType>()->getPointeeType(); CanBaseReturnType->getAs<PointerType>()->getPointeeType();
} else { } else {
assert(false && "Unexpected return type!"); llvm_unreachable("Unexpected return type!");
} }
// We need to compare unqualified types here; consider // We need to compare unqualified types here; consider
@ -700,7 +700,7 @@ CharUnits VCallOffsetMap::getVCallOffsetOffset(const CXXMethodDecl *MD) {
return Offsets[I].second; return Offsets[I].second;
} }
assert(false && "Should always find a vcall offset offset!"); llvm_unreachable("Should always find a vcall offset offset!");
return CharUnits::Zero(); return CharUnits::Zero();
} }
@ -1361,7 +1361,7 @@ VTableBuilder::ComputeThisAdjustmentBaseOffset(BaseSubobject Base,
if (!const_cast<CXXRecordDecl *>(DerivedRD)-> if (!const_cast<CXXRecordDecl *>(DerivedRD)->
isDerivedFrom(const_cast<CXXRecordDecl *>(BaseRD), Paths)) { isDerivedFrom(const_cast<CXXRecordDecl *>(BaseRD), Paths)) {
assert(false && "Class must be derived from the passed in base class!"); llvm_unreachable("Class must be derived from the passed in base class!");
return BaseOffset(); return BaseOffset();
} }
@ -1553,7 +1553,7 @@ VTableBuilder::IsOverriderUsed(const CXXMethodDecl *Overrider,
} }
if (!PrimaryBases.insert(PrimaryBase)) if (!PrimaryBases.insert(PrimaryBase))
assert(false && "Found a duplicate primary base!"); llvm_unreachable("Found a duplicate primary base!");
RD = PrimaryBase; RD = PrimaryBase;
} }
@ -1627,7 +1627,7 @@ VTableBuilder::AddMethods(BaseSubobject Base, CharUnits BaseOffsetInLayoutClass,
FirstBaseOffsetInLayoutClass, PrimaryBases); FirstBaseOffsetInLayoutClass, PrimaryBases);
if (!PrimaryBases.insert(PrimaryBase)) if (!PrimaryBases.insert(PrimaryBase))
assert(false && "Found a duplicate primary base!"); llvm_unreachable("Found a duplicate primary base!");
} }
// Now go through all virtual member functions and add them. // Now go through all virtual member functions and add them.
@ -2316,7 +2316,7 @@ CollectPrimaryBases(const CXXRecordDecl *RD, ASTContext &Context,
CollectPrimaryBases(PrimaryBase, Context, PrimaryBases); CollectPrimaryBases(PrimaryBase, Context, PrimaryBases);
if (!PrimaryBases.insert(PrimaryBase)) if (!PrimaryBases.insert(PrimaryBase))
assert(false && "Found a duplicate primary base!"); llvm_unreachable("Found a duplicate primary base!");
} }
void CodeGenVTables::ComputeMethodVTableIndices(const CXXRecordDecl *RD) { void CodeGenVTables::ComputeMethodVTableIndices(const CXXRecordDecl *RD) {

View File

@ -275,7 +275,7 @@ static raw_ostream *GetOutputStream(CompilerInstance &CI,
return CI.createDefaultOutputFile(true, InFile, "o"); return CI.createDefaultOutputFile(true, InFile, "o");
} }
assert(0 && "Invalid action!"); llvm_unreachable("Invalid action!");
return 0; return 0;
} }

View File

@ -850,7 +850,7 @@ void CodeGenModule::EmitGlobalDefinition(GlobalDecl GD) {
if (const VarDecl *VD = dyn_cast<VarDecl>(D)) if (const VarDecl *VD = dyn_cast<VarDecl>(D))
return EmitGlobalVarDefinition(VD); return EmitGlobalVarDefinition(VD);
assert(0 && "Invalid argument to EmitGlobalDefinition()"); llvm_unreachable("Invalid argument to EmitGlobalDefinition()");
} }
/// GetOrCreateLLVMFunction - If the specified mangled name is not in the /// GetOrCreateLLVMFunction - If the specified mangled name is not in the

View File

@ -273,7 +273,7 @@ static llvm::Type *getTypeForFormat(llvm::LLVMContext &VMContext,
return llvm::Type::getPPC_FP128Ty(VMContext); return llvm::Type::getPPC_FP128Ty(VMContext);
if (&format == &llvm::APFloat::x87DoubleExtended) if (&format == &llvm::APFloat::x87DoubleExtended)
return llvm::Type::getX86_FP80Ty(VMContext); return llvm::Type::getX86_FP80Ty(VMContext);
assert(0 && "Unknown float format!"); llvm_unreachable("Unknown float format!");
return 0; return 0;
} }

View File

@ -1706,7 +1706,7 @@ classifyReturnType(QualType RetTy) const {
case SSEUp: case SSEUp:
case X87Up: case X87Up:
assert(0 && "Invalid classification for lo word."); llvm_unreachable("Invalid classification for lo word.");
// AMD64-ABI 3.2.3p4: Rule 2. Types of class memory are returned via // AMD64-ABI 3.2.3p4: Rule 2. Types of class memory are returned via
// hidden argument. // hidden argument.
@ -1760,7 +1760,7 @@ classifyReturnType(QualType RetTy) const {
// never occur as a hi class. // never occur as a hi class.
case Memory: case Memory:
case X87: case X87:
assert(0 && "Invalid classification for hi word."); llvm_unreachable("Invalid classification for hi word.");
case ComplexX87: // Previously handled. case ComplexX87: // Previously handled.
case NoClass: case NoClass:
@ -1848,7 +1848,7 @@ ABIArgInfo X86_64ABIInfo::classifyArgumentType(QualType Ty, unsigned &neededInt,
case SSEUp: case SSEUp:
case X87Up: case X87Up:
assert(0 && "Invalid classification for lo word."); llvm_unreachable("Invalid classification for lo word.");
// AMD64-ABI 3.2.3p3: Rule 2. If the class is INTEGER, the next // AMD64-ABI 3.2.3p3: Rule 2. If the class is INTEGER, the next
// available register of the sequence %rdi, %rsi, %rdx, %rcx, %r8 // available register of the sequence %rdi, %rsi, %rdx, %rcx, %r8
@ -1892,7 +1892,7 @@ ABIArgInfo X86_64ABIInfo::classifyArgumentType(QualType Ty, unsigned &neededInt,
case Memory: case Memory:
case X87: case X87:
case ComplexX87: case ComplexX87:
assert(0 && "Invalid classification for hi word."); llvm_unreachable("Invalid classification for hi word.");
break; break;
case NoClass: break; case NoClass: break;

View File

@ -34,7 +34,7 @@ const char *Action::getClassName(ActionClass AC) {
case VerifyJobClass: return "verify"; case VerifyJobClass: return "verify";
} }
assert(0 && "invalid class"); llvm_unreachable("invalid class");
return 0; return 0;
} }

View File

@ -1076,7 +1076,7 @@ Action *Driver::ConstructPhaseAction(const ArgList &Args, phases::ID Phase,
llvm::PrettyStackTraceString CrashInfo("Constructing phase actions"); llvm::PrettyStackTraceString CrashInfo("Constructing phase actions");
// Build the appropriate action. // Build the appropriate action.
switch (Phase) { switch (Phase) {
case phases::Link: assert(0 && "link action invalid here."); case phases::Link: llvm_unreachable("link action invalid here.");
case phases::Preprocess: { case phases::Preprocess: {
types::ID OutputTy; types::ID OutputTy;
// -{M, MM} alter the output type. // -{M, MM} alter the output type.
@ -1112,7 +1112,7 @@ Action *Driver::ConstructPhaseAction(const ArgList &Args, phases::ID Phase,
return new AssembleJobAction(Input, types::TY_Object); return new AssembleJobAction(Input, types::TY_Object);
} }
assert(0 && "invalid phase in ConstructPhaseAction"); llvm_unreachable("invalid phase in ConstructPhaseAction");
return 0; return 0;
} }

View File

@ -116,7 +116,7 @@ OptTable::OptTable(const Info *_OptionInfos, unsigned _NumOptionInfos)
if (!(getInfo(i) < getInfo(i + 1))) { if (!(getInfo(i) < getInfo(i + 1))) {
getOption(i)->dump(); getOption(i)->dump();
getOption(i + 1)->dump(); getOption(i + 1)->dump();
assert(0 && "Options are not in order!"); llvm_unreachable("Options are not in order!");
} }
} }
#endif #endif
@ -268,10 +268,10 @@ static std::string getOptionHelpName(const OptTable &Opts, OptSpecifier Id) {
// Add metavar, if used. // Add metavar, if used.
switch (Opts.getOptionKind(Id)) { switch (Opts.getOptionKind(Id)) {
case Option::GroupClass: case Option::InputClass: case Option::UnknownClass: case Option::GroupClass: case Option::InputClass: case Option::UnknownClass:
assert(0 && "Invalid option with help text."); llvm_unreachable("Invalid option with help text.");
case Option::MultiArgClass: case Option::MultiArgClass:
assert(0 && "Cannot print metavar for this kind of option."); llvm_unreachable("Cannot print metavar for this kind of option.");
case Option::FlagClass: case Option::FlagClass:
break; break;

View File

@ -61,7 +61,7 @@ void Option::dump() const {
llvm::errs() << "<"; llvm::errs() << "<";
switch (Kind) { switch (Kind) {
default: default:
assert(0 && "Invalid kind"); llvm_unreachable("Invalid kind");
#define P(N) case N: llvm::errs() << #N; break #define P(N) case N: llvm::errs() << #N; break
P(GroupClass); P(GroupClass);
P(InputClass); P(InputClass);
@ -114,7 +114,7 @@ OptionGroup::OptionGroup(OptSpecifier ID, const char *Name,
} }
Arg *OptionGroup::accept(const ArgList &Args, unsigned &Index) const { Arg *OptionGroup::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "accept() should never be called on an OptionGroup"); llvm_unreachable("accept() should never be called on an OptionGroup");
return 0; return 0;
} }
@ -123,7 +123,7 @@ InputOption::InputOption(OptSpecifier ID)
} }
Arg *InputOption::accept(const ArgList &Args, unsigned &Index) const { Arg *InputOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "accept() should never be called on an InputOption"); llvm_unreachable("accept() should never be called on an InputOption");
return 0; return 0;
} }
@ -132,7 +132,7 @@ UnknownOption::UnknownOption(OptSpecifier ID)
} }
Arg *UnknownOption::accept(const ArgList &Args, unsigned &Index) const { Arg *UnknownOption::accept(const ArgList &Args, unsigned &Index) const {
assert(0 && "accept() should never be called on an UnknownOption"); llvm_unreachable("accept() should never be called on an UnknownOption");
return 0; return 0;
} }

View File

@ -22,6 +22,6 @@ const char *phases::getPhaseName(ID Id) {
case Link: return "linker"; case Link: return "linker";
} }
assert(0 && "Invalid phase id."); llvm_unreachable("Invalid phase id.");
return 0; return 0;
} }

View File

@ -243,7 +243,7 @@ Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA,
switch (Key) { switch (Key) {
case Action::InputClass: case Action::InputClass:
case Action::BindArchClass: case Action::BindArchClass:
assert(0 && "Invalid tool kind."); llvm_unreachable("Invalid tool kind.");
case Action::PreprocessJobClass: case Action::PreprocessJobClass:
T = new tools::darwin::Preprocess(*this); break; T = new tools::darwin::Preprocess(*this); break;
case Action::AnalyzeJobClass: case Action::AnalyzeJobClass:
@ -323,7 +323,7 @@ void DarwinClang::AddLinkSearchPathArgs(const ArgList &Args,
P.appendComponent("gcc"); P.appendComponent("gcc");
switch (getTriple().getArch()) { switch (getTriple().getArch()) {
default: default:
assert(0 && "Invalid Darwin arch!"); llvm_unreachable("Invalid Darwin arch!");
case llvm::Triple::x86: case llvm::Triple::x86:
case llvm::Triple::x86_64: case llvm::Triple::x86_64:
P.appendComponent("i686-apple-darwin10"); P.appendComponent("i686-apple-darwin10");
@ -1002,7 +1002,7 @@ Tool &Generic_GCC::SelectTool(const Compilation &C,
switch (Key) { switch (Key) {
case Action::InputClass: case Action::InputClass:
case Action::BindArchClass: case Action::BindArchClass:
assert(0 && "Invalid tool kind."); llvm_unreachable("Invalid tool kind.");
case Action::PreprocessJobClass: case Action::PreprocessJobClass:
T = new tools::gcc::Preprocess(*this); break; T = new tools::gcc::Preprocess(*this); break;
case Action::PrecompileJobClass: case Action::PrecompileJobClass:
@ -1093,7 +1093,7 @@ Tool &TCEToolChain::SelectTool(const Compilation &C,
case Action::AnalyzeJobClass: case Action::AnalyzeJobClass:
T = new tools::Clang(*this); break; T = new tools::Clang(*this); break;
default: default:
assert(false && "Unsupported action for TCE target."); llvm_unreachable("Unsupported action for TCE target.");
} }
} }
return *T; return *T;
@ -1805,7 +1805,7 @@ Tool &Windows::SelectTool(const Compilation &C, const JobAction &JA,
case Action::LipoJobClass: case Action::LipoJobClass:
case Action::DsymutilJobClass: case Action::DsymutilJobClass:
case Action::VerifyJobClass: case Action::VerifyJobClass:
assert(0 && "Invalid tool kind."); llvm_unreachable("Invalid tool kind.");
case Action::PreprocessJobClass: case Action::PreprocessJobClass:
case Action::PrecompileJobClass: case Action::PrecompileJobClass:
case Action::AnalyzeJobClass: case Action::AnalyzeJobClass:

View File

@ -2477,7 +2477,7 @@ void gcc::Link::RenderExtraToolArgs(const JobAction &JA,
const char *darwin::CC1::getCC1Name(types::ID Type) const { const char *darwin::CC1::getCC1Name(types::ID Type) const {
switch (Type) { switch (Type) {
default: default:
assert(0 && "Unexpected type for Darwin CC1 tool."); llvm_unreachable("Unexpected type for Darwin CC1 tool.");
case types::TY_Asm: case types::TY_Asm:
case types::TY_C: case types::TY_CHeader: case types::TY_C: case types::TY_CHeader:
case types::TY_PP_C: case types::TY_PP_CHeader: case types::TY_PP_C: case types::TY_PP_CHeader:

View File

@ -286,7 +286,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
} }
default: default:
assert(0 && "a decl that inherits DeclContext isn't handled"); llvm_unreachable("a decl that inherits DeclContext isn't handled");
} }
Out << "\n"; Out << "\n";
@ -392,7 +392,7 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
} }
default: default:
Out << "DeclKind: " << DK << '"' << *I << "\"\n"; Out << "DeclKind: " << DK << '"' << *I << "\"\n";
assert(0 && "decl unhandled"); llvm_unreachable("decl unhandled");
} }
} }
} }

View File

@ -1164,7 +1164,7 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
if (const Arg *A = Args.getLastArg(OPT_Action_Group)) { if (const Arg *A = Args.getLastArg(OPT_Action_Group)) {
switch (A->getOption().getID()) { switch (A->getOption().getID()) {
default: default:
assert(0 && "Invalid option in group!"); llvm_unreachable("Invalid option in group!");
case OPT_ast_dump: case OPT_ast_dump:
Opts.ProgramAction = frontend::ASTDump; break; Opts.ProgramAction = frontend::ASTDump; break;
case OPT_ast_dump_xml: case OPT_ast_dump_xml:
@ -1457,7 +1457,7 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK,
case IK_None: case IK_None:
case IK_AST: case IK_AST:
case IK_LLVM_IR: case IK_LLVM_IR:
assert(0 && "Invalid input kind!"); llvm_unreachable("Invalid input kind!");
case IK_OpenCL: case IK_OpenCL:
LangStd = LangStandard::lang_opencl; LangStd = LangStandard::lang_opencl;
break; break;

View File

@ -26,7 +26,8 @@ void TextDiagnosticBuffer::HandleDiagnostic(Diagnostic::Level Level,
llvm::SmallString<100> Buf; llvm::SmallString<100> Buf;
Info.FormatDiagnostic(Buf); Info.FormatDiagnostic(Buf);
switch (Level) { switch (Level) {
default: assert(0 && "Diagnostic not handled during diagnostic buffering!"); default: llvm_unreachable(
"Diagnostic not handled during diagnostic buffering!");
case Diagnostic::Note: case Diagnostic::Note:
Notes.push_back(std::make_pair(Info.getLocation(), Buf.str())); Notes.push_back(std::make_pair(Info.getLocation(), Buf.str()));
break; break;

View File

@ -1083,7 +1083,7 @@ void TextDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level,
if (DiagOpts->ShowColors) { if (DiagOpts->ShowColors) {
// Print diagnostic category in bold and color // Print diagnostic category in bold and color
switch (Level) { switch (Level) {
case Diagnostic::Ignored: assert(0 && "Invalid diagnostic type"); case Diagnostic::Ignored: llvm_unreachable("Invalid diagnostic type");
case Diagnostic::Note: OS.changeColor(noteColor, true); break; case Diagnostic::Note: OS.changeColor(noteColor, true); break;
case Diagnostic::Warning: OS.changeColor(warningColor, true); break; case Diagnostic::Warning: OS.changeColor(warningColor, true); break;
case Diagnostic::Error: OS.changeColor(errorColor, true); break; case Diagnostic::Error: OS.changeColor(errorColor, true); break;
@ -1092,7 +1092,7 @@ void TextDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level,
} }
switch (Level) { switch (Level) {
case Diagnostic::Ignored: assert(0 && "Invalid diagnostic type"); case Diagnostic::Ignored: llvm_unreachable("Invalid diagnostic type");
case Diagnostic::Note: OS << "note: "; break; case Diagnostic::Note: OS << "note: "; break;
case Diagnostic::Warning: OS << "warning: "; break; case Diagnostic::Warning: OS << "warning: "; break;
case Diagnostic::Error: OS << "error: "; break; case Diagnostic::Error: OS << "error: "; break;

View File

@ -41,7 +41,7 @@ Decl *ASTLocation::getReferencedDecl() {
return 0; return 0;
switch (getKind()) { switch (getKind()) {
default: assert(0 && "Invalid Kind"); default: llvm_unreachable("Invalid Kind");
case N_Type: case N_Type:
return 0; return 0;
case N_Decl: case N_Decl:
@ -60,7 +60,7 @@ SourceRange ASTLocation::getSourceRange() const {
return SourceRange(); return SourceRange();
switch (getKind()) { switch (getKind()) {
default: assert(0 && "Invalid Kind"); default: llvm_unreachable("Invalid Kind");
return SourceRange(); return SourceRange();
case N_Decl: case N_Decl:
return D->getSourceRange(); return D->getSourceRange();

View File

@ -30,7 +30,7 @@ static int HexDigitValue(char C) {
static unsigned getCharWidth(tok::TokenKind kind, const TargetInfo &Target) { static unsigned getCharWidth(tok::TokenKind kind, const TargetInfo &Target) {
switch (kind) { switch (kind) {
default: assert(0 && "Unknown token type!"); default: llvm_unreachable("Unknown token type!");
case tok::char_constant: case tok::char_constant:
case tok::string_literal: case tok::string_literal:
case tok::utf8_string_literal: case tok::utf8_string_literal:

View File

@ -535,7 +535,7 @@ static bool EvaluateDirectiveSubExpr(PPValue &LHS, unsigned MinPrec,
bool Overflow = false; bool Overflow = false;
switch (Operator) { switch (Operator) {
default: assert(0 && "Unknown operator token!"); default: llvm_unreachable("Unknown operator token!");
case tok::percent: case tok::percent:
if (RHS.Val != 0) if (RHS.Val != 0)
Res = LHS.Val % RHS.Val; Res = LHS.Val % RHS.Val;

View File

@ -1015,7 +1015,7 @@ void Preprocessor::ExpandBuiltinMacro(Token &Tok) {
OS << (int)Value; OS << (int)Value;
Tok.setKind(tok::numeric_constant); Tok.setKind(tok::numeric_constant);
} else { } else {
assert(0 && "Unknown identifier!"); llvm_unreachable("Unknown identifier!");
} }
CreateString(OS.str().data(), OS.str().size(), Tok, Tok.getLocation()); CreateString(OS.str().data(), OS.str().size(), Tok, Tok.getLocation());
} }

View File

@ -804,7 +804,7 @@ struct PragmaDebugHandler : public PragmaHandler {
IdentifierInfo *II = Tok.getIdentifierInfo(); IdentifierInfo *II = Tok.getIdentifierInfo();
if (II->isStr("assert")) { if (II->isStr("assert")) {
assert(0 && "This is an assertion!"); llvm_unreachable("This is an assertion!");
} else if (II->isStr("crash")) { } else if (II->isStr("crash")) {
*(volatile int*) 0x11 = 0; *(volatile int*) 0x11 = 0;
} else if (II->isStr("llvm_fatal_error")) { } else if (II->isStr("llvm_fatal_error")) {

View File

@ -1585,7 +1585,7 @@ ExprResult Parser::ParseBuiltinPrimaryExpression() {
// TODO: Build AST. // TODO: Build AST.
switch (T) { switch (T) {
default: assert(0 && "Not a builtin primary expression!"); default: llvm_unreachable("Not a builtin primary expression!");
case tok::kw___builtin_va_arg: { case tok::kw___builtin_va_arg: {
ExprResult Expr(ParseAssignmentExpression()); ExprResult Expr(ParseAssignmentExpression());

View File

@ -29,7 +29,7 @@ static int SelectDigraphErrorMessage(tok::TokenKind Kind) {
case tok::kw_reinterpret_cast: return 3; case tok::kw_reinterpret_cast: return 3;
case tok::kw_static_cast: return 4; case tok::kw_static_cast: return 4;
default: default:
assert(0 && "Unknown type for digraph error message."); llvm_unreachable("Unknown type for digraph error message.");
return -1; return -1;
} }
} }
@ -784,7 +784,7 @@ ExprResult Parser::ParseCXXCasts() {
const char *CastName = 0; // For error messages const char *CastName = 0; // For error messages
switch (Kind) { switch (Kind) {
default: assert(0 && "Unknown C++ cast!"); abort(); default: llvm_unreachable("Unknown C++ cast!"); abort();
case tok::kw_const_cast: CastName = "const_cast"; break; case tok::kw_const_cast: CastName = "const_cast"; break;
case tok::kw_dynamic_cast: CastName = "dynamic_cast"; break; case tok::kw_dynamic_cast: CastName = "dynamic_cast"; break;
case tok::kw_reinterpret_cast: CastName = "reinterpret_cast"; break; case tok::kw_reinterpret_cast: CastName = "reinterpret_cast"; break;
@ -1289,9 +1289,9 @@ void Parser::ParseCXXSimpleTypeSpecifier(DeclSpec &DS) {
switch (Tok.getKind()) { switch (Tok.getKind()) {
case tok::identifier: // foo::bar case tok::identifier: // foo::bar
case tok::coloncolon: // ::foo::bar case tok::coloncolon: // ::foo::bar
assert(0 && "Annotation token should already be formed!"); llvm_unreachable("Annotation token should already be formed!");
default: default:
assert(0 && "Not a simple-type-specifier token!"); llvm_unreachable("Not a simple-type-specifier token!");
abort(); abort();
// type-name // type-name
@ -2200,7 +2200,7 @@ Parser::ParseCXXDeleteExpression(bool UseGlobal, SourceLocation Start) {
static UnaryTypeTrait UnaryTypeTraitFromTokKind(tok::TokenKind kind) { static UnaryTypeTrait UnaryTypeTraitFromTokKind(tok::TokenKind kind) {
switch(kind) { switch(kind) {
default: assert(false && "Not a known unary type trait."); default: llvm_unreachable("Not a known unary type trait.");
case tok::kw___has_nothrow_assign: return UTT_HasNothrowAssign; case tok::kw___has_nothrow_assign: return UTT_HasNothrowAssign;
case tok::kw___has_nothrow_constructor: return UTT_HasNothrowConstructor; case tok::kw___has_nothrow_constructor: return UTT_HasNothrowConstructor;
case tok::kw___has_nothrow_copy: return UTT_HasNothrowCopy; case tok::kw___has_nothrow_copy: return UTT_HasNothrowCopy;
@ -2268,7 +2268,7 @@ static ArrayTypeTrait ArrayTypeTraitFromTokKind(tok::TokenKind kind) {
static ExpressionTrait ExpressionTraitFromTokKind(tok::TokenKind kind) { static ExpressionTrait ExpressionTraitFromTokKind(tok::TokenKind kind) {
switch(kind) { switch(kind) {
default: assert(false && "Not a known unary expression trait."); default: llvm_unreachable("Not a known unary expression trait.");
case tok::kw___is_lvalue_expr: return ET_IsLValueExpr; case tok::kw___is_lvalue_expr: return ET_IsLValueExpr;
case tok::kw___is_rvalue_expr: return ET_IsRValueExpr; case tok::kw___is_rvalue_expr: return ET_IsRValueExpr;
} }

View File

@ -761,7 +761,7 @@ void Parser::ParseObjCTypeQualifierList(ObjCDeclSpec &DS,
ObjCDeclSpec::ObjCDeclQualifier Qual; ObjCDeclSpec::ObjCDeclQualifier Qual;
switch (i) { switch (i) {
default: assert(0 && "Unknown decl qualifier"); default: llvm_unreachable("Unknown decl qualifier");
case objc_in: Qual = ObjCDeclSpec::DQ_In; break; case objc_in: Qual = ObjCDeclSpec::DQ_In; break;
case objc_out: Qual = ObjCDeclSpec::DQ_Out; break; case objc_out: Qual = ObjCDeclSpec::DQ_Out; break;
case objc_inout: Qual = ObjCDeclSpec::DQ_Inout; break; case objc_inout: Qual = ObjCDeclSpec::DQ_Inout; break;

View File

@ -1066,7 +1066,7 @@ void RewriteObjC::RewriteProtocolDecl(ObjCProtocolDecl *PDecl) {
void RewriteObjC::RewriteForwardProtocolDecl(ObjCForwardProtocolDecl *PDecl) { void RewriteObjC::RewriteForwardProtocolDecl(ObjCForwardProtocolDecl *PDecl) {
SourceLocation LocStart = PDecl->getLocation(); SourceLocation LocStart = PDecl->getLocation();
if (LocStart.isInvalid()) if (LocStart.isInvalid())
assert(false && "Invalid SourceLocation"); llvm_unreachable("Invalid SourceLocation");
// FIXME: handle forward protocol that are declared across multiple lines. // FIXME: handle forward protocol that are declared across multiple lines.
ReplaceText(LocStart, 0, "// "); ReplaceText(LocStart, 0, "// ");
} }
@ -2063,7 +2063,7 @@ Stmt *RewriteObjC::RewriteObjCTryStmt(ObjCAtTryStmt *S) {
// declares the @catch parameter). // declares the @catch parameter).
ReplaceText(rParenLoc, bodyBuf-rParenBuf+1, " = _caught;"); ReplaceText(rParenLoc, bodyBuf-rParenBuf+1, " = _caught;");
} else { } else {
assert(false && "@catch rewrite bug"); llvm_unreachable("@catch rewrite bug");
} }
} }
// Complete the catch list... // Complete the catch list...
@ -3434,7 +3434,7 @@ void RewriteObjC::SynthesizeObjCInternalStruct(ObjCInterfaceDecl *CDecl,
} }
// Mark this struct as having been generated. // Mark this struct as having been generated.
if (!ObjCSynthesizedStructs.insert(CDecl)) if (!ObjCSynthesizedStructs.insert(CDecl))
assert(false && "struct already synthesize- SynthesizeObjCInternalStruct"); llvm_unreachable("struct already synthesize- SynthesizeObjCInternalStruct");
} }
// RewriteObjCMethodsMetaData - Rewrite methods metadata for instance or // RewriteObjCMethodsMetaData - Rewrite methods metadata for instance or
@ -3655,7 +3655,7 @@ RewriteObjCProtocolMetaData(ObjCProtocolDecl *PDecl, StringRef prefix,
// Mark this protocol as having been generated. // Mark this protocol as having been generated.
if (!ObjCSynthesizedProtocols.insert(PDecl)) if (!ObjCSynthesizedProtocols.insert(PDecl))
assert(false && "protocol already synthesized"); llvm_unreachable("protocol already synthesized");
} }
@ -5048,7 +5048,7 @@ void RewriteObjC::RewriteBlockPointerDecl(NamedDecl *ND) {
else if (FieldDecl *FD = dyn_cast<FieldDecl>(ND)) else if (FieldDecl *FD = dyn_cast<FieldDecl>(ND))
DeclT = FD->getType(); DeclT = FD->getType();
else else
assert(0 && "RewriteBlockPointerDecl(): Decl type not yet handled"); llvm_unreachable("RewriteBlockPointerDecl(): Decl type not yet handled");
const char *startBuf = SM->getCharacterData(DeclLoc); const char *startBuf = SM->getCharacterData(DeclLoc);
const char *endBuf = startBuf; const char *endBuf = startBuf;
@ -5966,7 +5966,7 @@ void RewriteObjC::HandleDeclInMainFile(Decl *D) {
else if (ObjCCategoryImplDecl *CI = dyn_cast<ObjCCategoryImplDecl>(D)) else if (ObjCCategoryImplDecl *CI = dyn_cast<ObjCCategoryImplDecl>(D))
CategoryImplementation.push_back(CI); CategoryImplementation.push_back(CI);
else if (isa<ObjCClassDecl>(D)) else if (isa<ObjCClassDecl>(D))
assert(false && "RewriteObjC::HandleDeclInMainFile - ObjCClassDecl"); llvm_unreachable("RewriteObjC::HandleDeclInMainFile - ObjCClassDecl");
else if (VarDecl *VD = dyn_cast<VarDecl>(D)) { else if (VarDecl *VD = dyn_cast<VarDecl>(D)) {
RewriteObjCQualifiedInterfaceTypes(VD); RewriteObjCQualifiedInterfaceTypes(VD);
if (isTopLevelBlockPointerType(VD->getType())) if (isTopLevelBlockPointerType(VD->getType()))

View File

@ -650,7 +650,7 @@ bool DeclSpec::SetTypeQual(TQ T, SourceLocation Loc, const char *&PrevSpec,
TypeQualifiers |= T; TypeQualifiers |= T;
switch (T) { switch (T) {
default: assert(0 && "Unknown type qualifier!"); default: llvm_unreachable("Unknown type qualifier!");
case TQ_const: TQ_constLoc = Loc; break; case TQ_const: TQ_constLoc = Loc; break;
case TQ_restrict: TQ_restrictLoc = Loc; break; case TQ_restrict: TQ_restrictLoc = Loc; break;
case TQ_volatile: TQ_volatileLoc = Loc; break; case TQ_volatile: TQ_volatileLoc = Loc; break;
@ -948,7 +948,7 @@ bool VirtSpecifiers::SetSpecifier(Specifier VS, SourceLocation Loc,
Specifiers |= VS; Specifiers |= VS;
switch (VS) { switch (VS) {
default: assert(0 && "Unknown specifier!"); default: llvm_unreachable("Unknown specifier!");
case VS_Override: VS_overrideLoc = Loc; break; case VS_Override: VS_overrideLoc = Loc; break;
case VS_Final: VS_finalLoc = Loc; break; case VS_Final: VS_finalLoc = Loc; break;
} }
@ -958,7 +958,7 @@ bool VirtSpecifiers::SetSpecifier(Specifier VS, SourceLocation Loc,
const char *VirtSpecifiers::getSpecifierName(Specifier VS) { const char *VirtSpecifiers::getSpecifierName(Specifier VS) {
switch (VS) { switch (VS) {
default: assert(0 && "Unknown specifier"); default: llvm_unreachable("Unknown specifier");
case VS_Override: return "override"; case VS_Override: return "override";
case VS_Final: return "final"; case VS_Final: return "final";
} }

View File

@ -73,7 +73,7 @@ void IdentifierResolver::IdDeclInfo::RemoveDecl(NamedDecl *D) {
} }
} }
assert(0 && "Didn't find this decl on its identifier's chain!"); llvm_unreachable("Didn't find this decl on its identifier's chain!");
} }
bool bool

View File

@ -265,7 +265,7 @@ void Sema::ActOnPragmaPack(PragmaPackKind Kind, IdentifierInfo *Name,
break; break;
default: default:
assert(0 && "Invalid #pragma pack kind."); llvm_unreachable("Invalid #pragma pack kind.");
} }
} }

View File

@ -137,7 +137,7 @@ DeclContext *Sema::computeDeclContext(const CXXScopeSpec &SS,
switch (NNS->getKind()) { switch (NNS->getKind()) {
case NestedNameSpecifier::Identifier: case NestedNameSpecifier::Identifier:
assert(false && "Dependent nested-name-specifier has no DeclContext"); llvm_unreachable("Dependent nested-name-specifier has no DeclContext");
break; break;
case NestedNameSpecifier::Namespace: case NestedNameSpecifier::Namespace:

View File

@ -548,7 +548,7 @@ Sema::SemaBuiltinAtomicOverloaded(ExprResult TheCallResult) {
unsigned BuiltinID = FDecl->getBuiltinID(); unsigned BuiltinID = FDecl->getBuiltinID();
unsigned BuiltinIndex, NumFixed = 1; unsigned BuiltinIndex, NumFixed = 1;
switch (BuiltinID) { switch (BuiltinID) {
default: assert(0 && "Unknown overloaded atomic builtin!"); default: llvm_unreachable("Unknown overloaded atomic builtin!");
case Builtin::BI__sync_fetch_and_add: BuiltinIndex = 0; break; case Builtin::BI__sync_fetch_and_add: BuiltinIndex = 0; break;
case Builtin::BI__sync_fetch_and_sub: BuiltinIndex = 1; break; case Builtin::BI__sync_fetch_and_sub: BuiltinIndex = 1; break;
case Builtin::BI__sync_fetch_and_or: BuiltinIndex = 2; break; case Builtin::BI__sync_fetch_and_or: BuiltinIndex = 2; break;

View File

@ -3400,7 +3400,7 @@ void Sema::CodeCompleteTag(Scope *S, unsigned TagSpec) {
break; break;
default: default:
assert(false && "Unknown type specifier kind in CodeCompleteTag"); llvm_unreachable("Unknown type specifier kind in CodeCompleteTag");
return; return;
} }

View File

@ -2935,7 +2935,7 @@ Sema::GetNameFromUnqualifiedId(const UnqualifiedId &Name) {
} // switch (Name.getKind()) } // switch (Name.getKind())
assert(false && "Unknown name kind"); llvm_unreachable("Unknown name kind");
return DeclarationNameInfo(); return DeclarationNameInfo();
} }
@ -4360,7 +4360,7 @@ Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC,
DeclarationName Name = NameInfo.getName(); DeclarationName Name = NameInfo.getName();
FunctionDecl::StorageClass SC = SC_None; FunctionDecl::StorageClass SC = SC_None;
switch (D.getDeclSpec().getStorageClassSpec()) { switch (D.getDeclSpec().getStorageClassSpec()) {
default: assert(0 && "Unknown storage class!"); default: llvm_unreachable("Unknown storage class!");
case DeclSpec::SCS_auto: case DeclSpec::SCS_auto:
case DeclSpec::SCS_register: case DeclSpec::SCS_register:
case DeclSpec::SCS_mutable: case DeclSpec::SCS_mutable:
@ -8372,7 +8372,7 @@ void Sema::DiagnoseNontrivial(const RecordType* T, CXXSpecialMember member) {
} }
} }
assert(0 && "found no user-declared constructors"); llvm_unreachable("found no user-declared constructors");
return; return;
} }
break; break;
@ -8458,7 +8458,7 @@ void Sema::DiagnoseNontrivial(const RecordType* T, CXXSpecialMember member) {
case CXXDestructor: case CXXDestructor:
hasTrivial = &CXXRecordDecl::hasTrivialDestructor; break; hasTrivial = &CXXRecordDecl::hasTrivialDestructor; break;
default: default:
assert(0 && "unexpected special member"); return; llvm_unreachable("unexpected special member"); return;
} }
// Check for nontrivial bases (and recurse). // Check for nontrivial bases (and recurse).
@ -8506,7 +8506,7 @@ void Sema::DiagnoseNontrivial(const RecordType* T, CXXSpecialMember member) {
} }
} }
assert(0 && "found no explanation for non-trivial member"); llvm_unreachable("found no explanation for non-trivial member");
} }
/// TranslateIvarVisibility - Translate visibility from a token ID to an /// TranslateIvarVisibility - Translate visibility from a token ID to an
@ -8514,7 +8514,7 @@ void Sema::DiagnoseNontrivial(const RecordType* T, CXXSpecialMember member) {
static ObjCIvarDecl::AccessControl static ObjCIvarDecl::AccessControl
TranslateIvarVisibility(tok::ObjCKeywordKind ivarVisibility) { TranslateIvarVisibility(tok::ObjCKeywordKind ivarVisibility) {
switch (ivarVisibility) { switch (ivarVisibility) {
default: assert(0 && "Unknown visitibility kind"); default: llvm_unreachable("Unknown visitibility kind");
case tok::objc_private: return ObjCIvarDecl::Private; case tok::objc_private: return ObjCIvarDecl::Private;
case tok::objc_public: return ObjCIvarDecl::Public; case tok::objc_public: return ObjCIvarDecl::Public;
case tok::objc_protected: return ObjCIvarDecl::Protected; case tok::objc_protected: return ObjCIvarDecl::Protected;

View File

@ -3205,7 +3205,7 @@ static void handleNSReturnsRetainedAttr(Sema &S, Decl *D,
switch (Attr.getKind()) { switch (Attr.getKind()) {
default: default:
assert(0 && "invalid ownership attribute"); llvm_unreachable("invalid ownership attribute");
return; return;
case AttributeList::AT_ns_returns_autoreleased: case AttributeList::AT_ns_returns_autoreleased:
D->addAttr(::new (S.Context) NSReturnsAutoreleasedAttr(Attr.getRange(), D->addAttr(::new (S.Context) NSReturnsAutoreleasedAttr(Attr.getRange(),

View File

@ -9977,7 +9977,7 @@ void Sema::SetDeclDefaulted(Decl *Dcl, SourceLocation DefaultLoc) {
} }
case CXXInvalid: case CXXInvalid:
assert(false && "Invalid special member."); llvm_unreachable("Invalid special member.");
break; break;
} }
} else { } else {

View File

@ -1664,7 +1664,7 @@ void Sema::ImplMethodsVsClassMethods(Scope *S, ObjCImplDecl* IMPDecl,
DiagnoseUnimplementedProperties(S, IMPDecl, CDecl, InsMap); DiagnoseUnimplementedProperties(S, IMPDecl, CDecl, InsMap);
} }
} else } else
assert(false && "invalid ObjCContainerDecl type."); llvm_unreachable("invalid ObjCContainerDecl type.");
} }
/// ActOnForwardClassDeclaration - /// ActOnForwardClassDeclaration -

View File

@ -223,7 +223,7 @@ bool Sema::CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *New) {
break; break;
default: default:
assert(false && "This spec type is compatible with none."); llvm_unreachable("This spec type is compatible with none.");
} }
OS.flush(); OS.flush();

View File

@ -2390,7 +2390,7 @@ ExprResult Sema::ActOnPredefinedExpr(SourceLocation Loc, tok::TokenKind Kind) {
PredefinedExpr::IdentType IT; PredefinedExpr::IdentType IT;
switch (Kind) { switch (Kind) {
default: assert(0 && "Unknown simple primary expr!"); default: llvm_unreachable("Unknown simple primary expr!");
case tok::kw___func__: IT = PredefinedExpr::Func; break; // [C99 6.4.2.2] case tok::kw___func__: IT = PredefinedExpr::Func; break; // [C99 6.4.2.2]
case tok::kw___FUNCTION__: IT = PredefinedExpr::Function; break; case tok::kw___FUNCTION__: IT = PredefinedExpr::Function; break;
case tok::kw___PRETTY_FUNCTION__: IT = PredefinedExpr::PrettyFunction; break; case tok::kw___PRETTY_FUNCTION__: IT = PredefinedExpr::PrettyFunction; break;
@ -2952,7 +2952,7 @@ Sema::ActOnPostfixUnaryOp(Scope *S, SourceLocation OpLoc,
tok::TokenKind Kind, Expr *Input) { tok::TokenKind Kind, Expr *Input) {
UnaryOperatorKind Opc; UnaryOperatorKind Opc;
switch (Kind) { switch (Kind) {
default: assert(0 && "Unknown unary op!"); default: llvm_unreachable("Unknown unary op!");
case tok::plusplus: Opc = UO_PostInc; break; case tok::plusplus: Opc = UO_PostInc; break;
case tok::minusminus: Opc = UO_PostDec; break; case tok::minusminus: Opc = UO_PostDec; break;
} }
@ -6511,7 +6511,7 @@ QualType Sema::CheckCompareOperands(ExprResult &LHS, ExprResult &RHS,
case BO_GE: resultComparison = ") >= 0"; break; case BO_GE: resultComparison = ") >= 0"; break;
case BO_EQ: resultComparison = ") == 0"; break; case BO_EQ: resultComparison = ") == 0"; break;
case BO_NE: resultComparison = ") != 0"; break; case BO_NE: resultComparison = ") != 0"; break;
default: assert(false && "Invalid comparison operator"); default: llvm_unreachable("Invalid comparison operator");
} }
DiagRuntimeBehavior(Loc, 0, DiagRuntimeBehavior(Loc, 0,
@ -7593,7 +7593,7 @@ static QualType CheckAddressOfOperand(Sema &S, Expr *OrigOp,
} }
} }
} else if (!isa<FunctionDecl>(dcl) && !isa<NonTypeTemplateParmDecl>(dcl)) } else if (!isa<FunctionDecl>(dcl) && !isa<NonTypeTemplateParmDecl>(dcl))
assert(0 && "Unknown/unexpected decl type"); llvm_unreachable("Unknown/unexpected decl type");
} }
if (AddressOfError != AO_No_Error) { if (AddressOfError != AO_No_Error) {
@ -7669,7 +7669,7 @@ static inline BinaryOperatorKind ConvertTokenKindToBinaryOpcode(
tok::TokenKind Kind) { tok::TokenKind Kind) {
BinaryOperatorKind Opc; BinaryOperatorKind Opc;
switch (Kind) { switch (Kind) {
default: assert(0 && "Unknown binop!"); default: llvm_unreachable("Unknown binop!");
case tok::periodstar: Opc = BO_PtrMemD; break; case tok::periodstar: Opc = BO_PtrMemD; break;
case tok::arrowstar: Opc = BO_PtrMemI; break; case tok::arrowstar: Opc = BO_PtrMemI; break;
case tok::star: Opc = BO_Mul; break; case tok::star: Opc = BO_Mul; break;
@ -7710,7 +7710,7 @@ static inline UnaryOperatorKind ConvertTokenKindToUnaryOpcode(
tok::TokenKind Kind) { tok::TokenKind Kind) {
UnaryOperatorKind Opc; UnaryOperatorKind Opc;
switch (Kind) { switch (Kind) {
default: assert(0 && "Unknown unary op!"); default: llvm_unreachable("Unknown unary op!");
case tok::plusplus: Opc = UO_PreInc; break; case tok::plusplus: Opc = UO_PreInc; break;
case tok::minusminus: Opc = UO_PreDec; break; case tok::minusminus: Opc = UO_PreDec; break;
case tok::amp: Opc = UO_AddrOf; break; case tok::amp: Opc = UO_AddrOf; break;
@ -8941,7 +8941,7 @@ ExprResult Sema::ActOnGNUNullExpr(SourceLocation TokenLoc) {
else if (pw == Context.getTargetInfo().getLongLongWidth()) else if (pw == Context.getTargetInfo().getLongLongWidth())
Ty = Context.LongLongTy; Ty = Context.LongLongTy;
else { else {
assert(0 && "I don't know size of pointer!"); llvm_unreachable("I don't know size of pointer!");
Ty = Context.IntTy; Ty = Context.IntTy;
} }
@ -8990,7 +8990,7 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy,
bool MayHaveConvFixit = false; bool MayHaveConvFixit = false;
switch (ConvTy) { switch (ConvTy) {
default: assert(0 && "Unknown conversion type"); default: llvm_unreachable("Unknown conversion type");
case Compatible: return false; case Compatible: return false;
case PointerToInt: case PointerToInt:
DiagKind = diag::ext_typecheck_convert_pointer_int; DiagKind = diag::ext_typecheck_convert_pointer_int;

View File

@ -1525,7 +1525,7 @@ bool Sema::FindAllocationOverload(SourceLocation StartLoc, SourceRange Range,
return true; return true;
} }
} }
assert(false && "Unreachable, bad result from BestViableFunction"); llvm_unreachable("Unreachable, bad result from BestViableFunction");
return true; return true;
} }
@ -2068,7 +2068,7 @@ static ExprResult BuildCXXCastArgument(Sema &S,
DeclAccessPair FoundDecl, DeclAccessPair FoundDecl,
Expr *From) { Expr *From) {
switch (Kind) { switch (Kind) {
default: assert(0 && "Unhandled cast kind!"); default: llvm_unreachable("Unhandled cast kind!");
case CK_ConstructorConversion: { case CK_ConstructorConversion: {
ASTOwningVector<Expr*> ConstructorArgs(S); ASTOwningVector<Expr*> ConstructorArgs(S);
@ -2181,7 +2181,7 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType,
return ExprError(); return ExprError();
case ImplicitConversionSequence::EllipsisConversion: case ImplicitConversionSequence::EllipsisConversion:
assert(false && "Cannot perform an ellipsis conversion"); llvm_unreachable("Cannot perform an ellipsis conversion");
return Owned(From); return Owned(From);
case ImplicitConversionSequence::BadConversion: case ImplicitConversionSequence::BadConversion:
@ -2284,7 +2284,7 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType,
break; break;
default: default:
assert(false && "Improper first standard conversion"); llvm_unreachable("Improper first standard conversion");
break; break;
} }
@ -2524,7 +2524,7 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType,
case ICK_Function_To_Pointer: case ICK_Function_To_Pointer:
case ICK_Qualification: case ICK_Qualification:
case ICK_Num_Conversion_Kinds: case ICK_Num_Conversion_Kinds:
assert(false && "Improper second standard conversion"); llvm_unreachable("Improper second standard conversion");
break; break;
} }
@ -2550,7 +2550,7 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType,
} }
default: default:
assert(false && "Improper third standard conversion"); llvm_unreachable("Improper third standard conversion");
break; break;
} }
@ -3560,7 +3560,7 @@ static bool FindConditionalOverload(Sema &Self, ExprResult &LHS, ExprResult &RHS
break; break;
case OR_Deleted: case OR_Deleted:
assert(false && "Conditional operator has only built-in overloads"); llvm_unreachable("Conditional operator has only built-in overloads");
break; break;
} }
return true; return true;

View File

@ -512,7 +512,7 @@ void InitListChecker::CheckImplicitInitList(const InitializedEntity &Entity,
else if (T->isVectorType()) else if (T->isVectorType())
maxElements = T->getAs<VectorType>()->getNumElements(); maxElements = T->getAs<VectorType>()->getNumElements();
else else
assert(0 && "CheckImplicitInitList(): Illegal type"); llvm_unreachable("CheckImplicitInitList(): Illegal type");
if (maxElements == 0) { if (maxElements == 0) {
SemaRef.Diag(ParentIList->getInit(Index)->getLocStart(), SemaRef.Diag(ParentIList->getInit(Index)->getLocStart(),
@ -656,7 +656,7 @@ void InitListChecker::CheckListElementTypes(const InitializedEntity &Entity,
SubobjectIsDesignatorContext, Index, SubobjectIsDesignatorContext, Index,
StructuredList, StructuredIndex); StructuredList, StructuredIndex);
} else } else
assert(0 && "Aggregate that isn't a structure or array?!"); llvm_unreachable("Aggregate that isn't a structure or array?!");
} else if (DeclType->isVoidType() || DeclType->isFunctionType()) { } else if (DeclType->isVoidType() || DeclType->isFunctionType()) {
// This type is invalid, issue a diagnostic. // This type is invalid, issue a diagnostic.
++Index; ++Index;

View File

@ -4657,7 +4657,7 @@ Sema::AddConversionCandidate(CXXConversionDecl *Conversion,
break; break;
default: default:
assert(false && llvm_unreachable(
"Can only end up with a standard conversion sequence or failure"); "Can only end up with a standard conversion sequence or failure");
} }
} }
@ -5039,7 +5039,7 @@ BuiltinCandidateTypeSet::AddPointerWithMoreQualifiedTypeVariants(QualType Ty,
buildObjCPtr = true; buildObjCPtr = true;
} }
else else
assert(false && "type was not a pointer type!"); llvm_unreachable("type was not a pointer type!");
} }
else else
PointeeTy = PointerTy->getPointeeType(); PointeeTy = PointerTy->getPointeeType();
@ -6333,7 +6333,7 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
switch (Op) { switch (Op) {
case OO_None: case OO_None:
case NUM_OVERLOADED_OPERATORS: case NUM_OVERLOADED_OPERATORS:
assert(false && "Expected an overloaded operator"); llvm_unreachable("Expected an overloaded operator");
break; break;
case OO_New: case OO_New:
@ -6341,7 +6341,8 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
case OO_Array_New: case OO_Array_New:
case OO_Array_Delete: case OO_Array_Delete:
case OO_Call: case OO_Call:
assert(false && "Special operators don't use AddBuiltinOperatorCandidates"); llvm_unreachable(
"Special operators don't use AddBuiltinOperatorCandidates");
break; break;
case OO_Comma: case OO_Comma:
@ -7310,7 +7311,7 @@ static unsigned
RankDeductionFailure(const OverloadCandidate::DeductionFailureInfo &DFI) { RankDeductionFailure(const OverloadCandidate::DeductionFailureInfo &DFI) {
switch ((Sema::TemplateDeductionResult)DFI.Result) { switch ((Sema::TemplateDeductionResult)DFI.Result) {
case Sema::TDK_Success: case Sema::TDK_Success:
assert(0 && "TDK_success while diagnosing bad deduction"); llvm_unreachable("TDK_success while diagnosing bad deduction");
case Sema::TDK_Incomplete: case Sema::TDK_Incomplete:
return 1; return 1;
@ -8368,7 +8369,7 @@ Sema::BuildOverloadedCallExpr(Scope *S, Expr *Fn, UnresolvedLookupExpr *ULE,
if (ULE->decls_begin() + 1 == ULE->decls_end() && if (ULE->decls_begin() + 1 == ULE->decls_end() &&
(F = dyn_cast<FunctionDecl>(*ULE->decls_begin())) && (F = dyn_cast<FunctionDecl>(*ULE->decls_begin())) &&
F->getBuiltinID() && F->isImplicit()) F->getBuiltinID() && F->isImplicit())
assert(0 && "performing ADL for builtin"); llvm_unreachable("performing ADL for builtin");
// We don't perform ADL in C. // We don't perform ADL in C.
assert(getLangOptions().CPlusPlus && "ADL enabled in C"); assert(getLangOptions().CPlusPlus && "ADL enabled in C");

View File

@ -1387,7 +1387,7 @@ Sema::BuildCXXForRangeStmt(SourceLocation ForLoc, SourceLocation ColonLoc,
else { else {
// Can't be a DependentSizedArrayType or an IncompleteArrayType since // Can't be a DependentSizedArrayType or an IncompleteArrayType since
// UnqAT is not incomplete and Range is not type-dependent. // UnqAT is not incomplete and Range is not type-dependent.
assert(0 && "Unexpected array type in for-range"); llvm_unreachable("Unexpected array type in for-range");
return StmtError(); return StmtError();
} }

View File

@ -2323,7 +2323,8 @@ TemplateNameKind Sema::ActOnDependentTemplateName(Scope *S,
return TNK_Dependent_template_name; return TNK_Dependent_template_name;
case UnqualifiedId::IK_LiteralOperatorId: case UnqualifiedId::IK_LiteralOperatorId:
assert(false && "We don't support these; Parse shouldn't have allowed propagation"); llvm_unreachable(
"We don't support these; Parse shouldn't have allowed propagation");
default: default:
break; break;
@ -2681,7 +2682,7 @@ bool Sema::CheckTemplateArgument(NamedDecl *Param,
switch (Arg.getArgument().getKind()) { switch (Arg.getArgument().getKind()) {
case TemplateArgument::Null: case TemplateArgument::Null:
assert(false && "Should never see a NULL template argument here"); llvm_unreachable("Should never see a NULL template argument here");
return true; return true;
case TemplateArgument::Expression: { case TemplateArgument::Expression: {
@ -2804,7 +2805,7 @@ bool Sema::CheckTemplateArgument(NamedDecl *Param,
switch (Arg.getArgument().getKind()) { switch (Arg.getArgument().getKind()) {
case TemplateArgument::Null: case TemplateArgument::Null:
assert(false && "Should never see a NULL template argument here"); llvm_unreachable("Should never see a NULL template argument here");
return true; return true;
case TemplateArgument::Template: case TemplateArgument::Template:
@ -5216,7 +5217,7 @@ Sema::CheckSpecializationInstantiationRedecl(SourceLocation NewLoc,
switch (NewTSK) { switch (NewTSK) {
case TSK_Undeclared: case TSK_Undeclared:
case TSK_ImplicitInstantiation: case TSK_ImplicitInstantiation:
assert(false && "Don't check implicit instantiations here"); llvm_unreachable("Don't check implicit instantiations here");
return false; return false;
case TSK_ExplicitSpecialization: case TSK_ExplicitSpecialization:
@ -5349,7 +5350,7 @@ Sema::CheckSpecializationInstantiationRedecl(SourceLocation NewLoc,
break; break;
} }
assert(false && "Missing specialization/instantiation case?"); llvm_unreachable("Missing specialization/instantiation case?");
return false; return false;
} }

View File

@ -1539,7 +1539,7 @@ DeduceTemplateArguments(Sema &S,
switch (Param.getKind()) { switch (Param.getKind()) {
case TemplateArgument::Null: case TemplateArgument::Null:
assert(false && "Null template argument in parameter list"); llvm_unreachable("Null template argument in parameter list");
break; break;
case TemplateArgument::Type: case TemplateArgument::Type:
@ -1830,7 +1830,7 @@ static bool isSameTemplateArg(ASTContext &Context,
switch (X.getKind()) { switch (X.getKind()) {
case TemplateArgument::Null: case TemplateArgument::Null:
assert(false && "Comparing NULL template argument"); llvm_unreachable("Comparing NULL template argument");
break; break;
case TemplateArgument::Type: case TemplateArgument::Type:

View File

@ -96,7 +96,7 @@ void Sema::InstantiateAttrs(const MultiLevelTemplateArgumentList &TemplateArgs,
Decl * Decl *
TemplateDeclInstantiator::VisitTranslationUnitDecl(TranslationUnitDecl *D) { TemplateDeclInstantiator::VisitTranslationUnitDecl(TranslationUnitDecl *D) {
assert(false && "Translation units cannot be instantiated"); llvm_unreachable("Translation units cannot be instantiated");
return D; return D;
} }
@ -110,7 +110,7 @@ TemplateDeclInstantiator::VisitLabelDecl(LabelDecl *D) {
Decl * Decl *
TemplateDeclInstantiator::VisitNamespaceDecl(NamespaceDecl *D) { TemplateDeclInstantiator::VisitNamespaceDecl(NamespaceDecl *D) {
assert(false && "Namespaces cannot be instantiated"); llvm_unreachable("Namespaces cannot be instantiated");
return D; return D;
} }
@ -701,7 +701,7 @@ Decl *TemplateDeclInstantiator::VisitEnumDecl(EnumDecl *D) {
} }
Decl *TemplateDeclInstantiator::VisitEnumConstantDecl(EnumConstantDecl *D) { Decl *TemplateDeclInstantiator::VisitEnumConstantDecl(EnumConstantDecl *D) {
assert(false && "EnumConstantDecls can only occur within EnumDecls."); llvm_unreachable("EnumConstantDecls can only occur within EnumDecls.");
return 0; return 0;
} }
@ -3308,7 +3308,7 @@ void Sema::PerformPendingInstantiations(bool LocalOnly) {
// and removed the need for implicit instantiation. // and removed the need for implicit instantiation.
switch (Var->getMostRecentDeclaration()->getTemplateSpecializationKind()) { switch (Var->getMostRecentDeclaration()->getTemplateSpecializationKind()) {
case TSK_Undeclared: case TSK_Undeclared:
assert(false && "Cannot instantitiate an undeclared specialization."); llvm_unreachable("Cannot instantitiate an undeclared specialization.");
case TSK_ExplicitInstantiationDeclaration: case TSK_ExplicitInstantiationDeclaration:
case TSK_ExplicitSpecialization: case TSK_ExplicitSpecialization:
continue; // No longer need to instantiate this type. continue; // No longer need to instantiate this type.

View File

@ -1750,7 +1750,7 @@ static QualType GetDeclSpecTypeForDeclarator(TypeProcessingState &state,
switch (D.getContext()) { switch (D.getContext()) {
case Declarator::KNRTypeListContext: case Declarator::KNRTypeListContext:
assert(0 && "K&R type lists aren't allowed in C++"); llvm_unreachable("K&R type lists aren't allowed in C++");
break; break;
case Declarator::ObjCPrototypeContext: case Declarator::ObjCPrototypeContext:
case Declarator::PrototypeContext: case Declarator::PrototypeContext:
@ -1760,7 +1760,7 @@ static QualType GetDeclSpecTypeForDeclarator(TypeProcessingState &state,
if (D.getDeclSpec().getStorageClassSpec() == DeclSpec::SCS_static) if (D.getDeclSpec().getStorageClassSpec() == DeclSpec::SCS_static)
break; break;
switch (cast<TagDecl>(SemaRef.CurContext)->getTagKind()) { switch (cast<TagDecl>(SemaRef.CurContext)->getTagKind()) {
case TTK_Enum: assert(0 && "unhandled tag kind"); break; case TTK_Enum: llvm_unreachable("unhandled tag kind"); break;
case TTK_Struct: Error = 1; /* Struct member */ break; case TTK_Struct: Error = 1; /* Struct member */ break;
case TTK_Union: Error = 2; /* Union member */ break; case TTK_Union: Error = 2; /* Union member */ break;
case TTK_Class: Error = 3; /* Class member */ break; case TTK_Class: Error = 3; /* Class member */ break;
@ -1921,7 +1921,7 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state,
state.setCurrentChunkIndex(chunkIndex); state.setCurrentChunkIndex(chunkIndex);
DeclaratorChunk &DeclType = D.getTypeObject(chunkIndex); DeclaratorChunk &DeclType = D.getTypeObject(chunkIndex);
switch (DeclType.Kind) { switch (DeclType.Kind) {
default: assert(0 && "Unknown decltype!"); default: llvm_unreachable("Unknown decltype!");
case DeclaratorChunk::Paren: case DeclaratorChunk::Paren:
T = S.BuildParenType(T); T = S.BuildParenType(T);
break; break;
@ -3035,7 +3035,7 @@ ParsedType Sema::CreateParsedType(QualType T, TypeSourceInfo *TInfo) {
void LocInfoType::getAsStringInternal(std::string &Str, void LocInfoType::getAsStringInternal(std::string &Str,
const PrintingPolicy &Policy) const { const PrintingPolicy &Policy) const {
assert(false && "LocInfoType leaked into the type system; an opaque TypeTy*" llvm_unreachable("LocInfoType leaked into the type system; an opaque TypeTy*"
" was used directly instead of getting the QualType through" " was used directly instead of getting the QualType through"
" GetTypeFromParser"); " GetTypeFromParser");
} }

View File

@ -1728,7 +1728,7 @@ public:
SubExpr, RParenLoc); SubExpr, RParenLoc);
default: default:
assert(false && "Invalid C++ named cast"); llvm_unreachable("Invalid C++ named cast");
break; break;
} }
@ -2681,7 +2681,7 @@ TreeTransform<Derived>
} }
} }
assert(0 && "Unknown name kind."); llvm_unreachable("Unknown name kind.");
return DeclarationNameInfo(); return DeclarationNameInfo();
} }
@ -8049,7 +8049,7 @@ TreeTransform<Derived>::TransformBlockDeclRefExpr(BlockDeclRefExpr *E) {
template<typename Derived> template<typename Derived>
ExprResult ExprResult
TreeTransform<Derived>::TransformAsTypeExpr(AsTypeExpr *E) { TreeTransform<Derived>::TransformAsTypeExpr(AsTypeExpr *E) {
assert(false && "Cannot transform asType expressions yet"); llvm_unreachable("Cannot transform asType expressions yet");
return SemaRef.Owned(E); return SemaRef.Owned(E);
} }

View File

@ -4993,7 +4993,7 @@ ASTReader::ReadTemplateName(Module &F, const RecordData &Record,
} }
} }
assert(0 && "Unhandled template name kind!"); llvm_unreachable("Unhandled template name kind!");
return TemplateName(); return TemplateName();
} }
@ -5033,7 +5033,7 @@ ASTReader::ReadTemplateArgument(Module &F,
} }
} }
assert(0 && "Unhandled template argument kind!"); llvm_unreachable("Unhandled template argument kind!");
return TemplateArgument(); return TemplateArgument();
} }

View File

@ -345,7 +345,7 @@ void ASTDeclReader::VisitFunctionDecl(FunctionDecl *FD) {
ReadDeclarationNameLoc(FD->DNLoc, FD->getDeclName(), Record, Idx); ReadDeclarationNameLoc(FD->DNLoc, FD->getDeclName(), Record, Idx);
FD->IdentifierNamespace = Record[Idx++]; FD->IdentifierNamespace = Record[Idx++];
switch ((FunctionDecl::TemplatedKind)Record[Idx++]) { switch ((FunctionDecl::TemplatedKind)Record[Idx++]) {
default: assert(false && "Unhandled TemplatedKind!"); default: llvm_unreachable("Unhandled TemplatedKind!");
break; break;
case FunctionDecl::TK_NonTemplate: case FunctionDecl::TK_NonTemplate:
break; break;
@ -955,7 +955,7 @@ void ASTDeclReader::VisitCXXRecordDecl(CXXRecordDecl *D) {
}; };
switch ((CXXRecKind)Record[Idx++]) { switch ((CXXRecKind)Record[Idx++]) {
default: default:
assert(false && "Out of sync with ASTDeclWriter::VisitCXXRecordDecl?"); llvm_unreachable("Out of sync with ASTDeclWriter::VisitCXXRecordDecl?");
case CXXRecNotTemplate: case CXXRecNotTemplate:
break; break;
case CXXRecTemplate: case CXXRecTemplate:
@ -1306,8 +1306,8 @@ void ASTDeclReader::VisitRedeclarable(Redeclarable<T> *D) {
RedeclKind Kind = (RedeclKind)Record[Idx++]; RedeclKind Kind = (RedeclKind)Record[Idx++];
switch (Kind) { switch (Kind) {
default: default:
assert(0 && "Out of sync with ASTDeclWriter::VisitRedeclarable or messed up" llvm_unreachable("Out of sync with ASTDeclWriter::VisitRedeclarable or"
" reading"); " messed up reading");
case NoRedeclaration: case NoRedeclaration:
break; break;
case PointsToPrevious: { case PointsToPrevious: {
@ -1480,7 +1480,7 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) {
switch ((DeclCode)DeclsCursor.ReadRecord(Code, Record)) { switch ((DeclCode)DeclsCursor.ReadRecord(Code, Record)) {
case DECL_CONTEXT_LEXICAL: case DECL_CONTEXT_LEXICAL:
case DECL_CONTEXT_VISIBLE: case DECL_CONTEXT_VISIBLE:
assert(false && "Record cannot be de-serialized with ReadDeclRecord"); llvm_unreachable("Record cannot be de-serialized with ReadDeclRecord");
break; break;
case DECL_TYPEDEF: case DECL_TYPEDEF:
D = TypedefDecl::Create(Context, 0, SourceLocation(), SourceLocation(), D = TypedefDecl::Create(Context, 0, SourceLocation(), SourceLocation(),

View File

@ -91,7 +91,7 @@ namespace {
} }
void ASTTypeWriter::VisitBuiltinType(const BuiltinType *T) { void ASTTypeWriter::VisitBuiltinType(const BuiltinType *T) {
assert(false && "Built-in types are never serialized"); llvm_unreachable("Built-in types are never serialized");
} }
void ASTTypeWriter::VisitComplexType(const ComplexType *T) { void ASTTypeWriter::VisitComplexType(const ComplexType *T) {
@ -305,7 +305,7 @@ void
ASTTypeWriter::VisitDependentSizedExtVectorType( ASTTypeWriter::VisitDependentSizedExtVectorType(
const DependentSizedExtVectorType *T) { const DependentSizedExtVectorType *T) {
// FIXME: Serialize this type (C++ only) // FIXME: Serialize this type (C++ only)
assert(false && "Cannot serialize dependent sized extended vector types"); llvm_unreachable("Cannot serialize dependent sized extended vector types");
} }
void void

View File

@ -295,7 +295,7 @@ void ASTDeclWriter::VisitFunctionDecl(FunctionDecl *D) {
Record.push_back(D->getIdentifierNamespace()); Record.push_back(D->getIdentifierNamespace());
Record.push_back(D->getTemplatedKind()); Record.push_back(D->getTemplatedKind());
switch (D->getTemplatedKind()) { switch (D->getTemplatedKind()) {
default: assert(false && "Unhandled TemplatedKind!"); default: llvm_unreachable("Unhandled TemplatedKind!");
break; break;
case FunctionDecl::TK_NonTemplate: case FunctionDecl::TK_NonTemplate:
break; break;

View File

@ -1440,7 +1440,7 @@ void ASTWriter::WriteSubStmt(Stmt *S) {
SourceManager &SrcMgr SourceManager &SrcMgr
= DeclIDs.begin()->first->getASTContext().getSourceManager(); = DeclIDs.begin()->first->getASTContext().getSourceManager();
S->dump(SrcMgr); S->dump(SrcMgr);
assert(0 && "Unhandled sub statement writing AST file"); llvm_unreachable("Unhandled sub statement writing AST file");
} }
#endif #endif

Some files were not shown because too many files have changed in this diff Show More