+ (gdb) frame 21
+ #21 0x000000000132187e in clang::Sema::InstantiateFunctionDefinition (
+ this=0x3854300, PointOfInstantiation=..., Function=0x386ee90,
- #0 0x00007ffff6ebea75 in *__GI_raise (sig=<optimized out>)
- at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
- #1 0x00007ffff6ec25c0 in *__GI_abort () at abort.c:92
- #2 0x00007ffff6eb7941 in *__GI___assert_fail (
- assertion=0x299d1c5 "isa<LabelDecl>(D) && \"declaration not instantiated in this scope\"", file=<optimized out>, line=2346,
- function=0x299d207 "llvm::PointerUnion<Decl *, LocalInstantiationScope::DeclArgumentPack *> *clang::LocalInstantiationScope::findInstantiationOf(const clang::Decl *)") at assert.c:81
- #3 0x00000000012e7ef7 in clang::LocalInstantiationScope::findInstantiationOf (
- this=0x7fffffffa5b0, D=0x386e5f0)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:2346
- #4 0x0000000001315eaf in clang::Sema::FindInstantiatedDecl (this=0x3854300,
- Loc=..., D=0x386e5f0, TemplateArgs=...)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3168
- #5 0x000000000131a2f7 in clang::Sema::FindInstantiatedContext (
- this=0x3854300, Loc=..., DC=0x386e628, TemplateArgs=...)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3127
- #6 0x00000000013162ac in clang::Sema::FindInstantiatedDecl (this=0x3854300,
- Loc=..., D=0x386e890, TemplateArgs=...)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3245
- #7 0x00000000012eaa1f in (anonymous namespace)::TemplateInstantiator::TransformDecl (this=0x7fffffffa360, Loc=..., D=0x386e890)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:856
- #8 0x00000000012f4bc1 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformMemberExpr (this=0x7fffffffa360, E=0x386e940)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/TreeTransform.h:6264
- #9 0x00000000012e593f in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr (this=0x7fffffffa360, E=0x386e940)
- at /home/richardsmith/clang-2/build/tools/clang/include/clang/AST/StmtNodes.inc:459
- #10 0x00000000012f2b4e in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCStyleCastExpr (this=0x7fffffffa360, E=0x386e988)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/TreeTransform.h:6420
- #11 0x00000000012e5476 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr (this=0x7fffffffa360, E=0x386e988)
- at /home/richardsmith/clang-2/build/tools/clang/include/clang/AST/StmtNodes.inc:293
- #12 0x00000000012e4ab0 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt (this=0x7fffffffa360, S=0x386e988)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/TreeTransform.h:2467
- #13 0x00000000012f8c23 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt (this=0x7fffffffa360, S=0x386e9b0,
- IsStmtExpr=false)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/TreeTransform.h:4977
- #14 0x00000000012ffcca in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt (this=0x7fffffffa360, S=0x386e9b0)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/TreeTransform.h:4965
- #15 0x00000000012e45c8 in clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt (this=0x7fffffffa360, S=0x386e9b0)
- at /home/richardsmith/clang-2/build/tools/clang/include/clang/AST/StmtNodes.inc:45
- #16 0x00000000012e444c in clang::Sema::SubstStmt (this=0x3854300, S=0x386e9b0,
- TemplateArgs=...)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp:2252
- #17 0x00000000013216ef in clang::Sema::InstantiateFunctionDefinition (
- this=0x3854300, PointOfInstantiation=..., Function=0x3871c50,
Recursive=true, DefinitionRequired=false)
+ at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2616
+ 2616 PerformPendingInstantiations();
+ (gdb) p Function->dump()
+ void doIt() {
+ struct Functor {
+ void func();
+ int i;
+ };
+ forEach(Functor());
+ }
+
+ $5 = void
+ (gdb) frame 19
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2589
- #18 0x0000000001322862 in clang::Sema::PerformPendingInstantiations (
- this=0x3854300, LocalOnly=true)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3348
#19 0x0000000001321845 in clang::Sema::InstantiateFunctionDefinition (
+ this=0x3854300, PointOfInstantiation=..., Function=0x38723b0,
- this=0x3854300, PointOfInstantiation=..., Function=0x38723b0,
Recursive=true, DefinitionRequired=false)
at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2607
+ 2607 PerformPendingInstantiations(/*LocalOnly=*/true);
+ (gdb) p Function->dump()
+ void forEach(Functor t) {
+ t.func();
+ }
+
+ $6 = void
+ (gdb) frame 17
+ #17 0x00000000013216ef in clang::Sema::InstantiateFunctionDefinition (
+ this=0x3854300, PointOfInstantiation=..., Function=0x3871c50,
- #20 0x0000000001322862 in clang::Sema::PerformPendingInstantiations (
- this=0x3854300, LocalOnly=false)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3348
- #21 0x000000000132187e in clang::Sema::InstantiateFunctionDefinition (
- this=0x3854300, PointOfInstantiation=..., Function=0x386ee90,
Recursive=true, DefinitionRequired=false)
+ at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2589
+ 2589 StmtResult Body = SubstStmt(Pattern, TemplateArgs);
+ (gdb) p Function->dump()
+ void func()$7 = void
+ (gdb)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2616
- #22 0x0000000001322862 in clang::Sema::PerformPendingInstantiations (
- this=0x3854300, LocalOnly=false)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:3348
- #23 0x0000000000f82c09 in clang::Sema::ActOnEndOfTranslationUnit (
- this=0x3854300)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/Sema.cpp:451
- #24 0x0000000000bd05a3 in clang::Parser::ParseTopLevelDecl (this=0x3855c30,
- Result=...)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Parse/Parser.cpp:484
- #25 0x0000000000ba5d52 in clang::ParseAST (S=..., PrintStats=false)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Parse/ParseAST.cpp:85
- #26 0x0000000000b01518 in clang::ASTFrontendAction::ExecuteAction (
- this=0x3814bc0)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Frontend/FrontendAction.cpp:414
- #27 0x0000000000b01167 in clang::FrontendAction::Execute (this=0x3814bc0)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Frontend/FrontendAction.cpp:334
- #28 0x0000000000ada8b1 in clang::CompilerInstance::ExecuteAction (
- this=0x3813070, Act=...)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Frontend/CompilerInstance.cpp:659
- #29 0x000000000080ed81 in clang::ExecuteCompilerInvocation (Clang=0x3813070)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:175
- #30 0x00000000008013f9 in cc1_main (ArgBegin=0x7fffffffd1e0,
- ArgEnd=0x7fffffffd1f0,
- Argv0=0x3812e88 "/usr/local/google/home/richardsmith/llvm-2/build/bin/clang", MainAddr=0x7f99c0)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/tools/driver/cc1_main.cpp:165
- #31 0x00000000007f9c0d in main (argc_=4, argv_=0x7fffffffdb18)
- at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/tools/driver/driver.cpp:352
|