<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 --- - Assertion failed: ((ND->isUsed(false) || !isa<VarDecl>(ND) || !E->getLocation().isValid()) && "Should not use decl without marking it used!")"
   href="http://llvm.org/bugs/show_bug.cgi?id=20939">20939</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Assertion failed: ((ND->isUsed(false) || !isa<VarDecl>(ND) || !E->getLocation().isValid()) && "Should not use decl without marking it used!")
          </td>
        </tr>

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

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Macintosh
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>MacOS X
          </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++1y
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>ldionne.2@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Hi,

The following code causes Clang r217465 to segfault:

------------------------------------------------------------------------------
template <typename X>
void capture(X&& x) {
    (void)[x](auto) { };
}

struct T { };
template void capture(T(&&)[1]);
------------------------------------------------------------------------------

Here is the command line and output:
------------------------------------------------------------------------------
› ~/code/llvm/build/bin/clang++ -std=c++1y -o/dev/null
~/desktop/bugreports/segfault/worksheet.cpp
Assertion failed: ((ND->isUsed(false) || !isa<VarDecl>(ND) ||
!E->getLocation().isValid()) && "Should not use decl without marking it
used!"), function EmitDeclRefLValue, file
/Users/ldionne/code/llvm/tools/clang/lib/CodeGen/CGExpr.cpp, line 1910.
0  clang-3.5                0x000000010293666e
llvm::sys::PrintStackTrace(__sFILE*) + 46
1  clang-3.5                0x000000010293697b
PrintStackTraceSignalHandler(void*) + 27
2  clang-3.5                0x0000000102936da5 SignalHandler(int) + 565
3  libsystem_platform.dylib 0x00007fff847105aa _sigtramp + 26
4  clang-3.5                0x0000000104cd86b5 llvm::PointerIntPair<void*, 1u,
bool, llvm::PointerUnionUIntTraits<clang::Type const*, clang::ExtQuals const*>
<span class="quote">>::PointerIntPair() + 21</span >
5  clang-3.5                0x00000001029369ab raise + 27
6  clang-3.5                0x0000000102936a62 abort + 18
7  clang-3.5                0x0000000102936a41 __assert_rtn + 129
8  clang-3.5                0x00000001031d8503
clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(clang::DeclRefExpr const*) +
819
9  clang-3.5                0x00000001031cfa7d
clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) + 413
10 clang-3.5                0x00000001031d695f
clang::CodeGen::CodeGenFunction::EmitCheckedLValue(clang::Expr const*,
clang::CodeGen::CodeGenFunction::TypeCheckKind) + 207
11 clang-3.5                0x00000001032247ad (anonymous
namespace)::ScalarExprEmitter::EmitCheckedLValue(clang::Expr const*,
clang::CodeGen::CodeGenFunction::TypeCheckKind) + 45
12 clang-3.5                0x000000010321ed30 (anonymous
namespace)::ScalarExprEmitter::EmitLoadOfLValue(clang::Expr const*) + 48
13 clang-3.5                0x000000010322c1d6 (anonymous
namespace)::ScalarExprEmitter::VisitDeclRefExpr(clang::DeclRefExpr*) + 262
14 clang-3.5                0x0000000103226948
clang::StmtVisitorBase<clang::make_ptr, (anonymous
namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) + 3240
15 clang-3.5                0x000000010321ba08 (anonymous
namespace)::ScalarExprEmitter::Visit(clang::Expr*) + 40
16 clang-3.5                0x0000000103231055 (anonymous
namespace)::ScalarExprEmitter::VisitCastExpr(clang::CastExpr*) + 3893
17 clang-3.5                0x000000010322b608
clang::StmtVisitorBase<clang::make_ptr, (anonymous
namespace)::ScalarExprEmitter,
llvm::Value*>::VisitImplicitCastExpr(clang::ImplicitCastExpr*) + 40
18 clang-3.5                0x00000001032268bc
clang::StmtVisitorBase<clang::make_ptr, (anonymous
namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) + 3100
19 clang-3.5                0x000000010321ba08 (anonymous
namespace)::ScalarExprEmitter::Visit(clang::Expr*) + 40
20 clang-3.5                0x000000010321b972
clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 226
21 clang-3.5                0x00000001031d6ab4
clang::CodeGen::CodeGenFunction::EmitArraySubscriptExpr(clang::ArraySubscriptExpr
const*, bool) + 100
22 clang-3.5                0x00000001031cfd4e
clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) + 1134
23 clang-3.5                0x00000001031dc9f5
clang::CodeGen::CodeGenFunction::EmitCastLValue(clang::CastExpr const*) + 405
24 clang-3.5                0x00000001031cfe6c
clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) + 1420
25 clang-3.5                0x000000010317da67
clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(clang::CXXConstructorDecl
const*, clang::CXXCtorType, bool, bool, llvm::Value*, clang::CXXConstructExpr
const*) + 503
26 clang-3.5                0x00000001031f584a
clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr(clang::CXXConstructExpr
const*, clang::CodeGen::AggValueSlot) + 1130
27 clang-3.5                0x00000001031ebbe2 (anonymous
namespace)::AggExprEmitter::VisitCXXConstructExpr(clang::CXXConstructExpr
const*) + 98
28 clang-3.5                0x00000001031e8e29
clang::StmtVisitorBase<clang::make_ptr, (anonymous namespace)::AggExprEmitter,
void>::Visit(clang::Stmt*) + 2009
29 clang-3.5                0x00000001031e82c2
clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot) + 354
30 clang-3.5                0x000000010317a47f
EmitAggMemberInitializer(clang::CodeGen::CodeGenFunction&,
clang::CodeGen::LValue, clang::Expr*, llvm::Value*, clang::QualType,
llvm::ArrayRef<clang::VarDecl*>, unsigned int) + 1215
31 clang-3.5                0x000000010317a998
EmitAggMemberInitializer(clang::CodeGen::CodeGenFunction&,
clang::CodeGen::LValue, clang::Expr*, llvm::Value*, clang::QualType,
llvm::ArrayRef<clang::VarDecl*>, unsigned int) + 2520
32 clang-3.5                0x0000000103179f42
clang::CodeGen::CodeGenFunction::EmitInitializerForField(clang::FieldDecl*,
clang::CodeGen::LValue, clang::Expr*, llvm::ArrayRef<clang::VarDecl*>) + 1490
33 clang-3.5                0x00000001031fb78d
clang::CodeGen::CodeGenFunction::EmitLambdaExpr(clang::LambdaExpr const*,
clang::CodeGen::AggValueSlot) + 973
34 clang-3.5                0x00000001031ee042 (anonymous
namespace)::AggExprEmitter::VisitLambdaExpr(clang::LambdaExpr*) + 98
35 clang-3.5                0x00000001031e92a9
clang::StmtVisitorBase<clang::make_ptr, (anonymous namespace)::AggExprEmitter,
void>::Visit(clang::Stmt*) + 3161
36 clang-3.5                0x00000001031e82c2
clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot) + 354
37 clang-3.5                0x00000001031cf895
clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot, bool) + 437
38 clang-3.5                0x00000001031cf6ad
clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) + 109
39 clang-3.5                0x00000001032312bf (anonymous
namespace)::ScalarExprEmitter::VisitCastExpr(clang::CastExpr*) + 4511
40 clang-3.5                0x000000010323198b (anonymous
namespace)::ScalarExprEmitter::VisitExplicitCastExpr(clang::ExplicitCastExpr*)
+ 123
41 clang-3.5                0x000000010322b4b8
clang::StmtVisitorBase<clang::make_ptr, (anonymous
namespace)::ScalarExprEmitter,
llvm::Value*>::VisitCStyleCastExpr(clang::CStyleCastExpr*) + 40
42 clang-3.5                0x00000001032267f8
clang::StmtVisitorBase<clang::make_ptr, (anonymous
namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) + 2904
43 clang-3.5                0x000000010321ba08 (anonymous
namespace)::ScalarExprEmitter::Visit(clang::Expr*) + 40
44 clang-3.5                0x000000010321b972
clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 226
45 clang-3.5                0x00000001031cf787
clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot, bool) + 167
46 clang-3.5                0x00000001031cf6ad
clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) + 109
47 clang-3.5                0x00000001032c5f0d
clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 573
48 clang-3.5                0x00000001032d16fb
clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt
const&, bool, clang::CodeGen::AggValueSlot) + 139
49 clang-3.5                0x00000001032f4cd7
clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::CodeGen::FunctionArgList&,
clang::Stmt const*) + 167
50 clang-3.5                0x00000001032f547c
clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl,
llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 1660
51 clang-3.5                0x000000010330b4e3
clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl,
llvm::GlobalValue*) + 1219
52 clang-3.5                0x0000000103306f01
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl,
llvm::GlobalValue*) + 529
53 clang-3.5                0x000000010330a224
clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) + 1076
54 clang-3.5                0x000000010330cc94
clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 292
55 clang-3.5                0x00000001034026ed (anonymous
namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) + 157
56 clang-3.5                0x00000001032edb7f
clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) + 207
57 clang-3.5                0x00000001046764ee
clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation,
clang::FunctionDecl*, bool, bool) + 4046
58 clang-3.5                0x0000000104553797
clang::Sema::ActOnExplicitInstantiation(clang::Scope*, clang::SourceLocation,
clang::SourceLocation, clang::Declarator&) + 6471
59 clang-3.5                0x0000000103d7d88b
clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) + 443
60 clang-3.5                0x0000000103d7e93d
clang::Parser::ParseDeclarationAfterDeclarator(clang::Declarator&,
clang::Parser::ParsedTemplateInfo const&) + 93
61 clang-3.5                0x0000000103df9c78
clang::Parser::ParseSingleDeclarationAfterTemplate(unsigned int,
clang::Parser::ParsedTemplateInfo const&, clang::ParsingDeclRAIIObject&,
clang::SourceLocation&, clang::AccessSpecifier, clang::AttributeList*) + 2408
62 clang-3.5                0x0000000103df8b1e
clang::Parser::ParseExplicitInstantiation(unsigned int, clang::SourceLocation,
clang::SourceLocation, clang::SourceLocation&, clang::AccessSpecifier) + 206
63 clang-3.5                0x0000000103df8a00
clang::Parser::ParseDeclarationStartingWithTemplate(unsigned int,
clang::SourceLocation&, clang::AccessSpecifier, clang::AttributeList*) + 176
64 clang-3.5                0x0000000103d783b0
clang::Parser::ParseDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, unsigned
int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&) + 464
65 clang-3.5                0x0000000103e09cec
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 2460
66 clang-3.5                0x0000000103e092df
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 703
67 clang-3.5                0x0000000103d6a9ec clang::ParseAST(clang::Sema&,
bool, bool) + 988
68 clang-3.5                0x0000000102d6a32a
clang::ASTFrontendAction::ExecuteAction() + 522
69 clang-3.5                0x00000001032ec7df
clang::CodeGenAction::ExecuteAction() + 3855
70 clang-3.5                0x0000000102d698a8 clang::FrontendAction::Execute()
+ 120
71 clang-3.5                0x0000000102cff4d9
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 1017
72 clang-3.5                0x0000000102dcd4b1
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 3201
73 clang-3.5                0x0000000101095e58 cc1_main(llvm::ArrayRef<char
const*>, char const*, void*) + 2424
74 clang-3.5                0x0000000101089ebb
ExecuteCC1Tool(llvm::ArrayRef<char const*>, llvm::StringRef) + 171
75 clang-3.5                0x00000001010894e1 main + 1185
76 libdyld.dylib            0x00007fff866675fd start + 1
77 libdyld.dylib            0x000000000000002e start + 2040105522
Stack dump:
0.  Program arguments: /Users/ldionne/code/llvm/build/bin/clang-3.5 -cc1
-triple x86_64-apple-macosx10.9.0 -emit-obj -mrelax-all -disable-free
-main-file-name worksheet.cpp -mrelocation-model pic -pic-level 2
-mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2
-dwarf-column-info -resource-dir
/Users/ldionne/code/llvm/build/bin/../lib/clang/3.6.0 -stdlib=libc++ -std=c++1y
-fdeprecated-macro -fdebug-compilation-dir
/Users/ldionne/Desktop/bugreports/segfault -ferror-limit 19 -fmessage-length
101 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.9.0
-fencode-extended-block-signature -fcxx-exceptions -fexceptions
-fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o
/var/folders/6f/d7xhg3bx4zq467t3d6kb4fr80000gn/T/worksheet-ec4b54.o -x c++
/Users/ldionne/desktop/bugreports/segfault/worksheet.cpp
1.  /Users/ldionne/desktop/bugreports/segfault/worksheet.cpp:7:32: current
parser token ';'
2.  /Users/ldionne/desktop/bugreports/segfault/worksheet.cpp:2:6: LLVM IR
generation of declaration 'capture'
3.  /Users/ldionne/desktop/bugreports/segfault/worksheet.cpp:2:6: Generating
code for declaration 'capture'
clang-3.5: error: unable to execute command: Illegal instruction: 4
clang-3.5: error: clang frontend command failed due to signal (use -v to see
invocation)
clang version 3.6.0
Target: x86_64-apple-darwin13.3.0
Thread model: posix
clang-3.5: note: diagnostic msg: PLEASE submit a bug report to
<a href="http://llvm.org/bugs/">http://llvm.org/bugs/</a> and include the crash backtrace, preprocessed source, and
associated run script.
clang-3.5: 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.5: note: diagnostic msg:
/var/folders/6f/d7xhg3bx4zq467t3d6kb4fr80000gn/T/worksheet-32c009.cpp
clang-3.5: note: diagnostic msg:
/var/folders/6f/d7xhg3bx4zq467t3d6kb4fr80000gn/T/worksheet-32c009.sh
clang-3.5: note: diagnostic msg:

********************

------------------------------------------------------------------------------


Regards,
Louis Dionne</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>