DI: Update testcases for LLVM assembly change

Update testcases after LLVM change r243774.

Most of these had no need to check `tag:` field, but did so as a way of
getting to the `name:` field.  In a few cases I've converted the `tag:`
checks to `arg:` or `CHECK-NOT: arg:`.

llvm-svn: 243775
This commit is contained in:
Duncan P. N. Exon Smith 2015-07-31 18:59:37 +00:00
parent ed013cd221
commit 38a7f11a5a
20 changed files with 49 additions and 46 deletions

View File

@ -1,9 +1,9 @@
// RUN: %clang_cc1 -x c++ -g -emit-llvm -triple x86_64-linux-gnu -o - %s | FileCheck %s
// PR23332
// CHECK: DILocalVariable(tag: DW_TAG_arg_variable, arg: 255
// CHECK: DILocalVariable(tag: DW_TAG_arg_variable, arg: 256
// CHECK: DILocalVariable(tag: DW_TAG_arg_variable, arg: 257
// CHECK: DILocalVariable(arg: 255
// CHECK: DILocalVariable(arg: 256
// CHECK: DILocalVariable(arg: 257
void fn1(int, int, int, int, int, int, int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int, int, int, int, int, int,

View File

@ -11,8 +11,8 @@
// out of order or not at all (the latter would occur if they were both assigned
// the same argument number by mistake).
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: ".block_descriptor", arg: 1,{{.*}}line: 2,
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "param", arg: 2,{{.*}}line: 2,
// CHECK: !DILocalVariable(name: ".block_descriptor", arg: 1,{{.*}}line: 2,
// CHECK: !DILocalVariable(name: "param", arg: 2,{{.*}}line: 2,
// Line directive so we don't have to worry about how many lines preceed the
// test code (as the line number is mangled in with the argument number as shown

View File

@ -23,9 +23,8 @@ struct S {
// CHECK-NOT: DW_TAG_enumeration_type
enum E { ZERO = 0, ONE = 1 };
// CHECK-NOT: DW_TAG_arg_variable
// CHECK-NOT: DILocalVariable
int sum(int p, int q) {
// CHECK-NOT: DW_TAG_auto_variable
int r = p + q;
struct S s;
enum E e;

View File

@ -5,7 +5,7 @@
int main() {
int j = 0;
int k = 0;
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "i"
// CHECK: !DILocalVariable(name: "i"
// CHECK-NEXT: !DILexicalBlock(
// FIXME: Looks like we don't actually need both these lexical blocks (disc 2
@ -19,7 +19,7 @@ int main() {
// GMLT-NOT: !DILexicalBlock
for (int i = 0; i < 10; i++)
j++;
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "i"
// CHECK: !DILocalVariable(name: "i"
// CHECK-NEXT: !DILexicalBlock(
// GMLT-NOT: !DILexicalBlock
for (int i = 0; i < 10; i++)

View File

@ -4,7 +4,7 @@ void testVLAwithSize(int s)
{
// CHECK: dbg.declare
// CHECK: dbg.declare({{.*}}, metadata ![[VAR:.*]], metadata ![[EXPR:.*]])
// CHECK: ![[VAR]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "vla",{{.*}} line: [[@LINE+2]]
// CHECK: ![[VAR]] = !DILocalVariable(name: "vla",{{.*}} line: [[@LINE+2]]
// CHECK: ![[EXPR]] = !DIExpression(DW_OP_deref)
int vla[s];
int i;

View File

@ -1,5 +1,5 @@
//RUN: %clang_cc1 -emit-llvm -g -o - %s | FileCheck %s
//CHECK: DW_TAG_auto_variable
//CHECK: DILocalVariable(
class Foo
{
public:

View File

@ -34,8 +34,8 @@ void foo() {
// CHECK: !DIGlobalVariable(name: "d",{{.*}} file: [[FILE]], line: 6,{{.*}} isLocal: true, isDefinition: true
// CHECK: !DIGlobalVariable(name: "a",{{.*}} file: [[FILE]], line: 6,{{.*}} isLocal: true, isDefinition: true
// CHECK: !DIGlobalVariable(name: "b",{{.*}} file: [[FILE]], line: 6,{{.*}} isLocal: true, isDefinition: true
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "i", {{.*}}, flags: DIFlagArtificial
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "c", {{.*}}, flags: DIFlagArtificial
// CHECK: !DILocalVariable(name: "i", {{.*}}, flags: DIFlagArtificial
// CHECK: !DILocalVariable(name: "c", {{.*}}, flags: DIFlagArtificial
// CHECK: !DILocalVariable(
// CHECK-NOT: name:
// CHECK: type: ![[UNION:[0-9]+]]

View File

@ -8,9 +8,10 @@
// CHECK: !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: ![[MEMFUNTYPE:[0-9]+]]
// CHECK: ![[MEMFUNTYPE]] = !DISubroutineType(types: ![[MEMFUNARGS:[0-9]+]])
// CHECK: ![[MEMFUNARGS]] = {{.*}}, ![[THISTYPE]],
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable
// CHECK: !DILocalVariable(name: "this", arg: 1
// CHECK: !DILocalVariable(arg: 2
// CHECK: !DILocalVariable(arg: 3
// CHECK: !DILocalVariable(arg: 4
union {
int a;
float b;

View File

@ -22,13 +22,13 @@ public:
void g() {
A a;
// The type of pl is "void (A::*)() const &".
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "pl",
// CHECK: !DILocalVariable(name: "pl",
// CHECK-SAME: line: [[@LINE+3]]
// CHECK-SAME: type: ![[PL:[0-9]+]]
// CHECK: !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: ![[PLSR]]
auto pl = &A::l;
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "pr",
// CHECK: !DILocalVariable(name: "pr",
// CHECK-SAME: line: [[@LINE+3]]
// CHECK-SAME: type: ![[PR:[0-9]+]]
// CHECK: !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: ![[PRSR]]

View File

@ -9,14 +9,14 @@ int src();
void f();
void func() {
// CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i"
// CHECK: = !DILocalVariable(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: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i"
// CHECK: = !DILocalVariable(name: "i"
// CHECK-SAME: scope: [[IF2:![0-9]*]]
// CHECK-SAME: line: [[@LINE+2]]
// CHECK: [[IF2]] = distinct !DILexicalBlock({{.*}}line: [[@LINE+1]])
@ -25,12 +25,12 @@ void func() {
} else
f();
// CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i"
// CHECK: = !DILocalVariable(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: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "b"
// CHECK: = !DILocalVariable(name: "b"
// CHECK-SAME: scope: [[FOR_BODY:![0-9]*]]
// CHECK-SAME: line: [[@LINE+6]]
// CHECK: [[FOR_BODY]] = distinct !DILexicalBlock({{.*}}line: [[@LINE-4]])
@ -41,7 +41,7 @@ void func() {
bool b = i != 10; ++i)
f();
// CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i"
// CHECK: = !DILocalVariable(name: "i"
// CHECK-SAME: scope: [[FOR:![0-9]*]]
// CHECK-SAME: line: [[@LINE+2]]
// CHECK: [[FOR]] = distinct !DILexicalBlock({{.*}}line: [[@LINE+1]])
@ -50,7 +50,7 @@ void func() {
// or using declarations) as direct children, they just waste
// space/relocations/etc.
// CHECK: [[FOR_LOOP_INCLUDING_COND:!.*]] = distinct !DILexicalBlock(scope: [[FOR]],{{.*}} line: [[@LINE-4]])
// CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "b"
// CHECK: = !DILocalVariable(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]])
@ -58,13 +58,13 @@ void func() {
}
int x[] = {1, 2};
// CHECK: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "__range"
// CHECK: = !DILocalVariable(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: = !DILocalVariable(tag: DW_TAG_auto_variable, name: "i"
// CHECK: = !DILocalVariable(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]])

View File

@ -20,7 +20,7 @@ void b(int c, ...) {
A a;
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "fptr"
// CHECK: !DILocalVariable(name: "fptr"
// CHECK-SAME: line: [[@LINE+2]]
// CHECK-SAME: type: ![[PST:[0-9]+]]
void (*fptr)(int, ...) = b;

View File

@ -142,11 +142,13 @@ incomplete (*x)[3];
}
// For some reason function arguments ended up down here
// CHECK: ![[F]] = !DILocalVariable(tag: DW_TAG_arg_variable, name: "f", arg: 1, scope: [[FUNC]]
// CHECK: ![[F]] = !DILocalVariable(name: "f", arg: 1, scope: [[FUNC]]
// CHECK-SAME: type: !"[[FOO]]"
// CHECK: ![[EXPR]] = !DIExpression(DW_OP_deref)
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "c"
// CHECK: !DILocalVariable(name: "c"
// CHECK-NOT: arg:
// CHECK-SAME: )
namespace pr16214 {
struct a {

View File

@ -1,7 +1,7 @@
// RUN: %clang_cc1 -x objective-c -emit-llvm -g < %s | FileCheck %s
// Test to check that "self" argument is assigned a location.
// CHECK: call void @llvm.dbg.declare(metadata %0** %{{[^,]+}}, metadata [[SELF:![0-9]*]], metadata !{{.*}})
// CHECK: [[SELF]] = !DILocalVariable(tag: DW_TAG_arg_variable, name: "self"
// CHECK: [[SELF]] = !DILocalVariable(name: "self", arg: 1,
@interface Foo
-(void) Bar: (int)x ;

View File

@ -10,6 +10,6 @@ void f0() {
// We should have 3 lexical blocks here at the moment, including one
// for the catch block.
// CHECK: !DILexicalBlock(
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable
// CHECK: !DILocalVariable(
// CHECK: !DILexicalBlock(
// CHECK: !DILexicalBlock(

View File

@ -66,6 +66,7 @@ typedef enum {
// CHECK: ![[MAIN:.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Main"
// CHECK-SAME: line: 23,
// CHECK: ![[PMAIN:.*]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: ![[MAIN]],
// CHECK: ![[BDMD]] = !DILocalVariable(tag: DW_TAG_arg_variable, name: ".block_descriptor"
// CHECK: ![[SELF]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "self"
// CHECK: ![[BDMD]] = !DILocalVariable(name: ".block_descriptor", arg:
// CHECK: ![[SELF]] = !DILocalVariable(name: "self"
// CHECK-NOT: arg:
// CHECK-SAME: line: 40,

View File

@ -61,8 +61,8 @@ static void run(void (^block)(void))
{
if ((self = [super init])) {
run(^{
// CHECK-DAG: ![[SELF]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "self"{{.*}}, line: [[@LINE+4]],
// CHECK-DAG: ![[D]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "d"{{.*}}, line: [[@LINE+1]],
// CHECK-DAG: ![[SELF]] = !DILocalVariable(name: "self", scope:{{.*}}, line: [[@LINE+4]],
// CHECK-DAG: ![[D]] = !DILocalVariable(name: "d", scope:{{.*}}, line: [[@LINE+1]],
NSMutableDictionary *d = [[NSMutableDictionary alloc] init];
ivar = 42 + (int)[d count];
});

View File

@ -38,10 +38,10 @@ int main()
// Verify that the debug type for both variables is 'id'.
// CHECK: ![[IDTYPE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_typedef, name: "id"
//
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "bad_carrier"
// CHECK: !DILocalVariable(name: "bad_carrier", arg:
// CHECK-NOT: line:
// CHECK-SAME: type: ![[IDTYPE]]
//
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "good_carrier"
// CHECK: !DILocalVariable(name: "good_carrier", arg:
// CHECK-NOT: line:
// CHECK-SAME: type: ![[IDTYPE]]

View File

@ -13,12 +13,12 @@
{
// The debug type for these two will be identical, because we do not
// actually emit the ownership qualifier.
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "weakSelf",
// CHECK: !DILocalVariable(name: "weakSelf",
// CHECK-SAME: line: [[@LINE+2]]
// CHECK-SAME: type: ![[SELFTY:[0-9]+]]
__attribute__((objc_ownership(weak))) __typeof(self) weakSelf = self;
Block = [^{
// CHECK: !DILocalVariable(tag: DW_TAG_auto_variable, name: "strongSelf",
// CHECK: !DILocalVariable(name: "strongSelf",
// CHECK-SAME: line: [[@LINE+2]]
// CHECK-SAME: type: ![[SELFTY]]
__attribute__((objc_ownership(strong))) __typeof(self) strongSelf = weakSelf;

View File

@ -14,15 +14,15 @@
}
@end
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "self", arg: 1,
// CHECK: !DILocalVariable(name: "self", arg: 1,
// CHECK-SAME: scope: ![[CTOR:[0-9]+]]
// CHECK-NOT: line:
// CHECK-SAME: flags: DIFlagArtificial | DIFlagObjectPointer{{[,)]}}
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "_cmd", arg: 2,
// CHECK: !DILocalVariable(name: "_cmd", arg: 2,
// CHECK-SAME: scope: ![[CTOR]]
// CHECK-NOT: line:
// CHECK-SAME: flags: DIFlagArtificial{{[,)]}}
// CHECK: !DILocalVariable(tag: DW_TAG_arg_variable, name: "myarg", arg: 3,
// CHECK: !DILocalVariable(name: "myarg", arg: 3,
// CHECK-SAME: scope: ![[CTOR]]
// CHECK-SAME: line: 11
// CHECK-NOT: flags:

View File

@ -59,22 +59,22 @@ int main() {
// CHECK-SAME: line: 22
// CHECK-SAME: baseType: ![[ENUMERATOR3]]
// CHECK: ![[ENUM0]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "e0"
// CHECK: ![[ENUM0]] = !DILocalVariable(name: "e0"
// CHECK-SAME: type: ![[TYPE0:[0-9]+]]
// CHECK: ![[TYPE0]] = !DIDerivedType(tag: DW_TAG_typedef, name: "Enum0",
// CHECK-SAME: baseType: ![[ENUMERATOR0]]
// CHECK: ![[ENUM1]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "e1"
// CHECK: ![[ENUM1]] = !DILocalVariable(name: "e1"
// CHECK-SAME: type: ![[TYPE1:[0-9]+]]
// CHECK: ![[TYPE1]] = !DIDerivedType(tag: DW_TAG_typedef, name: "Enum1"
// CHECK-SAME: baseType: ![[ENUMERATOR1]]
// CHECK: ![[ENUM2]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "e2"
// CHECK: ![[ENUM2]] = !DILocalVariable(name: "e2"
// CHECK-SAME: type: ![[TYPE2:[0-9]+]]
// CHECK: ![[TYPE2]] = !DIDerivedType(tag: DW_TAG_typedef, name: "Enum2"
// CHECK-SAME: baseType: ![[ENUMERATOR2]]
// CHECK: ![[ENUM3]] = !DILocalVariable(tag: DW_TAG_auto_variable, name: "e3"
// CHECK: ![[ENUM3]] = !DILocalVariable(name: "e3"
// CHECK-SAME: type: ![[TYPE3:[0-9]+]]
// CHECK: ![[TYPE3]] = !DIDerivedType(tag: DW_TAG_typedef, name: "Enum3"
// CHECK-SAME: baseType: ![[ENUMERATOR3]]