]> granicus.if.org Git - clang/commitdiff
Fixes a possible assert in the custom SubsetSubject logic for the attr emitter.
authorAaron Ballman <aaron@aaronballman.com>
Fri, 29 Nov 2013 16:12:29 +0000 (16:12 +0000)
committerAaron Ballman <aaron@aaronballman.com>
Fri, 29 Nov 2013 16:12:29 +0000 (16:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195962 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/ClangAttrEmitter.cpp

index ec076e250c91002cd92d846b1ca8c9a8b23a5dde..af0693a2ca0df2863be986bbca37d115ff93e0d6 100644 (file)
@@ -1827,9 +1827,10 @@ static std::string GenerateCustomAppertainsTo(const Record &Subject,
 
   std::string FnName = "is" + Subject.getName();
   OS << "static bool " << FnName << "(const Decl *D) {\n";
-  OS << "  const " << Base->getName() << "Decl *S = cast<" << Base->getName();
+  OS << "  const " << Base->getName() << "Decl *S = dyn_cast<";
+  OS << Base->getName();
   OS << "Decl>(D);\n";
-  OS << "  return " << Subject.getValueAsString("CheckCode") << ";\n";
+  OS << "  return S && " << Subject.getValueAsString("CheckCode") << ";\n";
   OS << "}\n\n";
 
   CustomSubjectSet.insert(FnName);