<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Pointer to member cast in static_cast causes assertion"
   href="http://llvm.org/bugs/show_bug.cgi?id=18506">18506</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Pointer to member cast in static_cast causes assertion
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>C++
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>david.majnemer@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>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</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>