https://llvm.org/bugs/show_bug.cgi?id=29087
Bug ID: 29087 Summary: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed from EvaluateUnaryTypeTrait in lib/Sema/SemaExprCXX.cpp Product: clang Version: trunk Hardware: PC OS: All Status: NEW Severity: normal Priority: P Component: C++11 Assignee: unassignedclangb...@nondot.org Reporter: t...@fb.com CC: dgre...@apple.com, llvm-bugs@lists.llvm.org Classification: Unclassified Created attachment 17023 --> https://llvm.org/bugs/attachment.cgi?id=17023&action=edit preprocess test case ### Repro test case: #include <cassert> struct X { X() {} }; struct Y : public X { public: using X::X; }; int main() { assert(__has_nothrow_constructor(Y)); } ### Stack trace: /data/users/twoh/llvms/latest-dev/build-debug/bin/clang -std=c++11 -O0 -c -o test.o test.cpp clang-3.9: /home/twoh/llvms/latest-dev/llvm/include/llvm/Support/Casting.h:237: typename llvm::cast_retty<X, Y*>::ret_type llvm::cast(Y*) [with X = clang::CXXConstructorDecl; Y = const clang::NamedDecl; typename llvm::cast_retty<X, Y*>::ret_type = const clang::CXXConstructorDecl*]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed. #0 0x000000000290683d llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/twoh/llvms/latest-dev/llvm/lib/Support/Unix/Signals.inc:402:0 #1 0x0000000002906bff PrintStackTraceSignalHandler(void*) /home/twoh/llvms/latest-dev/llvm/lib/Support/Unix/Signals.inc:470:0 #2 0x0000000002904f6a llvm::sys::RunSignalHandlers() /home/twoh/llvms/latest-dev/llvm/lib/Support/Signals.cpp:44:0 #3 0x00000000029061ce SignalHandler(int) /home/twoh/llvms/latest-dev/llvm/lib/Support/Unix/Signals.inc:256:0 #4 0x00007f373bebc100 __restore_rt (/lib64/libpthread.so.0+0xf100) #5 0x00007f373aab45f7 __GI_raise (/lib64/libc.so.6+0x355f7) #6 0x00007f373aab5ce8 __GI_abort (/lib64/libc.so.6+0x36ce8) #7 0x00007f373aaad566 __assert_fail_base (/lib64/libc.so.6+0x2e566) #8 0x00007f373aaad612 (/lib64/libc.so.6+0x2e612) #9 0x0000000002ccc4a0 llvm::cast_retty<clang::CXXConstructorDecl, clang::NamedDecl const*>::ret_type llvm::cast<clang::CXXConstructorDecl, clang::NamedDecl const>(clang::NamedDecl const*) /home/twoh/llvms/latest-dev/llvm/include/llvm/Support/Casting.h:239:0 #10 0x00000000045e91f5 EvaluateUnaryTypeTrait(clang::Sema&, clang::TypeTrait, clang::SourceLocation, clang::QualType) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp:4262:0 #11 0x00000000045e94a4 evaluateTypeTrait(clang::Sema&, clang::TypeTrait, clang::SourceLocation, llvm::ArrayRef<clang::TypeSourceInfo*>, clang::SourceLocation) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp:4325:0 #12 0x00000000045e9db1 clang::Sema::BuildTypeTrait(clang::TypeTrait, clang::SourceLocation, llvm::ArrayRef<clang::TypeSourceInfo*>, clang::SourceLocation) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp:4450:0 #13 0x00000000045e9f44 clang::Sema::ActOnTypeTrait(clang::TypeTrait, clang::SourceLocation, llvm::ArrayRef<clang::OpaquePtr<clang::QualType> >, clang::SourceLocation) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp:4471:0 #14 0x0000000003fab253 clang::Parser::ParseTypeTrait() /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp:3025:0 #15 0x0000000003f95009 clang::Parser::ParseCastExpression(bool, bool, bool&, clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:1318:0 #16 0x0000000003f9179a clang::Parser::ParseCastExpression(bool, bool, clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:481:0 #17 0x0000000003f90450 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:170:0 #18 0x0000000003f90254 clang::Parser::ParseExpression(clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:120:0 #19 0x0000000003f99e6b clang::Parser::ParseParenExpression(clang::Parser::ParenParseOption&, bool, bool, clang::OpaquePtr<clang::QualType>&, clang::SourceLocation&) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:2412:0 #20 0x0000000003f91af7 clang::Parser::ParseCastExpression(bool, bool, bool&, clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:723:0 #21 0x0000000003f9179a clang::Parser::ParseCastExpression(bool, bool, clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:481:0 #22 0x0000000003f90450 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:170:0 #23 0x0000000003f90254 clang::Parser::ParseExpression(clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:120:0 #24 0x0000000003f99e6b clang::Parser::ParseParenExpression(clang::Parser::ParenParseOption&, bool, bool, clang::OpaquePtr<clang::QualType>&, clang::SourceLocation&) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:2412:0 #25 0x0000000003f91af7 clang::Parser::ParseCastExpression(bool, bool, bool&, clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:723:0 #26 0x0000000003f9179a clang::Parser::ParseCastExpression(bool, bool, clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:481:0 #27 0x0000000003f90450 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:170:0 #28 0x0000000003f90254 clang::Parser::ParseExpression(clang::Parser::TypeCastState) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseExpr.cpp:120:0 #29 0x0000000003fdb4f5 clang::Parser::ParseExprStatement() /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseStmt.cpp:400:0 #30 0x0000000003fdad76 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::AllowedContsructsKind, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseStmt.cpp:223:0 #31 0x0000000003fda702 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::AllowedContsructsKind, clang::SourceLocation*) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseStmt.cpp:111:0 #32 0x0000000003fdd6bd clang::Parser::ParseCompoundStatementBody(bool) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseStmt.cpp:985:0 #33 0x0000000003fe0ddb clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseStmt.cpp:1949:0 #34 0x0000000003f3bf31 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/Parser.cpp:1191:0 #35 0x0000000003f570e2 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int, clang::SourceLocation*, clang::Parser::ForRangeInit*) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseDecl.cpp:1795:0 #36 0x0000000003f3b03a clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/Parser.cpp:959:0 #37 0x0000000003f3b0f2 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/Parser.cpp:974:0 #38 0x0000000003f3a7d5 clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/Parser.cpp:826:0 #39 0x0000000003f39bac clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/Parser.cpp:613:0 #40 0x0000000003f360f8 clang::ParseAST(clang::Sema&, bool, bool) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Parse/ParseAST.cpp:154:0 #41 0x00000000030a4526 clang::ASTFrontendAction::ExecuteAction() /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:559:0 #42 0x00000000034d35c4 clang::CodeGenAction::ExecuteAction() /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp:868:0 #43 0x00000000030a3fcd clang::FrontendAction::Execute() /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:462:0 #44 0x0000000003054cea clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp:872:0 #45 0x00000000031bcf22 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/twoh/llvms/latest-dev/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:246:0 #46 0x00000000016aa8c4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/twoh/llvms/latest-dev/llvm/tools/clang/tools/driver/cc1_main.cpp:185:0 #47 0x00000000016a1023 ExecuteCC1Tool(llvm::ArrayRef<char const*>, llvm::StringRef) /home/twoh/llvms/latest-dev/llvm/tools/clang/tools/driver/driver.cpp:299:0 #48 0x00000000016a1aaa main /home/twoh/llvms/latest-dev/llvm/tools/clang/tools/driver/driver.cpp:380:0 #49 0x00007f373aaa0b15 __libc_start_main (/lib64/libc.so.6+0x21b15) #50 0x000000000169e9c9 _start (/data/users/twoh/llvms/latest-dev/build-debug/bin/clang-3.9+0x169e9c9) Stack dump: 0. Program arguments: /data/users/twoh/llvms/latest-dev/build-debug/bin/clang-3.9 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name test.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -coverage-file /home/twoh/local/tasks/ice-example/test.o -resource-dir /data/users/twoh/llvms/latest-dev/build-debug/bin/../lib/clang/4.0.0 -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5 -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/x86_64-redhat-linux -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../include/c++/4.8.5/backward -internal-isystem /usr/local/include -internal-isystem /data/users/twoh/llvms/latest-dev/build-debug/bin/../lib/clang/4.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O0 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /home/twoh/local/tasks/ice-example -ferror-limit 19 -fmessage-length 272 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o test.o -x c++ test.cpp 1. test.cpp:13:3 <Spelling=/usr/include/assert.h:87:9>: current parser token ')' 2. test.cpp:12:12: parsing function body 'main' 3. test.cpp:12:12: in compound statement ('{}') clang-3.9: error: unable to execute command: Aborted (core dumped) clang-3.9: error: clang frontend command failed due to signal (use -v to see invocation) clang version 4.0.0 (trunk 279412) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /data/users/twoh/llvms/latest-dev/build-debug/bin clang-3.9: note: diagnostic msg: PLEASE submit a bug report to http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and associated run script. clang-3.9: note: diagnostic msg: ******************** PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT: Preprocessed source(s) and associated run script(s) are located at: clang-3.9: note: diagnostic msg: /tmp/test-6aff07.cpp clang-3.9: note: diagnostic msg: /tmp/test-6aff07.sh clang-3.9: note: diagnostic msg: ******************** -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs