From: Eli Friedman Date: Sat, 21 May 2011 19:15:39 +0000 (+0000) Subject: Fix the clang part of PR7952: rewrite the specialization of isa<> in DeclBase, X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4d509341bd5db06a517daa311379f52bb540bc34;p=clang Fix the clang part of PR7952: rewrite the specialization of isa<> in DeclBase, and stop abusing the multi-level dereference isa<> used to allow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131804 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/DeclBase.h b/include/clang/AST/DeclBase.h index ce48187f3a..b5047b91c0 100644 --- a/include/clang/AST/DeclBase.h +++ b/include/clang/AST/DeclBase.h @@ -1355,17 +1355,12 @@ struct cast_convert_decl_context { namespace llvm { /// isa(DeclContext*) -template -struct isa_impl_wrap { +template +struct isa_impl { static bool doit(const ::clang::DeclContext &Val) { - return ToTy::classofKind(Val.getDeclKind()); + return To::classofKind(Val.getDeclKind()); } }; -template -struct isa_impl_wrap - : public isa_impl_wrap {}; /// cast(DeclContext*) template diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index 99bc3f49ce..7a89bf024f 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -999,7 +999,7 @@ static CSFC_Result CollectStatementsForCase(const Stmt *S, // If we're looking for the case, just see if we can skip each of the // substatements. for (; Case && I != E; ++I) { - HadSkippedDecl |= isa(I); + HadSkippedDecl |= isa(*I); switch (CollectStatementsForCase(*I, Case, FoundCase, ResultStmts)) { case CSFC_Failure: return CSFC_Failure; diff --git a/lib/Frontend/CreateInvocationFromCommandLine.cpp b/lib/Frontend/CreateInvocationFromCommandLine.cpp index 0005f910d2..42b648aa64 100644 --- a/lib/Frontend/CreateInvocationFromCommandLine.cpp +++ b/lib/Frontend/CreateInvocationFromCommandLine.cpp @@ -65,7 +65,7 @@ clang::createInvocationFromCommandLine(llvm::ArrayRef ArgList, // We expect to get back exactly one command job, if we didn't something // failed. const driver::JobList &Jobs = C->getJobs(); - if (Jobs.size() != 1 || !isa(Jobs.begin())) { + if (Jobs.size() != 1 || !isa(*Jobs.begin())) { llvm::SmallString<256> Msg; llvm::raw_svector_ostream OS(Msg); C->PrintJob(OS, C->getJobs(), "; ", true);