diff options
author | dim <dim@FreeBSD.org> | 2015-05-27 18:47:56 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2015-05-27 18:47:56 +0000 |
commit | 3191b2b32a96e1a6ee833fcca73e5c8e0c67ba65 (patch) | |
tree | dbbd4047878da71c1a706e26ce05b4e7791b14cc /test/CodeGenCXX/debug-info-scope.cpp | |
parent | 38d6f2e7f2ce51a5b3836d26596c6c34a3288752 (diff) | |
download | FreeBSD-src-3191b2b32a96e1a6ee833fcca73e5c8e0c67ba65.zip FreeBSD-src-3191b2b32a96e1a6ee833fcca73e5c8e0c67ba65.tar.gz |
Vendor import of clang trunk r238337:
https://llvm.org/svn/llvm-project/cfe/trunk@238337
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 e66588d..478b789 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]]) } } |