mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-04 08:16:49 +00:00
Remove unnecessary default cases in switches over enums.
This allows -Wswitch-enum to find switches that need updating when these enums are modified. llvm-svn: 148281
This commit is contained in:
parent
5c93906cbf
commit
f47fa304a4
@ -30,12 +30,12 @@ class DeclVisitor {
|
||||
public:
|
||||
RetTy Visit(Decl *D) {
|
||||
switch (D->getKind()) {
|
||||
default: llvm_unreachable("Decl that isn't part of DeclNodes.inc!");
|
||||
#define DECL(DERIVED, BASE) \
|
||||
case Decl::DERIVED: DISPATCH(DERIVED##Decl, DERIVED##Decl);
|
||||
#define ABSTRACT_DECL(DECL)
|
||||
#include "clang/AST/DeclNodes.inc"
|
||||
}
|
||||
llvm_unreachable("Decl that isn't part of DeclNodes.inc!");
|
||||
}
|
||||
|
||||
// If the implementation chooses not to implement a certain visit
|
||||
|
@ -1357,8 +1357,6 @@ bool RecursiveASTVisitor<Derived>::TraverseFunctionInstantiations(
|
||||
case TSK_Undeclared: // Declaration of the template definition.
|
||||
case TSK_ExplicitSpecialization:
|
||||
break;
|
||||
default:
|
||||
llvm_unreachable("Unknown specialization kind.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,6 @@ public:
|
||||
// below.
|
||||
if (PTR(BinaryOperator) BinOp = dyn_cast<BinaryOperator>(S)) {
|
||||
switch (BinOp->getOpcode()) {
|
||||
default: llvm_unreachable("Unknown binary operator!");
|
||||
case BO_PtrMemD: DISPATCH(BinPtrMemD, BinaryOperator);
|
||||
case BO_PtrMemI: DISPATCH(BinPtrMemI, BinaryOperator);
|
||||
case BO_Mul: DISPATCH(BinMul, BinaryOperator);
|
||||
@ -80,7 +79,6 @@ public:
|
||||
}
|
||||
} else if (PTR(UnaryOperator) UnOp = dyn_cast<UnaryOperator>(S)) {
|
||||
switch (UnOp->getOpcode()) {
|
||||
default: llvm_unreachable("Unknown unary operator!");
|
||||
case UO_PostInc: DISPATCH(UnaryPostInc, UnaryOperator);
|
||||
case UO_PostDec: DISPATCH(UnaryPostDec, UnaryOperator);
|
||||
case UO_PreInc: DISPATCH(UnaryPreInc, UnaryOperator);
|
||||
|
@ -28,11 +28,11 @@ public:
|
||||
RetTy Visit(const Type *T) {
|
||||
// Top switch stmt: dispatch to VisitFooType for each FooType.
|
||||
switch (T->getTypeClass()) {
|
||||
default: llvm_unreachable("Unknown type class!");
|
||||
#define ABSTRACT_TYPE(CLASS, PARENT)
|
||||
#define TYPE(CLASS, PARENT) case Type::CLASS: DISPATCH(CLASS##Type);
|
||||
#include "clang/AST/TypeNodes.def"
|
||||
}
|
||||
llvm_unreachable("Unknown type class!");
|
||||
}
|
||||
|
||||
// If the implementation chooses not to implement a certain visit method, fall
|
||||
|
@ -1250,7 +1250,6 @@ struct DeclaratorChunk {
|
||||
|
||||
void destroy() {
|
||||
switch (Kind) {
|
||||
default: llvm_unreachable("Unknown decl type!");
|
||||
case DeclaratorChunk::Function: return Fun.destroy();
|
||||
case DeclaratorChunk::Pointer: return Ptr.destroy();
|
||||
case DeclaratorChunk::BlockPointer: return Cls.destroy();
|
||||
|
@ -3569,7 +3569,7 @@ QualType ASTContext::getFloatingTypeOfSizeWithinDomain(QualType Size,
|
||||
FloatingRank EltRank = getFloatingRank(Size);
|
||||
if (Domain->isComplexType()) {
|
||||
switch (EltRank) {
|
||||
default: llvm_unreachable("getFloatingRank(): illegal value for rank");
|
||||
case HalfRank: llvm_unreachable("Complex half is not supported");
|
||||
case FloatRank: return FloatComplexTy;
|
||||
case DoubleRank: return DoubleComplexTy;
|
||||
case LongDoubleRank: return LongDoubleComplexTy;
|
||||
@ -3578,11 +3578,12 @@ QualType ASTContext::getFloatingTypeOfSizeWithinDomain(QualType Size,
|
||||
|
||||
assert(Domain->isRealFloatingType() && "Unknown domain!");
|
||||
switch (EltRank) {
|
||||
default: llvm_unreachable("getFloatingRank(): illegal value for rank");
|
||||
case HalfRank: llvm_unreachable("Half ranks are not valid here");
|
||||
case FloatRank: return FloatTy;
|
||||
case DoubleRank: return DoubleTy;
|
||||
case LongDoubleRank: return LongDoubleTy;
|
||||
}
|
||||
llvm_unreachable("getFloatingRank(): illegal value for rank");
|
||||
}
|
||||
|
||||
/// getFloatingTypeOrder - Compare the rank of the two specified floating
|
||||
|
@ -119,7 +119,6 @@ void Decl::PrintStats() {
|
||||
|
||||
void Decl::add(Kind k) {
|
||||
switch (k) {
|
||||
default: llvm_unreachable("Declaration not in DeclNodes.inc!");
|
||||
#define DECL(DERIVED, BASE) case DERIVED: ++n##DERIVED##s; break;
|
||||
#define ABSTRACT_DECL(DECL)
|
||||
#include "clang/AST/DeclNodes.inc"
|
||||
|
@ -1941,7 +1941,6 @@ StaticAssertDecl *StaticAssertDecl::CreateDeserialized(ASTContext &C,
|
||||
|
||||
static const char *getAccessName(AccessSpecifier AS) {
|
||||
switch (AS) {
|
||||
default:
|
||||
case AS_none:
|
||||
llvm_unreachable("Invalid access specifier!");
|
||||
case AS_public:
|
||||
@ -1951,6 +1950,7 @@ static const char *getAccessName(AccessSpecifier AS) {
|
||||
case AS_protected:
|
||||
return "protected";
|
||||
}
|
||||
llvm_unreachable("Invalid access specifier!");
|
||||
}
|
||||
|
||||
const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB,
|
||||
|
@ -66,7 +66,6 @@ template <class Impl> struct XMLDeclVisitor {
|
||||
|
||||
void dispatch(Decl *D) {
|
||||
switch (D->getKind()) {
|
||||
default: llvm_unreachable("Decl that isn't part of DeclNodes.inc!");
|
||||
#define DECL(DERIVED, BASE) \
|
||||
case Decl::DERIVED: \
|
||||
DISPATCH(dispatch##DERIVED##DeclAttrs, DERIVED##Decl); \
|
||||
@ -121,7 +120,6 @@ template <class Impl> struct XMLTypeVisitor {
|
||||
|
||||
void dispatch(Type *T) {
|
||||
switch (T->getTypeClass()) {
|
||||
default: llvm_unreachable("Type that isn't part of TypeNodes.inc!");
|
||||
#define TYPE(DERIVED, BASE) \
|
||||
case Type::DERIVED: \
|
||||
DISPATCH(dispatch##DERIVED##TypeAttrs, DERIVED##Type); \
|
||||
|
@ -652,7 +652,6 @@ getLocationOfByte(unsigned ByteNo, const SourceManager &SM,
|
||||
/// corresponds to, e.g. "sizeof" or "[pre]++".
|
||||
const char *UnaryOperator::getOpcodeStr(Opcode Op) {
|
||||
switch (Op) {
|
||||
default: llvm_unreachable("Unknown unary operator");
|
||||
case UO_PostInc: return "++";
|
||||
case UO_PostDec: return "--";
|
||||
case UO_PreInc: return "++";
|
||||
@ -667,6 +666,7 @@ const char *UnaryOperator::getOpcodeStr(Opcode Op) {
|
||||
case UO_Imag: return "__imag";
|
||||
case UO_Extension: return "__extension__";
|
||||
}
|
||||
llvm_unreachable("Unknown unary operator");
|
||||
}
|
||||
|
||||
UnaryOperatorKind
|
||||
|
@ -427,8 +427,7 @@ void TypePrinter::printFunctionProto(const FunctionProtoType *T,
|
||||
|
||||
FunctionType::ExtInfo Info = T->getExtInfo();
|
||||
switch(Info.getCC()) {
|
||||
case CC_Default:
|
||||
default: break;
|
||||
case CC_Default: break;
|
||||
case CC_C:
|
||||
S += " __attribute__((cdecl))";
|
||||
break;
|
||||
|
@ -532,7 +532,6 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, unsigned DiagClass,
|
||||
(diag::kind)DiagID);
|
||||
|
||||
switch (MappingInfo.getMapping()) {
|
||||
default: llvm_unreachable("Unknown mapping!");
|
||||
case diag::MAP_IGNORE:
|
||||
Result = DiagnosticIDs::Ignored;
|
||||
break;
|
||||
|
@ -1191,7 +1191,6 @@ Value *CodeGenFunction::EmitTargetBuiltinExpr(unsigned BuiltinID,
|
||||
static llvm::VectorType *GetNeonType(LLVMContext &C, NeonTypeFlags TypeFlags) {
|
||||
int IsQuad = TypeFlags.isQuad();
|
||||
switch (TypeFlags.getEltType()) {
|
||||
default: break;
|
||||
case NeonTypeFlags::Int8:
|
||||
case NeonTypeFlags::Poly8:
|
||||
return llvm::VectorType::get(llvm::Type::getInt8Ty(C), 8 << IsQuad);
|
||||
@ -1205,8 +1204,8 @@ static llvm::VectorType *GetNeonType(LLVMContext &C, NeonTypeFlags TypeFlags) {
|
||||
return llvm::VectorType::get(llvm::Type::getInt64Ty(C), 1 << IsQuad);
|
||||
case NeonTypeFlags::Float32:
|
||||
return llvm::VectorType::get(llvm::Type::getFloatTy(C), 2 << IsQuad);
|
||||
};
|
||||
return 0;
|
||||
}
|
||||
llvm_unreachable("Invalid NeonTypeFlags element type!");
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitNeonSplat(Value *V, Constant *C) {
|
||||
|
@ -1191,8 +1191,6 @@ CGObjCGNU::GenerateMessageSend(CodeGenFunction &CGF,
|
||||
// functions. These are not supported on all platforms (or all runtimes on a
|
||||
// given platform), so we
|
||||
switch (CGM.getCodeGenOpts().getObjCDispatchMethod()) {
|
||||
default:
|
||||
llvm_unreachable("Invalid dispatch method!");
|
||||
case CodeGenOptions::Legacy:
|
||||
imp = LookupIMP(CGF, Receiver, cmd, node);
|
||||
break;
|
||||
|
@ -4756,8 +4756,6 @@ bool CGObjCNonFragileABIMac::isVTableDispatchedSelector(Selector Sel) {
|
||||
// At various points we've experimented with using vtable-based
|
||||
// dispatch for all methods.
|
||||
switch (CGM.getCodeGenOpts().getObjCDispatchMethod()) {
|
||||
default:
|
||||
llvm_unreachable("Invalid dispatch method!");
|
||||
case CodeGenOptions::Legacy:
|
||||
return false;
|
||||
case CodeGenOptions::NonLegacy:
|
||||
|
@ -61,8 +61,6 @@ Option::~Option() {
|
||||
void Option::dump() const {
|
||||
llvm::errs() << "<";
|
||||
switch (Kind) {
|
||||
default:
|
||||
llvm_unreachable("Invalid kind");
|
||||
#define P(N) case N: llvm::errs() << #N; break
|
||||
P(GroupClass);
|
||||
P(InputClass);
|
||||
|
@ -19,14 +19,13 @@ using namespace clang::frontend;
|
||||
|
||||
const LangStandard &LangStandard::getLangStandardForKind(Kind K) {
|
||||
switch (K) {
|
||||
default:
|
||||
llvm_unreachable("Invalid language kind!");
|
||||
case lang_unspecified:
|
||||
llvm::report_fatal_error("getLangStandardForKind() on unspecified kind");
|
||||
#define LANGSTANDARD(id, name, desc, features) \
|
||||
case lang_##id: return Lang_##id;
|
||||
#include "clang/Frontend/LangStandards.def"
|
||||
}
|
||||
llvm_unreachable("Invalid language kind!");
|
||||
}
|
||||
|
||||
const LangStandard *LangStandard::getLangStandardForName(StringRef Name) {
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
using namespace clang;
|
||||
|
||||
LogDiagnosticPrinter::LogDiagnosticPrinter(raw_ostream &os,
|
||||
@ -28,14 +29,13 @@ LogDiagnosticPrinter::~LogDiagnosticPrinter() {
|
||||
|
||||
static StringRef getLevelName(DiagnosticsEngine::Level Level) {
|
||||
switch (Level) {
|
||||
default:
|
||||
return "<unknown>";
|
||||
case DiagnosticsEngine::Ignored: return "ignored";
|
||||
case DiagnosticsEngine::Note: return "note";
|
||||
case DiagnosticsEngine::Warning: return "warning";
|
||||
case DiagnosticsEngine::Error: return "error";
|
||||
case DiagnosticsEngine::Fatal: return "fatal error";
|
||||
}
|
||||
llvm_unreachable("Invalid DiagnosticsEngine level!");
|
||||
}
|
||||
|
||||
// Escape XML characters inside the raw string.
|
||||
|
@ -389,7 +389,6 @@ PragmaDiagnostic(SourceLocation Loc, StringRef Namespace,
|
||||
MoveToLine(Loc);
|
||||
OS << "#pragma " << Namespace << " diagnostic ";
|
||||
switch (Map) {
|
||||
default: llvm_unreachable("unexpected diagnostic kind");
|
||||
case diag::MAP_WARNING:
|
||||
OS << "warning";
|
||||
break;
|
||||
|
@ -32,9 +32,6 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) {
|
||||
using namespace clang::frontend;
|
||||
|
||||
switch (CI.getFrontendOpts().ProgramAction) {
|
||||
default:
|
||||
llvm_unreachable("Invalid program action!");
|
||||
|
||||
case ASTDump: return new ASTDumpAction();
|
||||
case ASTDumpXML: return new ASTDumpXMLAction();
|
||||
case ASTPrint: return new ASTPrintAction();
|
||||
@ -81,6 +78,7 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) {
|
||||
case RunAnalysis: return new ento::AnalysisAction();
|
||||
case RunPreprocessorOnly: return new PreprocessOnlyAction();
|
||||
}
|
||||
llvm_unreachable("Invalid program action!");
|
||||
}
|
||||
|
||||
static FrontendAction *CreateFrontendAction(CompilerInstance &CI) {
|
||||
|
@ -41,7 +41,6 @@ Decl *ASTLocation::getReferencedDecl() {
|
||||
return 0;
|
||||
|
||||
switch (getKind()) {
|
||||
default: llvm_unreachable("Invalid Kind");
|
||||
case N_Type:
|
||||
return 0;
|
||||
case N_Decl:
|
||||
@ -60,7 +59,6 @@ SourceRange ASTLocation::getSourceRange() const {
|
||||
return SourceRange();
|
||||
|
||||
switch (getKind()) {
|
||||
default: llvm_unreachable("Invalid Kind");
|
||||
case N_Decl:
|
||||
return D->getSourceRange();
|
||||
case N_Stmt:
|
||||
|
@ -2463,8 +2463,6 @@ ExprResult Parser::ParseArrayTypeTrait() {
|
||||
return Actions.ActOnArrayTypeTrait(ATT, Loc, Ty.get(), DimExpr.get(),
|
||||
T.getCloseLocation());
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ExprError();
|
||||
}
|
||||
|
@ -263,9 +263,6 @@ void Sema::ActOnPragmaPack(PragmaPackKind Kind, IdentifierInfo *Name,
|
||||
Context->setAlignment(AlignmentVal);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
llvm_unreachable("Invalid #pragma pack kind.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -291,7 +291,6 @@ DeclSpec::TST Sema::isTagName(IdentifierInfo &II, Scope *S) {
|
||||
if (R.getResultKind() == LookupResult::Found)
|
||||
if (const TagDecl *TD = R.getAsSingle<TagDecl>()) {
|
||||
switch (TD->getTagKind()) {
|
||||
default: return DeclSpec::TST_unspecified;
|
||||
case TTK_Struct: return DeclSpec::TST_struct;
|
||||
case TTK_Union: return DeclSpec::TST_union;
|
||||
case TTK_Class: return DeclSpec::TST_class;
|
||||
|
@ -1055,8 +1055,6 @@ static void handleOwnershipAttr(Sema &S, Decl *D, const AttributeList &AL) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
llvm_unreachable("Unknown ownership attribute");
|
||||
} // switch
|
||||
|
||||
// Check we don't have a conflict with another ownership attribute.
|
||||
|
@ -9163,7 +9163,6 @@ bool Sema::DiagnoseAssignmentResult(AssignConvertType ConvTy,
|
||||
bool MayHaveFunctionDiff = false;
|
||||
|
||||
switch (ConvTy) {
|
||||
default: llvm_unreachable("Unknown conversion type");
|
||||
case Compatible: return false;
|
||||
case PointerToInt:
|
||||
DiagKind = diag::ext_typecheck_convert_pointer_int;
|
||||
|
@ -2642,7 +2642,6 @@ void InitializationSequence::AddDerivedToBaseCastStep(QualType BaseType,
|
||||
case VK_RValue: S.Kind = SK_CastDerivedToBaseRValue; break;
|
||||
case VK_XValue: S.Kind = SK_CastDerivedToBaseXValue; break;
|
||||
case VK_LValue: S.Kind = SK_CastDerivedToBaseLValue; break;
|
||||
default: llvm_unreachable("No such category");
|
||||
}
|
||||
S.Type = BaseType;
|
||||
Steps.push_back(S);
|
||||
|
@ -1972,7 +1972,6 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state,
|
||||
state.setCurrentChunkIndex(chunkIndex);
|
||||
DeclaratorChunk &DeclType = D.getTypeObject(chunkIndex);
|
||||
switch (DeclType.Kind) {
|
||||
default: llvm_unreachable("Unknown decltype!");
|
||||
case DeclaratorChunk::Paren:
|
||||
T = S.BuildParenType(T);
|
||||
break;
|
||||
|
@ -509,7 +509,6 @@ void ASTDeclReader::VisitFunctionDecl(FunctionDecl *FD) {
|
||||
FD->EndRangeLoc = ReadSourceLocation(Record, Idx);
|
||||
|
||||
switch ((FunctionDecl::TemplatedKind)Record[Idx++]) {
|
||||
default: llvm_unreachable("Unhandled TemplatedKind!");
|
||||
case FunctionDecl::TK_NonTemplate:
|
||||
mergeRedeclarable(FD, Redecl);
|
||||
break;
|
||||
@ -1125,8 +1124,6 @@ void ASTDeclReader::VisitCXXRecordDecl(CXXRecordDecl *D) {
|
||||
CXXRecNotTemplate = 0, CXXRecTemplate, CXXRecMemberSpecialization
|
||||
};
|
||||
switch ((CXXRecKind)Record[Idx++]) {
|
||||
default:
|
||||
llvm_unreachable("Out of sync with ASTDeclWriter::VisitCXXRecordDecl?");
|
||||
case CXXRecNotTemplate:
|
||||
break;
|
||||
case CXXRecTemplate:
|
||||
|
@ -324,7 +324,6 @@ void ASTDeclWriter::VisitFunctionDecl(FunctionDecl *D) {
|
||||
|
||||
Record.push_back(D->getTemplatedKind());
|
||||
switch (D->getTemplatedKind()) {
|
||||
default: llvm_unreachable("Unhandled TemplatedKind!");
|
||||
case FunctionDecl::TK_NonTemplate:
|
||||
break;
|
||||
case FunctionDecl::TK_FunctionTemplate:
|
||||
|
@ -109,9 +109,6 @@ public:
|
||||
const char *BugType = 0;
|
||||
|
||||
switch (dsk) {
|
||||
default:
|
||||
llvm_unreachable("Impossible dead store type.");
|
||||
|
||||
case DeadInit:
|
||||
BugType = "Dead initialization";
|
||||
os << "Value stored to '" << *V
|
||||
|
@ -191,8 +191,6 @@ bool MallocChecker::evalCall(const CallExpr *CE, CheckerContext &C) const {
|
||||
rv = true;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1099,7 +1099,6 @@ RetainSummaryManager::getUnarySummary(const FunctionType* FT,
|
||||
case cfretain: Effect = IncRef; break;
|
||||
case cfrelease: Effect = DecRef; break;
|
||||
case cfmakecollectable: Effect = MakeCollectable; break;
|
||||
default: llvm_unreachable("Not a supported unary function.");
|
||||
}
|
||||
|
||||
ScratchArgs = AF.add(ScratchArgs, 0, Effect);
|
||||
|
@ -245,8 +245,6 @@ void SVal::dumpToStream(raw_ostream &os) const {
|
||||
case UndefinedKind:
|
||||
os << "Undefined";
|
||||
break;
|
||||
default:
|
||||
assert (false && "Invalid SVal.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -340,8 +340,6 @@ static void RunPathSensitiveChecks(AnalysisConsumer &C, AnalysisManager &mgr,
|
||||
Decl *D) {
|
||||
|
||||
switch (mgr.getLangOptions().getGC()) {
|
||||
default:
|
||||
llvm_unreachable("Invalid GC mode.");
|
||||
case LangOptions::NonGC:
|
||||
ActionExprEngine(C, mgr, D, false);
|
||||
break;
|
||||
|
@ -443,8 +443,6 @@ CXCallingConv clang_getFunctionTypeCallingConv(CXType X) {
|
||||
TCALLINGCONV(X86Pascal);
|
||||
TCALLINGCONV(AAPCS);
|
||||
TCALLINGCONV(AAPCS_VFP);
|
||||
default:
|
||||
return CXCallingConv_Unexposed;
|
||||
}
|
||||
#undef TCALLINGCONV
|
||||
}
|
||||
|
@ -156,9 +156,6 @@ public:
|
||||
case GenArmNeonTest:
|
||||
NeonEmitter(Records).runTests(OS);
|
||||
break;
|
||||
default:
|
||||
assert(1 && "Invalid Action");
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user