<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 --- - Defaulted default constructor of inner template class - assertion failed"
   href="http://llvm.org/bugs/show_bug.cgi?id=18494">18494</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Defaulted default constructor of inner template class - assertion failed
          </td>
        </tr>

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

        <tr>
          <th>Version</th>
          <td>trunk
          </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++11
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>wielkiegie@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>This bug is very similar to PR15458 in that I get the same error message.
However, what causes the problem seems to be the use of templates.
Additionally, the workaround from PR15458 (explicitly defining Inner's
constructor) causes assertion failure.

struct Outer {
    Outer();

    template <typename T>
    struct Inner {
        Inner() {} // Commenting this line prevents ICE.
        int x = 1337;
    };

    Inner<int> inner;
};

Outer::Outer() {}

$ clang -std=c++11 llvm-crash.cpp -c
clang: /home/bigos/src/llvm/build/include/llvm/Support/Casting.h:97: static
bool llvm::isa_impl_cl<clang::BinaryOperator, const clang::Stmt *>::doit(const
>From *) [To = clang::BinaryOperator, From = const clang::Stmt *]: Assertion
`Val && "isa<> used on a null pointer"' failed.
0  clang           0x0000000003577d9e llvm::sys::PrintStackTrace(_IO_FILE*) +
46
1  clang           0x000000000357807b
2  clang           0x000000000357959a
3  libpthread.so.0 0x00007f9b6b002bb0
4  libc.so.6       0x00007f9b6a23ff77 gsignal + 55
5  libc.so.6       0x00007f9b6a2435e8 abort + 328
6  libc.so.6       0x00007f9b6a238d43
7  libc.so.6       0x00007f9b6a238df2
8  clang           0x0000000000956c5e
9  clang           0x0000000000956c08
10 clang           0x0000000000956be2
11 clang           0x0000000000956b35
12 clang           0x00000000009244c8
13 clang           0x0000000000da0c74
14 clang           0x0000000000d95c88
15 clang           0x0000000000da5a27
16 clang           0x0000000000da158c
17 clang           0x0000000000d95c88
18 clang           0x0000000000d95c0d
clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 189
19 clang           0x0000000000d40fa1
clang::CodeGen::CodeGenFunction::EmitScalarInit(clang::Expr const*,
clang::ValueDecl const*, clang::CodeGen::LValue, bool) + 97
20 clang           0x0000000000d43c39
clang::CodeGen::CodeGenFunction::EmitExprAsInit(clang::Expr const*,
clang::ValueDecl const*, clang::CodeGen::LValue, bool) + 569
21 clang           0x0000000000d29e1a
clang::CodeGen::CodeGenFunction::EmitInitializerForField(clang::FieldDecl*,
clang::CodeGen::LValue, clang::Expr*, llvm::ArrayRef<clang::VarDecl*>) + 330
22 clang           0x0000000000d33da1
23 clang           0x0000000000d2c248
24 clang           0x0000000000d2bac5
clang::CodeGen::CodeGenFunction::EmitCtorPrologue(clang::CXXConstructorDecl
const*, clang::CXXCtorType, clang::CodeGen::FunctionArgList&) + 917
25 clang           0x0000000000d2b112
clang::CodeGen::CodeGenFunction::EmitConstructorBody(clang::CodeGen::FunctionArgList&)
+ 562
26 clang           0x0000000000c412ab
clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl,
llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 955
27 clang           0x0000000000d10349
clang::CodeGen::CodeGenModule::EmitCXXConstructor(clang::CXXConstructorDecl
const*, clang::CXXCtorType) + 425
28 clang           0x0000000000c53c82
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl,
llvm::GlobalValue*) + 306
29 clang           0x0000000000c4f2a8
clang::CodeGen::CodeGenModule::EmitDeferred() + 376
30 clang           0x0000000000c4ee79 clang::CodeGen::CodeGenModule::Release()
+ 25
31 clang           0x0000000000bbb401
32 clang           0x0000000000bb9722
33 clang           0x0000000000e3932d clang::ParseAST(clang::Sema&, bool, bool)
+ 813
34 clang           0x00000000008d2619 clang::ASTFrontendAction::ExecuteAction()
+ 345
35 clang           0x0000000000bb9081 clang::CodeGenAction::ExecuteAction() +
1553
36 clang           0x00000000008d1dff clang::FrontendAction::Execute() + 191
37 clang           0x000000000089c90e
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 798
38 clang           0x000000000085d39c
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1036
39 clang           0x000000000084aa8a cc1_main(char const**, char const**, char
const*, void*) + 698
40 clang           0x00000000008570c2 main + 802
41 libc.so.6       0x00007f9b6a22ade5 __libc_start_main + 245
42 clang           0x000000000084a704

 "clang" -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all
-disable-free -main-file-name llvm-crash.cpp -mrelocation-model static
-mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases
-munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version
2.23.52.20130913 -std=c++11 -fdeprecated-macro -ferror-limit 19
-fmessage-length 220 -mstackrealign -fobjc-runtime=gcc -fcxx-exceptions
-fexceptions -fdiagnostics-show-option -vectorize-slp -x c++
llvm-crash-5a7be9.cpp

This particular problem occurs on clang 3.2, 3.3 and trunk.</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>