xref: /aosp_15_r20/external/llvm/test/Verifier/llvm.dbg.intrinsic-dbg-attachment.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
2*9880d681SAndroid Build Coastguard Workerdefine void @foo() {
3*9880d681SAndroid Build Coastguard Workerentry:
4*9880d681SAndroid Build Coastguard Worker  call void @llvm.dbg.value(
5*9880d681SAndroid Build Coastguard Worker      metadata i8* undef,
6*9880d681SAndroid Build Coastguard Worker      i64 0,
7*9880d681SAndroid Build Coastguard Worker      metadata !DILocalVariable(scope: !1),
8*9880d681SAndroid Build Coastguard Worker      metadata !DIExpression())
9*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: llvm.dbg.value intrinsic requires a !dbg attachment
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @llvm.dbg.value({{.*}})
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: label %entry
12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: void ()* @foo
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Worker  call void @llvm.dbg.declare(
15*9880d681SAndroid Build Coastguard Worker      metadata i8* undef,
16*9880d681SAndroid Build Coastguard Worker      metadata !DILocalVariable(scope: !1),
17*9880d681SAndroid Build Coastguard Worker      metadata !DIExpression())
18*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: llvm.dbg.declare intrinsic requires a !dbg attachment
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @llvm.dbg.declare({{.*}})
20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: label %entry
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: void ()* @foo
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker  call void @llvm.dbg.value(
24*9880d681SAndroid Build Coastguard Worker      metadata i8* undef,
25*9880d681SAndroid Build Coastguard Worker      i64 0,
26*9880d681SAndroid Build Coastguard Worker      metadata !DILocalVariable(scope: !1),
27*9880d681SAndroid Build Coastguard Worker      metadata !DIExpression()),
28*9880d681SAndroid Build Coastguard Worker    !dbg !DILocation(scope: !2)
29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mismatched subprogram between llvm.dbg.value variable and !dbg attachment
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @llvm.dbg.value({{[^,]+, [^,]+}}, metadata ![[VAR:[0-9]+]], {{[^,]+}}), !dbg ![[LOC:[0-9]+]]
31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: label %entry
32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: void ()* @foo
33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ![[VAR]] = !DILocalVariable({{.*}}scope: ![[VARSP:[0-9]+]]
34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ![[VARSP]] = distinct !DISubprogram(
35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ![[LOC]] = !DILocation({{.*}}scope: ![[LOCSP:[0-9]+]]
36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ![[LOCSP]] = distinct !DISubprogram(
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker  call void @llvm.dbg.declare(
39*9880d681SAndroid Build Coastguard Worker      metadata i8* undef,
40*9880d681SAndroid Build Coastguard Worker      metadata !DILocalVariable(scope: !1),
41*9880d681SAndroid Build Coastguard Worker      metadata !DIExpression()),
42*9880d681SAndroid Build Coastguard Worker    !dbg !DILocation(scope: !2)
43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mismatched subprogram between llvm.dbg.declare variable and !dbg attachment
44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @llvm.dbg.declare({{[^,]+}}, metadata ![[VAR:[0-9]+]], {{.*[^,]+}}), !dbg ![[LOC:[0-9]+]]
45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: label %entry
46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: void ()* @foo
47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ![[VAR]] = !DILocalVariable({{.*}}scope: ![[VARSP:[0-9]+]]
48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ![[VARSP]] = distinct !DISubprogram(
49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ![[LOC]] = !DILocation({{.*}}scope: ![[LOCSP:[0-9]+]]
50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ![[LOCSP]] = distinct !DISubprogram(
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker  ret void
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.dbg.value(metadata, i64, metadata, metadata)
56*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.dbg.declare(metadata, metadata, metadata)
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!0}
59*9880d681SAndroid Build Coastguard Worker!0 = !{i32 2, !"Debug Info Version", i32 3}
60*9880d681SAndroid Build Coastguard Worker!1 = distinct !DISubprogram(name: "foo")
61*9880d681SAndroid Build Coastguard Worker!2 = distinct !DISubprogram(name: "bar")
62