From 4cfafb9a85a8101e715b6a01bafecfff90bdf3d7 Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Fri, 29 Nov 2013 16:12:29 +0000 Subject: [PATCH] Fixes a possible assert in the custom SubsetSubject logic for the attr emitter. llvm-svn: 195962 --- clang/utils/TableGen/ClangAttrEmitter.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clang/utils/TableGen/ClangAttrEmitter.cpp b/clang/utils/TableGen/ClangAttrEmitter.cpp index ec076e250c91..af0693a2ca0d 100644 --- a/clang/utils/TableGen/ClangAttrEmitter.cpp +++ b/clang/utils/TableGen/ClangAttrEmitter.cpp @@ -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);