diff options
Diffstat (limited to 'test/CodeGenCXX/debug-info-scope.cpp')
| -rw-r--r-- | test/CodeGenCXX/debug-info-scope.cpp | 51 | 
1 files changed, 34 insertions, 17 deletions
| diff --git a/test/CodeGenCXX/debug-info-scope.cpp b/test/CodeGenCXX/debug-info-scope.cpp index e66588d699af..478b7895e4ec 100644 --- a/test/CodeGenCXX/debug-info-scope.cpp +++ b/test/CodeGenCXX/debug-info-scope.cpp @@ -9,47 +9,64 @@ int src();  void f();  void func() { -  // CHECK: = !{!"0x100\00{{.*}}", [[IF1:![0-9]*]], {{.*}} ; [ DW_TAG_auto_variable ] [i] [line [[@LINE+2]]] -  // CHECK: [[IF1]] = !{!"0xb\00[[@LINE+1]]\00{{.*}}", !{{.*}}} ; [ DW_TAG_lexical_block ] +  // CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i" +  // CHECK-SAME:               scope: [[IF1:![0-9]*]] +  // CHECK-SAME:               line: [[@LINE+2]] +  // CHECK: [[IF1]] = distinct !DILexicalBlock({{.*}}line: [[@LINE+1]])    if (int i = src())      f(); -  // CHECK: = !{!"0x100\00{{.*}}", [[IF2:![0-9]*]], {{.*}} ; [ DW_TAG_auto_variable ] [i] [line [[@LINE+2]]] -  // CHECK: [[IF2]] = !{!"0xb\00[[@LINE+1]]\00{{.*}}", !{{.*}}} ; [ DW_TAG_lexical_block ] +  // CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i" +  // CHECK-SAME:               scope: [[IF2:![0-9]*]] +  // CHECK-SAME:               line: [[@LINE+2]] +  // CHECK: [[IF2]] = distinct !DILexicalBlock({{.*}}line: [[@LINE+1]])    if (int i = src()) {      f();    } else      f(); -  // CHECK: = !{!"0x100\00{{.*}}", [[FOR:![0-9]*]], {{.*}} ; [ DW_TAG_auto_variable ] [i] [line [[@LINE+2]]] -  // CHECK: [[FOR]] = !{!"0xb\00[[@LINE+1]]\00{{.*}}", !{{.*}}} ; [ DW_TAG_lexical_block ] +  // CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i" +  // CHECK-SAME:               scope: [[FOR:![0-9]*]] +  // CHECK-SAME:               line: [[@LINE+2]] +  // CHECK: [[FOR]] = distinct !DILexicalBlock({{.*}}line: [[@LINE+1]])    for (int i = 0; -  // CHECK: = !{!"0x100\00{{.*}}", [[FOR_BODY:![0-9]*]], {{.*}} ; [ DW_TAG_auto_variable ] [b] [line [[@LINE+6]]] +  // CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "b" +  // CHECK-SAME:               scope: [[FOR_BODY:![0-9]*]] +  // CHECK-SAME:               line: [[@LINE+6]] +  // CHECK: [[FOR_BODY]] = distinct !DILexicalBlock({{.*}}line: [[@LINE-4]])    // The scope could be located at 'bool b', but LLVM drops line information for    // scopes anyway, so it's not terribly important.    // FIXME: change the debug info schema to not include locations of scopes,    // since they're not used. -  // CHECK: [[FOR_BODY]] = !{!"0xb\00[[@LINE-6]]\00{{.*}}", !{{.*}}} ; [ DW_TAG_lexical_block ]         bool b = i != 10; ++i)      f(); -  // CHECK: = !{!"0x100\00{{.*}}", [[FOR:![0-9]*]], {{.*}} ; [ DW_TAG_auto_variable ] [i] [line [[@LINE+2]]] -  // CHECK: [[FOR]] = !{!"0xb\00[[@LINE+1]]\00{{.*}}", !{{.*}}} ; [ DW_TAG_lexical_block ] +  // CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i" +  // CHECK-SAME:               scope: [[FOR:![0-9]*]] +  // CHECK-SAME:               line: [[@LINE+2]] +  // CHECK: [[FOR]] = distinct !DILexicalBlock({{.*}}line: [[@LINE+1]])    for (int i = 0; i != 10; ++i) {      // FIXME: Do not include scopes that have only other scopes (and no variables      // or using declarations) as direct children, they just waste      // space/relocations/etc. -    // CHECK: [[FOR_LOOP_INCLUDING_COND:!.*]] = !{!"0xb\00[[@LINE-4]]\00{{.*}}", !{{[0-9]+}}, [[FOR]]} ; [ DW_TAG_lexical_block ] -    // CHECK: = !{!"0x100\00{{.*}}", [[FOR_COMPOUND:![0-9]*]], {{.*}} ; [ DW_TAG_auto_variable ] [b] [line [[@LINE+2]]] -    // CHECK: [[FOR_COMPOUND]] = !{!"0xb\00[[@LINE-6]]\00{{.*}}", !{{[0-9]+}}, [[FOR_LOOP_INCLUDING_COND]]} ; [ DW_TAG_lexical_block ] +    // CHECK: [[FOR_LOOP_INCLUDING_COND:!.*]] = distinct !DILexicalBlock(scope: [[FOR]],{{.*}} line: [[@LINE-4]]) +    // CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "b" +    // CHECK-SAME:               scope: [[FOR_COMPOUND:![0-9]*]] +    // CHECK-SAME:               line: [[@LINE+2]] +    // CHECK: [[FOR_COMPOUND]] = distinct !DILexicalBlock(scope: [[FOR_LOOP_INCLUDING_COND]],{{.*}} line: [[@LINE-8]])      bool b = i % 2;    }    int x[] = {1, 2}; -  // CHECK: = !{!"0x100\00{{.*}}", [[RANGE_FOR:![0-9]*]], {{.*}} ; [ DW_TAG_auto_variable ] [__range] [line 0] -  // CHECK: [[RANGE_FOR]] = !{!"0xb\00[[@LINE+1]]\00{{.*}}", !{{.*}}} ; [ DW_TAG_lexical_block ] +  // CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "__range" +  // CHECK-SAME:               scope: [[RANGE_FOR:![0-9]*]] +  // CHECK-NOT:                line: +  // CHECK-SAME:               ){{$}} +  // CHECK: [[RANGE_FOR]] = distinct !DILexicalBlock({{.*}}, line: [[@LINE+1]])    for (int i : x) { -  // CHECK: = !{!"0x100\00{{.*}}", [[RANGE_FOR_BODY:![0-9]*]], {{.*}} ; [ DW_TAG_auto_variable ] [i] [line [[@LINE-1]]] -  // CHECK: [[RANGE_FOR_BODY]] = !{!"0xb\00[[@LINE-2]]\00{{.*}}", !{{[0-9]+}}, [[RANGE_FOR]]} ; [ DW_TAG_lexical_block ] +    // CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i" +    // CHECK-SAME:               scope: [[RANGE_FOR_BODY:![0-9]*]] +    // CHECK-SAME:               line: [[@LINE-3]] +    // CHECK: [[RANGE_FOR_BODY]] = distinct !DILexicalBlock(scope: [[RANGE_FOR]],{{.*}} line: [[@LINE-4]])    }  } | 
