Changelog

debug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#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: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,
    Recursive=true, DefinitionRequired=false)
    at /usr/local/google/home/richardsmith/llvm-2/src/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:2607
#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: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

debug (annotation)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(gdb) frame 21     
#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:2616
2616        PerformPendingInstantiations();
(gdb) p Function->dump()
void doIt() {
    struct Functor {
        void func();
        int i;
    };
    forEach(Functor());
}

$5 = void
(gdb) frame 19
#19 0x0000000001321845 in clang::Sema::InstantiateFunctionDefinition (
    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, 
    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)