Skip to content

Commit ea2a924

Browse files
committed
Add tests (requires parsing)
1 parent 3bee366 commit ea2a924

15 files changed

+464
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
; RUN: llvm-as -disable-output <%s 2>&1| FileCheck %s
2+
3+
; CHECK: DIBlockByRefStruct on DICompositeType is no longer supported
4+
; CHECK: warning: ignoring invalid debug info
5+
6+
define void @foo() {
7+
entry:
8+
%s = alloca i32
9+
#dbg_declare(ptr %s, !2, !DIExpression(), !DILocation(scope: !1))
10+
ret void
11+
}
12+
13+
14+
!llvm.module.flags = !{!0}
15+
!0 = !{i32 2, !"Debug Info Version", i32 3}
16+
!1 = distinct !DISubprogram()
17+
!2 = !DILocalVariable(scope: !1, type: !3)
18+
!3 = !DICompositeType(tag: DW_TAG_structure_type, flags: DIFlagReservedBit4)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
; RUN: opt -passes=verify -disable-output <%s 2>&1 | FileCheck %s
2+
;
3+
; This test creates an invalid vector by defining multiple elements for the
4+
; vector's DICompositeType definition. A vector should only have one element
5+
; in its DICompositeType 'elements' array.
6+
;
7+
; CHECK: invalid vector
8+
9+
@f.foo = private unnamed_addr constant <6 x float> zeroinitializer, align 32
10+
11+
define void @f() {
12+
%1 = alloca <6 x float>, align 32
13+
#dbg_declare(ptr %1, !10, !DIExpression(), !18)
14+
ret void
15+
}
16+
17+
18+
!llvm.dbg.cu = !{!0}
19+
!llvm.module.flags = !{!3, !4}
20+
21+
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
22+
!1 = !DIFile(filename: "test.c", directory: "/dbg/info")
23+
!2 = !{}
24+
!3 = !{i32 2, !"Dwarf Version", i32 4}
25+
!4 = !{i32 2, !"Debug Info Version", i32 3}
26+
!7 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 3, type: !8, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)
27+
!8 = !DISubroutineType(types: !9)
28+
!9 = !{null}
29+
!10 = !DILocalVariable(name: "foo", scope: !7, file: !1, line: 4, type: !12)
30+
!12 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 256, flags: DIFlagVector, elements: !14)
31+
!13 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float)
32+
!14 = !{!15, !19}
33+
!15 = !DISubrange(count: 6)
34+
!18 = !DILocation(line: 4, column: 48, scope: !7)
35+
!19 = !DISubrange(count: 42)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
; RUN: opt %s -passes=verify 2>&1 | FileCheck %s
2+
; CHECK: invalid type
3+
; CHECK: !20 = !DILocalVariable(name: "f", scope: !21, file: !13, line: 970, type: !14)
4+
; CHECK: !14 = !DISubroutineType(types: !15)
5+
6+
7+
%timespec.0.1.2.3.0.1.2 = type { i64, i64 }
8+
define internal i64 @init_vdso_clock_gettime(i32, ptr nonnull) unnamed_addr !dbg !142 {
9+
#dbg_value(ptr null, !162, !DIExpression(), !167)
10+
ret i64 -38, !dbg !168
11+
}
12+
!llvm.module.flags = !{!0}
13+
!llvm.dbg.cu = !{!1}
14+
!0 = !{i32 2, !"Debug Info Version", i32 3}
15+
!1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "zig 0.3.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !76)
16+
!2 = !DIFile(filename: "test", directory: ".")
17+
!3 = !{!4}
18+
!4 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Arch", scope: !5, file: !5, line: 44, baseType: !6, size: 8, align: 8, elements: !7)
19+
!5 = !DIFile(filename: "builtin.zig", directory: "/home/andy/.local/share/zig/stage1/builtin/ugMGxVES9OkDAffv3xhJS3KQVy0Wm1xPM3Bc6x4MBuup5aetdi5pVTrGRG2aDAn0")
20+
!6 = !DIBasicType(name: "u7", size: 8, encoding: DW_ATE_unsigned)
21+
!7 = !{!8}
22+
!8 = !DIEnumerator(name: "armv8_5a", value: 0)
23+
!76 = !{!77}
24+
!77 = !DIGlobalVariableExpression(var: !78, expr: !DIExpression())
25+
!78 = distinct !DIGlobalVariable(name: "arch", linkageName: "arch", scope: !5, file: !5, line: 437, type: !4, isLocal: true, isDefinition: true)
26+
!81 = !DIFile(filename: "index.zig", directory: "/store/dev/zig/build-llvm8-debug/lib/zig/std/os/linux")
27+
!142 = distinct !DISubprogram(name: "init_vdso_clock_gettime", scope: !81, file: !81, line: 968, type: !143, scopeLine: 968, flags: DIFlagStaticMember, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !1, retainedNodes: !153)
28+
!143 = !DISubroutineType(types: !144)
29+
!144 = !{!145}
30+
!145 = !DIBasicType(name: "usize", size: 64, encoding: DW_ATE_unsigned)
31+
!146 = !DIBasicType(name: "i32", size: 32, encoding: DW_ATE_signed)
32+
!153 = !{!154}
33+
!154 = !DILocalVariable(name: "clk", arg: 1, scope: !142, file: !81, line: 968, type: !146)
34+
!162 = !DILocalVariable(name: "f", scope: !163, file: !81, line: 970, type: !143)
35+
!163 = distinct !DILexicalBlock(scope: !164, file: !81, line: 969, column: 5)
36+
!164 = distinct !DILexicalBlock(scope: !165, file: !81, line: 968, column: 66)
37+
!165 = distinct !DILexicalBlock(scope: !166, file: !81, line: 968, column: 45)
38+
!166 = distinct !DILexicalBlock(scope: !142, file: !81, line: 968, column: 35)
39+
!167 = !DILocation(line: 970, column: 5, scope: !163)
40+
!168 = !DILocation(line: 972, column: 28, scope: !169)
41+
!169 = distinct !DILexicalBlock(scope: !163, file: !81, line: 970, column: 5)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
; RUN: llvm-as -disable-output <%s 2>&1| FileCheck %s
2+
3+
; CHECK-NOT: #dbg_value
4+
; CHECK: Entry values are only allowed in MIR unless they target a swiftasync Argument
5+
; CHECK: #dbg_value(i32 %param, !{{.*}}, !DIExpression(DW_OP_LLVM_entry_value, 1)
6+
; CHECK-NOT: #dbg_value
7+
; CHECK-NOT: Entry values are only allowed
8+
; CHECK: warning: ignoring invalid debug info
9+
10+
define void @foo(i32 %param, ptr swiftasync %ok_param) !dbg !4 {
11+
entry:
12+
#dbg_value(i32 %param, !8, !DIExpression(DW_OP_LLVM_entry_value, 1), !9)
13+
#dbg_value(ptr %ok_param, !8, !DIExpression(DW_OP_LLVM_entry_value, 1), !9)
14+
#dbg_value(ptr poison, !8, !DIExpression(DW_OP_LLVM_entry_value, 1), !9)
15+
#dbg_value(ptr undef, !8, !DIExpression(DW_OP_LLVM_entry_value, 1), !9)
16+
ret void
17+
}
18+
19+
20+
attributes #0 = { nounwind readnone speculatable willreturn }
21+
22+
!llvm.dbg.cu = !{!0}
23+
!llvm.module.flags = !{!2, !3}
24+
25+
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, emissionKind: FullDebug)
26+
!1 = !DIFile(filename: "a.c", directory: "/")
27+
!2 = !{i32 2, !"Dwarf Version", i32 4}
28+
!3 = !{i32 2, !"Debug Info Version", i32 3}
29+
!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, type: !5, unit: !0)
30+
!5 = !DISubroutineType(types: !6)
31+
!6 = !{null, !7}
32+
!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
33+
!8 = !DILocalVariable(name: "param", arg: 1, scope: !4, file: !1, type: !7)
34+
!9 = !DILocation(line: 0, scope: !4)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
; RUN: llvm-as -disable-output < %s -o /dev/null 2>&1 | FileCheck %s
2+
3+
4+
define void @foo() !dbg !2 {
5+
entry:
6+
%a = alloca i32
7+
; CHECK: conflicting debug info for argument
8+
#dbg_value(i32 0, !3, !DIExpression(), !6)
9+
#dbg_declare(ptr %a, !4, !DIExpression(), !6)
10+
ret void, !dbg !6
11+
}
12+
13+
; CHECK: warning: ignoring invalid debug info
14+
15+
!llvm.dbg.cu = !{!0}
16+
!llvm.module.flags = !{!7, !8}
17+
18+
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang", emissionKind: FullDebug)
19+
!1 = !DIFile(filename: "x.c", directory: "/")
20+
!2 = distinct !DISubprogram(name: "foo", scope: !0, isDefinition: true, unit: !0)
21+
!3 = !DILocalVariable(name: "a", arg: 1, scope: !2, file: !1, line: 1, type: !5)
22+
!4 = !DILocalVariable(name: "b", arg: 1, scope: !2, file: !1, line: 1, type: !5)
23+
!5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
24+
!6 = !DILocation(line: 1, scope: !2)
25+
!7 = !{i32 2, !"Dwarf Version", i32 4}
26+
!8 = !{i32 1, !"Debug Info Version", i32 3}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
; RUN: llvm-as < %s -o %t
2+
; RUN: llvm-dis < %t -o - | FileCheck %s
3+
; Created at -O1 from:
4+
; int sink(int);
5+
; __attribute__((always_inline)) int f(int i) { return sink(i); }
6+
; __attribute__((always_inline)) int g(int j) { return sink(j); }
7+
; __attribute__((nodebug)) int nodebug(int k) { return f(k)+g(k); }
8+
source_filename = "t.c"
9+
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
10+
target triple = "x86_64-apple-macosx10.12.0"
11+
12+
declare i32 @sink(i32) local_unnamed_addr
13+
14+
define i32 @nodebug(i32 %k) local_unnamed_addr #2 {
15+
entry:
16+
; This should not set off the FnArg Verifier. The two variables are in differrent scopes.
17+
#dbg_value(i32 %k, !12, !13, !14)
18+
%call.k = tail call i32 @sink(i32 %k) #4, !dbg !15
19+
#dbg_value(i32 %k, !19, !13, !20)
20+
%call.k3 = tail call i32 @sink(i32 %k) #4, !dbg !21
21+
%add = add nsw i32 %call.k3, %call.k
22+
ret i32 %add
23+
}
24+
25+
; Function Attrs: nounwind readnone
26+
27+
attributes #2 = { nounwind ssp uwtable }
28+
attributes #3 = { nounwind readnone }
29+
30+
!llvm.dbg.cu = !{!0}
31+
!llvm.module.flags = !{!3, !4, !5}
32+
!llvm.ident = !{!6}
33+
34+
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 5.0.0 (trunk 297153) (llvm/trunk 297155)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
35+
!1 = !DIFile(filename: "t.c", directory: "/tmp")
36+
!2 = !{}
37+
!3 = !{i32 2, !"Dwarf Version", i32 4}
38+
!4 = !{i32 2, !"Debug Info Version", i32 3}
39+
!5 = !{i32 1, !"PIC Level", i32 2}
40+
!6 = !{!"clang version 5.0.0 (trunk 297153) (llvm/trunk 297155)"}
41+
!7 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 2, type: !8, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !11)
42+
!8 = !DISubroutineType(types: !9)
43+
!9 = !{!10, !10}
44+
!10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
45+
!11 = !{!12}
46+
; CHECK: !DILocalVariable(name: "i", arg: 1
47+
!12 = !DILocalVariable(name: "i", arg: 1, scope: !7, file: !1, line: 2, type: !10)
48+
!13 = !DIExpression()
49+
!14 = !DILocation(line: 2, column: 42, scope: !7)
50+
!15 = !DILocation(line: 2, column: 54, scope: !7)
51+
!16 = !DILocation(line: 2, column: 47, scope: !7)
52+
!17 = distinct !DISubprogram(name: "g", scope: !1, file: !1, line: 3, type: !8, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !18)
53+
!18 = !{!19}
54+
; CHECK: !DILocalVariable(name: "j", arg: 1
55+
!19 = !DILocalVariable(name: "j", arg: 1, scope: !17, file: !1, line: 3, type: !10)
56+
!20 = !DILocation(line: 3, column: 42, scope: !17)
57+
!21 = !DILocation(line: 3, column: 54, scope: !17)
58+
!22 = !DILocation(line: 3, column: 47, scope: !17)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
; RUN: llvm-as < %s -disable-output 2>&1 | FileCheck %s
2+
3+
define void @foo(i32 %n) {
4+
entry:
5+
%0 = zext i32 %n to i64
6+
%vla = alloca i32, i64 %0, align 16
7+
#dbg_declare(ptr %vla, !19, !DIExpression(), !18)
8+
ret void
9+
}
10+
11+
12+
!llvm.dbg.cu = !{!0}
13+
!llvm.module.flags = !{!3, !4, !5}
14+
!llvm.ident = !{!6}
15+
16+
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 5.0.1", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
17+
!1 = !DIFile(filename: "vla.c", directory: "/path/to")
18+
!2 = !{}
19+
!3 = !{i32 2, !"Dwarf Version", i32 4}
20+
!4 = !{i32 2, !"Debug Info Version", i32 3}
21+
!5 = !{i32 1, !"wchar_size", i32 4}
22+
!6 = !{!"clang version 5.0.1"}
23+
!7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 20, type: !8, isLocal: false, isDefinition: true, scopeLine: 20, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !11)
24+
!8 = !DISubroutineType(types: !9)
25+
!9 = !{null, !10}
26+
!10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
27+
!11 = !{!16, !19}
28+
!12 = !DIExpression()
29+
!16 = !DILocalVariable(name: "vla_expr", scope: !7, file: !1, line: 21, type: !17)
30+
!17 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned)
31+
!18 = !DILocation(line: 21, column: 7, scope: !7)
32+
!19 = !DILocalVariable(name: "vla", scope: !7, file: !1, line: 21, type: !20)
33+
!20 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, align: 32, elements: !21)
34+
!21 = !{!22}
35+
; CHECK: Count must be signed constant or DIVariable or DIExpression
36+
!22 = !DISubrange(count: !17)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
2+
; CHECK: invalid #dbg record address/value
3+
; CHECK-NEXT: #dbg_declare({{.*}})
4+
; CHECK-NEXT: !""
5+
; CHECK: warning: ignoring invalid debug info
6+
7+
define void @foo(i32 %a) {
8+
entry:
9+
%s = alloca i32
10+
#dbg_declare(!"", !DILocalVariable(scope: !1), !DIExpression(), !DILocation(scope: !1))
11+
ret void
12+
}
13+
14+
!llvm.module.flags = !{!0}
15+
!0 = !{i32 2, !"Debug Info Version", i32 3}
16+
!1 = distinct !DISubprogram()
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
2+
; CHECK: invalid #dbg record expression
3+
; CHECK-NEXT: #dbg_declare({{.*}})
4+
; CHECK-NEXT: !{}
5+
; CHECK: warning: ignoring invalid debug info
6+
7+
define void @foo(i32 %a) {
8+
entry:
9+
%s = alloca i32
10+
#dbg_declare(ptr %s, !DILocalVariable(scope: !1), !{}, !DILocation(scope: !1))
11+
ret void
12+
}
13+
14+
!llvm.module.flags = !{!0}
15+
!0 = !{i32 2, !"Debug Info Version", i32 3}
16+
!1 = distinct !DISubprogram()
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
2+
; CHECK: invalid #dbg record variable
3+
; CHECK-NEXT: #dbg_declare({{.*}})
4+
; CHECK-NEXT: !{}
5+
; CHECK: warning: ignoring invalid debug info
6+
7+
define void @foo(i32 %a) {
8+
entry:
9+
%s = alloca i32
10+
#dbg_declare(ptr %s, !{}, !DIExpression(), !DILocation(scope: !1))
11+
ret void
12+
}
13+
14+
15+
!llvm.module.flags = !{!0}
16+
!0 = !{i32 2, !"Debug Info Version", i32 3}
17+
!1 = distinct !DISubprogram()
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
2+
define void @foo() {
3+
entry:
4+
#dbg_value(
5+
ptr undef,
6+
!DILocalVariable(scope: !1),
7+
!DIExpression(),
8+
!{})
9+
; CHECK-LABEL: invalid #dbg record location
10+
; CHECK-NEXT: #dbg_value({{.*}})
11+
12+
#dbg_declare(
13+
ptr undef,
14+
!DILocalVariable(scope: !1),
15+
!DIExpression(),
16+
!{})
17+
; CHECK-LABEL: invalid #dbg record location
18+
; CHECK-NEXT: #dbg_declare({{.*}})
19+
20+
#dbg_value(
21+
ptr undef,
22+
!DILocalVariable(scope: !1),
23+
!DIExpression(),
24+
!DILocation(scope: !2))
25+
; CHECK-LABEL: mismatched subprogram between #dbg record variable and DILocation
26+
; CHECK-NEXT: #dbg_value({{[^,]+}}, ![[VAR:[0-9]+]], {{[^,]+}}, ![[LOC:[0-9]+]]
27+
; CHECK-NEXT: label %entry
28+
; CHECK-NEXT: ptr @foo
29+
; CHECK-NEXT: ![[VAR]] = !DILocalVariable({{.*}}scope: ![[VARSP:[0-9]+]]
30+
; CHECK-NEXT: ![[VARSP]] = distinct !DISubprogram(
31+
; CHECK-NEXT: ![[LOC]] = !DILocation({{.*}}scope: ![[LOCSP:[0-9]+]]
32+
; CHECK-NEXT: ![[LOCSP]] = distinct !DISubprogram(
33+
34+
#dbg_declare(
35+
ptr undef,
36+
!DILocalVariable(scope: !1),
37+
!DIExpression(),
38+
!DILocation(scope: !2))
39+
; CHECK-LABEL: mismatched subprogram between #dbg record variable and DILocation
40+
; CHECK-NEXT: #dbg_declare({{[^,]+}}, ![[VAR:[0-9]+]], {{.*[^,]+}}, ![[LOC:[0-9]+]]
41+
; CHECK-NEXT: label %entry
42+
; CHECK-NEXT: ptr @foo
43+
; CHECK-NEXT: ![[VAR]] = !DILocalVariable({{.*}}scope: ![[VARSP:[0-9]+]]
44+
; CHECK-NEXT: ![[VARSP]] = distinct !DISubprogram(
45+
; CHECK-NEXT: ![[LOC]] = !DILocation({{.*}}scope: ![[LOCSP:[0-9]+]]
46+
; CHECK-NEXT: ![[LOCSP]] = distinct !DISubprogram(
47+
48+
ret void
49+
}
50+
51+
52+
!llvm.module.flags = !{!0}
53+
!0 = !{i32 2, !"Debug Info Version", i32 3}
54+
!1 = distinct !DISubprogram(name: "foo")
55+
!2 = distinct !DISubprogram(name: "bar")
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
2+
; CHECK: invalid #dbg record expression
3+
; CHECK-NEXT: #dbg_value({{.*}})
4+
; CHECK-NEXT: !{}
5+
; CHECK: warning: ignoring invalid debug info
6+
7+
define void @foo(i32 %a) {
8+
entry:
9+
%s = alloca i32
10+
#dbg_value(ptr %s, !DILocalVariable(scope: !1), !{}, !DILocation(scope: !1))
11+
ret void
12+
}
13+
14+
!llvm.module.flags = !{!0}
15+
!0 = !{i32 2, !"Debug Info Version", i32 3}
16+
!1 = distinct !DISubprogram()
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
; RUN: llvm-as -disable-output <%s 2>&1 | FileCheck %s
2+
; CHECK: invalid #dbg record address/value
3+
; CHECK-NEXT: #dbg_value({{.*}})
4+
; CHECK-NEXT: !""
5+
; CHECK: warning: ignoring invalid debug info
6+
7+
define void @foo(i32 %a) {
8+
entry:
9+
%s = alloca i32
10+
#dbg_value(!"", !DILocalVariable(scope: !1), !DIExpression(), !DILocation(scope: !1))
11+
ret void
12+
}
13+
14+
15+
!llvm.module.flags = !{!0}
16+
!0 = !{i32 2, !"Debug Info Version", i32 3}
17+
!1 = distinct !DISubprogram()

0 commit comments

Comments
 (0)