[LLVMbugs] [Bug 18506] New: Pointer to member cast in static_cast causes assertion

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Jan 16 01:53:55 PST 2014


http://llvm.org/bugs/show_bug.cgi?id=18506

            Bug ID: 18506
           Summary: Pointer to member cast in static_cast causes assertion
           Product: clang
           Version: unspecified
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: david.majnemer at gmail.com
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified

consider:
$ cat /var/tmp/t.cpp
struct A;
struct B;
static_assert(sizeof((int B:: *)(int A::*)0) == 12, "");

compile with:
~/llvm/build/bin/clang++ -cc1 /var/tmp/t.cpp -std=c++11

this causes a crash here:
clang++: ~/llvm/src/tools/clang/include/clang/AST/DeclCXX.h:562: const struct
DefinitionData &clang::CXXRecordDecl::data() const: Assertion `DefinitionData
&& "queried property of class with no definition"' failed.
0  clang++         0x0000000001d93f8e llvm::sys::PrintStackTrace(_IO_FILE*) +
46
1  clang++         0x0000000001d9426b
2  clang++         0x0000000001d95eaa
3  libpthread.so.0 0x00007f09b9161cb0
4  libc.so.6       0x00007f09b839f425 gsignal + 53
5  libc.so.6       0x00007f09b83a2b8b abort + 379
6  libc.so.6       0x00007f09b83980ee
7  libc.so.6       0x00007f09b8398192
8  clang++         0x00000000020da1a6
9  clang++         0x00000000020da0c5
10 clang++         0x0000000003649aa7
clang::CXXBasePaths::lookupInBases(clang::ASTContext&, clang::CXXRecordDecl
const*, bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*),
void*) + 87
11 clang++         0x00000000036490aa clang::CXXRecordDecl::lookupInBases(bool
(*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*), void*,
clang::CXXBasePaths&) const + 90
12 clang++         0x0000000003649032
clang::CXXRecordDecl::isDerivedFrom(clang::CXXRecordDecl const*,
clang::CXXBasePaths&) const + 130
13 clang++         0x00000000030031a1
clang::Sema::IsDerivedFrom(clang::QualType, clang::QualType,
clang::CXXBasePaths&) + 177
14 clang++         0x0000000002f18245
15 clang++         0x0000000002f14679
16 clang++         0x0000000002f1129a
17 clang++         0x0000000002f10b27
clang::Sema::BuildCStyleCastExpr(clang::SourceLocation, clang::TypeSourceInfo*,
clang::SourceLocation, clang::Expr*) + 327
18 clang++         0x00000000030f82e5 clang::Sema::ActOnCastExpr(clang::Scope*,
clang::SourceLocation, clang::Declarator&, clang::OpaquePtr<clang::QualType>&,
clang::SourceLocation, clang::Expr*) + 1221
19 clang++         0x0000000002d21057
clang::Parser::ParseParenExpression(clang::Parser::ParenParseOption&, bool,
bool, clang::OpaquePtr<clang::QualType>&, clang::SourceLocation&) + 4167
20 clang++         0x0000000002d1d69f clang::Parser::ParseCastExpression(bool,
bool, bool&, clang::Parser::TypeCastState) + 399
21 clang++         0x0000000002d1ba43 clang::Parser::ParseCastExpression(bool,
bool, clang::Parser::TypeCastState) + 83
22 clang++         0x0000000002d1a938
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 200
23 clang++         0x0000000002d1a83f
clang::Parser::ParseExpression(clang::Parser::TypeCastState) + 31
24 clang++         0x0000000002d21258
clang::Parser::ParseParenExpression(clang::Parser::ParenParseOption&, bool,
bool, clang::OpaquePtr<clang::QualType>&, clang::SourceLocation&) + 4680
25 clang++         0x0000000002d24f32
clang::Parser::ParseExprAfterUnaryExprOrTypeTrait(clang::Token const&, bool&,
clang::OpaquePtr<clang::QualType>&, clang::SourceRange&) + 1298
26 clang++         0x0000000002d23a52
clang::Parser::ParseUnaryExprOrTypeTraitExpression() + 1746
27 clang++         0x0000000002d1eac3 clang::Parser::ParseCastExpression(bool,
bool, bool&, clang::Parser::TypeCastState) + 5555
28 clang++         0x0000000002d1ba43 clang::Parser::ParseCastExpression(bool,
bool, clang::Parser::TypeCastState) + 83
29 clang++         0x0000000002d1d2bf
clang::Parser::ParseConstantExpression(clang::Parser::TypeCastState) + 79
30 clang++         0x0000000002d09bde
clang::Parser::ParseStaticAssertDeclaration(clang::SourceLocation&) + 542
31 clang++         0x0000000002cee6d0
clang::Parser::ParseDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, unsigned
int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&) + 880
32 clang++         0x0000000002cd7579
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 2329
33 clang++         0x0000000002cd6a3c
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 700
34 clang++         0x0000000002cd1652 clang::ParseAST(clang::Sema&, bool, bool)
+ 562
35 clang++         0x0000000001e85179 clang::ASTFrontendAction::ExecuteAction()
+ 345
36 clang++         0x0000000001e8489f clang::FrontendAction::Execute() + 191
37 clang++         0x0000000001e4fc0e
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 798
38 clang++         0x0000000001fb0d7c
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1036
39 clang++         0x00000000008d93ca cc1_main(char const**, char const**, char
const*, void*) + 698
40 clang++         0x00000000008d12a2 main + 802
41 libc.so.6       0x00007f09b838a76d __libc_start_main + 237
42 clang++         0x00000000008d0e45

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140116/627036c2/attachment.html>


More information about the llvm-bugs mailing list