Skip to content

Commit 60814b3

Browse files
author
Yonghong Song
committed
Add suffix .retelim if only return value is eliminated
Also fixed a few tests due to rebase on top of main branch.
1 parent e58c519 commit 60814b3

11 files changed

+85
-41
lines changed

llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,8 @@ bool DeadArgumentEliminationPass::removeDeadStuffFromFunction(Function *F) {
891891
NF->takeName(F);
892892
if (NumArgumentsEliminated)
893893
NF->setName(NF->getName() + ".argelim");
894+
else
895+
NF->setName(NF->getName() + ".retelim");
894896
NF->IsNewDbgInfoFormat = F->IsNewDbgInfoFormat;
895897

896898
// Loop over all the callers of the function, transforming the call sites to

llvm/test/ThinLTO/X86/memprof-aliased-location1.ll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,22 +84,22 @@ attributes #0 = { noinline optnone }
8484
;; The first call to foo does not allocate cold memory. It should call the
8585
;; original functions, which ultimately call the original allocation decorated
8686
;; with a "notcold" attribute.
87-
; IR: call {{.*}} @_Z3foov()
87+
; IR: call {{.*}} @_Z3foov.retelim()
8888
;; The second call to foo allocates cold memory. It should call cloned functions
8989
;; which ultimately call a cloned allocation decorated with a "cold" attribute.
90-
; IR: call {{.*}} @_Z3foov.memprof.1()
91-
; IR: define internal {{.*}} @_Z3barv()
90+
; IR: call {{.*}} @_Z3foov.memprof.1.retelim()
91+
; IR: define internal {{.*}} @_Z3barv.retelim()
9292
; IR: call {{.*}} @_Znam(i64 0) #[[NOTCOLD:[0-9]+]]
93-
; IR: define internal {{.*}} @_Z3bazv()
94-
; IR: call {{.*}} @_Z3barv()
95-
; IR: define internal {{.*}} @_Z3foov()
96-
; IR: call {{.*}} @_Z3bazv()
97-
; IR: define internal {{.*}} @_Z3barv.memprof.1()
93+
; IR: define internal {{.*}} @_Z3bazv.retelim()
94+
; IR: call {{.*}} @_Z3barv.retelim()
95+
; IR: define internal {{.*}} @_Z3foov.retelim()
96+
; IR: call {{.*}} @_Z3bazv.retelim()
97+
; IR: define internal {{.*}} @_Z3barv.memprof.1.retelim()
9898
; IR: call {{.*}} @_Znam(i64 0) #[[COLD:[0-9]+]]
99-
; IR: define internal {{.*}} @_Z3bazv.memprof.1()
100-
; IR: call {{.*}} @_Z3barv.memprof.1()
101-
; IR: define internal {{.*}} @_Z3foov.memprof.1()
102-
; IR: call {{.*}} @_Z3bazv.memprof.1()
99+
; IR: define internal {{.*}} @_Z3bazv.memprof.1.retelim()
100+
; IR: call {{.*}} @_Z3barv.memprof.1.retelim()
101+
; IR: define internal {{.*}} @_Z3foov.memprof.1.retelim()
102+
; IR: call {{.*}} @_Z3bazv.memprof.1.retelim()
103103
; IR: attributes #[[NOTCOLD]] = { "memprof"="notcold" }
104104
; IR: attributes #[[COLD]] = { "memprof"="cold" }
105105

llvm/test/ThinLTO/X86/memprof-aliased-location2.ll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,22 +84,22 @@ attributes #0 = { noinline optnone }
8484
;; The first call to foo does not allocate cold memory. It should call the
8585
;; original functions, which ultimately call the original allocation decorated
8686
;; with a "notcold" attribute.
87-
; IR: call {{.*}} @_Z3foov()
87+
; IR: call {{.*}} @_Z3foov.retelim()
8888
;; The second call to foo allocates cold memory. It should call cloned functions
8989
;; which ultimately call a cloned allocation decorated with a "cold" attribute.
90-
; IR: call {{.*}} @_Z3foov.memprof.1()
91-
; IR: define internal {{.*}} @_Z3barv()
90+
; IR: call {{.*}} @_Z3foov.memprof.1.retelim()
91+
; IR: define internal {{.*}} @_Z3barv.retelim()
9292
; IR: call {{.*}} @_Znam(i64 0) #[[NOTCOLD:[0-9]+]]
93-
; IR: define internal {{.*}} @_Z3bazv()
94-
; IR: call {{.*}} @_Z3barv()
95-
; IR: define internal {{.*}} @_Z3foov()
96-
; IR: call {{.*}} @_Z3bazv()
97-
; IR: define internal {{.*}} @_Z3barv.memprof.1()
93+
; IR: define internal {{.*}} @_Z3bazv.retelim()
94+
; IR: call {{.*}} @_Z3barv.retelim()
95+
; IR: define internal {{.*}} @_Z3foov.retelim()
96+
; IR: call {{.*}} @_Z3bazv.retelim()
97+
; IR: define internal {{.*}} @_Z3barv.memprof.1.retelim()
9898
; IR: call {{.*}} @_Znam(i64 0) #[[COLD:[0-9]+]]
99-
; IR: define internal {{.*}} @_Z3bazv.memprof.1()
100-
; IR: call {{.*}} @_Z3barv.memprof.1()
101-
; IR: define internal {{.*}} @_Z3foov.memprof.1()
102-
; IR: call {{.*}} @_Z3bazv.memprof.1()
99+
; IR: define internal {{.*}} @_Z3bazv.memprof.1.retelim()
100+
; IR: call {{.*}} @_Z3barv.memprof.1.retelim()
101+
; IR: define internal {{.*}} @_Z3foov.memprof.1.retelim()
102+
; IR: call {{.*}} @_Z3bazv.memprof.1.retelim()
103103
; IR: attributes #[[NOTCOLD]] = { "memprof"="notcold" }
104104
; IR: attributes #[[COLD]] = { "memprof"="cold" }
105105

llvm/test/ThinLTO/X86/memprof-basic.ll

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
;; We should have cloned bar, baz, and foo, for the cold memory allocation.
5454
; RUN: cat %t.ccg.cloned.dot | FileCheck %s --check-prefix=DOTCLONED
5555

56-
; RUN: llvm-dis %t.out.1.4.opt.bc -o - | FileCheck %s --check-prefix=IR
56+
; RUN: llvm-dis %t.out.1.4.opt.bc -o - | FileCheck %s --check-prefix=IRNODIST
5757

5858

5959
;; Try again but with distributed ThinLTO
@@ -303,6 +303,23 @@ attributes #0 = { noinline optnone }
303303
; IR: attributes #[[NOTCOLD]] = { "memprof"="notcold" }
304304
; IR: attributes #[[COLD]] = { "memprof"="cold" }
305305

306+
; IRNODIST: define {{.*}} @main
307+
; IRNODIST: call {{.*}} @_Z3foov.retelim()
308+
; IRNODIST: call {{.*}} @_Z3foov.memprof.1.retelim()
309+
; IRNODIST: define internal {{.*}} @_Z3barv.retelim()
310+
; IRNODIST: call {{.*}} @_Znam(i64 0) #[[NOTCOLD:[0-9]+]]
311+
; IRNODIST: define internal {{.*}} @_Z3bazv.retelim()
312+
; IRNODIST: call {{.*}} @_Z3barv.retelim()
313+
; IRNODIST: define internal {{.*}} @_Z3foov.retelim()
314+
; IRNODIST: call {{.*}} @_Z3bazv.retelim()
315+
; IRNODIST: define internal {{.*}} @_Z3barv.memprof.1.retelim()
316+
; IRNODIST: call {{.*}} @_Znam(i64 0) #[[COLD:[0-9]+]]
317+
; IRNODIST: define internal {{.*}} @_Z3bazv.memprof.1.retelim()
318+
; IRNODIST: call {{.*}} @_Z3barv.memprof.1.retelim()
319+
; IRNODIST: define internal {{.*}} @_Z3foov.memprof.1.retelim()
320+
; IRNODIST: call {{.*}} @_Z3bazv.memprof.1.retelim()
321+
; IRNODIST: attributes #[[NOTCOLD]] = { "memprof"="notcold" }
322+
; IRNODIST: attributes #[[COLD]] = { "memprof"="cold" }
306323

307324
; STATS: 1 memprof-context-disambiguation - Number of cold static allocations (possibly cloned)
308325
; STATS-BE: 1 memprof-context-disambiguation - Number of cold static allocations (possibly cloned) during ThinLTO backend

llvm/test/ThinLTO/X86/memprof-duplicate-context-ids.ll

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
; RUN: -o %t.out 2>&1 | FileCheck %s --check-prefix=DUMP \
6969
; RUN: --check-prefix=STATS --check-prefix=STATS-BE --check-prefix=REMARKS
7070

71-
; RUN: llvm-dis %t.out.1.4.opt.bc -o - | FileCheck %s --check-prefix=IR
71+
; RUN: llvm-dis %t.out.1.4.opt.bc -o - | FileCheck %s --check-prefix=IRNODIST
7272

7373

7474
;; Try again but with distributed ThinLTO
@@ -247,6 +247,18 @@ attributes #0 = { noinline optnone}
247247
; IR: attributes #[[NOTCOLD]] = { "memprof"="notcold" }
248248
; IR: attributes #[[COLD]] = { "memprof"="cold" }
249249

250+
; IRNODIST: define internal {{.*}} @_Z1Dv.retelim()
251+
; IRNODIST: call {{.*}} @_Znam(i64 0) #[[NOTCOLD:[0-9]+]]
252+
; IRNODIST: define internal {{.*}} @_Z1Fv.retelim()
253+
; IRNODIST: call {{.*}} @_Z1Dv.retelim()
254+
; IRNODIST: define internal {{.*}} @_Z1Bv.retelim()
255+
; IRNODIST: call {{.*}} @_Z1Dv.memprof.1.retelim()
256+
; IRNODIST: define internal {{.*}} @_Z1Ev.retelim()
257+
; IRNODIST: call {{.*}} @_Z1Dv.memprof.1.retelim()
258+
; IRNODIST: define internal {{.*}} @_Z1Dv.memprof.1.retelim()
259+
; IRNODIST: call {{.*}} @_Znam(i64 0) #[[COLD:[0-9]+]]
260+
; IRNODIST: attributes #[[NOTCOLD]] = { "memprof"="notcold" }
261+
; IRNODIST: attributes #[[COLD]] = { "memprof"="cold" }
250262

251263
; STATS: 1 memprof-context-disambiguation - Number of cold static allocations (possibly cloned)
252264
; STATS-BE: 1 memprof-context-disambiguation - Number of cold static allocations (possibly cloned) during ThinLTO backend

llvm/test/ThinLTO/X86/memprof-inlined.ll

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
;; cold memory.
6464
; RUN: cat %t.ccg.cloned.dot | FileCheck %s --check-prefix=DOTCLONED
6565

66-
; RUN: llvm-dis %t.out.1.4.opt.bc -o - | FileCheck %s --check-prefix=IR
66+
; RUN: llvm-dis %t.out.1.4.opt.bc -o - | FileCheck %s --check-prefix=IRNODIST
6767

6868

6969
;; Try again but with distributed ThinLTO
@@ -323,6 +323,19 @@ attributes #0 = { noinline optnone }
323323
; IR: attributes #[[NOTCOLD]] = { "memprof"="notcold" }
324324
; IR: attributes #[[COLD]] = { "memprof"="cold" }
325325

326+
; IRNODIST: define internal {{.*}} @_Z3barv.retelim()
327+
; IRNODIST: call {{.*}} @_Znam(i64 0) #[[NOTCOLD:[0-9]+]]
328+
; IRNODIST: define internal {{.*}} @_Z3foov.retelim()
329+
; IRNODIST: call {{.*}} @_Z3barv.retelim()
330+
; IRNODIST: define {{.*}} @main()
331+
; IRNODIST: call {{.*}} @_Z3foov.retelim()
332+
; IRNODIST: call {{.*}} @_Z3foov.memprof.1.retelim()
333+
; IRNODIST: define internal {{.*}} @_Z3barv.memprof.1.retelim()
334+
; IRNODIST: call {{.*}} @_Znam(i64 0) #[[COLD:[0-9]+]]
335+
; IRNODIST: define internal {{.*}} @_Z3foov.memprof.1.retelim()
336+
; IRNODIST: call {{.*}} @_Z3barv.memprof.1.retelim()
337+
; IRNODIST: attributes #[[NOTCOLD]] = { "memprof"="notcold" }
338+
; IRNODIST: attributes #[[COLD]] = { "memprof"="cold" }
326339

327340
; STATS: 1 memprof-context-disambiguation - Number of cold static allocations (possibly cloned)
328341
; STATS-BE: 1 memprof-context-disambiguation - Number of cold static allocations (possibly cloned) during ThinLTO backend

llvm/test/Transforms/ArgumentPromotion/actual-arguments.ll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ define internal i32 @test_cannot_promote_1(ptr %p, ptr nocapture readonly %test_
1212
; CHECK-LABEL: define {{[^@]+}}@test_cannot_promote_1
1313
; CHECK-SAME: (ptr [[P:%.*]], ptr nocapture readonly [[TEST_C:%.*]]) {
1414
; CHECK-NEXT: [[TEST_C_VAL:%.*]] = load i32, ptr [[TEST_C]], align 4
15-
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee(ptr [[P]], i32 [[TEST_C_VAL]])
15+
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee.argprom(ptr [[P]], i32 [[TEST_C_VAL]])
1616
; CHECK-NEXT: [[LTEST_C:%.*]] = load i32, ptr [[TEST_C]], align 4
1717
; CHECK-NEXT: [[SUM:%.*]] = add i32 [[LTEST_C]], [[RES]]
1818
; CHECK-NEXT: ret i32 [[SUM]]
@@ -33,7 +33,7 @@ define internal i32 @test_cannot_promote_2(ptr %p, ptr nocapture readonly %test_
3333
; CHECK-LABEL: define {{[^@]+}}@test_cannot_promote_2
3434
; CHECK-SAME: (ptr [[P:%.*]], ptr nocapture readonly [[TEST_C:%.*]]) {
3535
; CHECK-NEXT: [[TEST_C_VAL:%.*]] = load i32, ptr [[TEST_C]], align 4
36-
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee(ptr [[P]], i32 [[TEST_C_VAL]])
36+
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee.argprom(ptr [[P]], i32 [[TEST_C_VAL]])
3737
; CHECK-NEXT: [[LTEST_C:%.*]] = load i32, ptr [[TEST_C]], align 4
3838
; CHECK-NEXT: [[SUM:%.*]] = add i32 [[LTEST_C]], [[RES]]
3939
; CHECK-NEXT: ret i32 [[SUM]]
@@ -54,7 +54,7 @@ define internal i32 @test_cannot_promote_3(ptr %p, ptr nocapture readonly %test_
5454
; CHECK-LABEL: define {{[^@]+}}@test_cannot_promote_3
5555
; CHECK-SAME: (ptr [[P:%.*]], ptr nocapture readonly [[TEST_C:%.*]]) {
5656
; CHECK-NEXT: [[TEST_C_VAL:%.*]] = load i32, ptr [[TEST_C]], align 4
57-
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee(ptr [[P]], i32 [[TEST_C_VAL]])
57+
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee.argprom(ptr [[P]], i32 [[TEST_C_VAL]])
5858
; CHECK-NEXT: [[LTEST_C:%.*]] = load i32, ptr [[TEST_C]], align 4
5959
; CHECK-NEXT: [[SUM:%.*]] = add i32 [[LTEST_C]], [[RES]]
6060
; CHECK-NEXT: ret i32 [[SUM]]
@@ -77,7 +77,7 @@ define internal i32 @test_can_promote_1(ptr %p, ptr nocapture readonly %test_c)
7777
; CHECK-LABEL: define {{[^@]+}}@test_can_promote_1
7878
; CHECK-SAME: (ptr [[P:%.*]], ptr nocapture readonly [[TEST_C:%.*]]) {
7979
; CHECK-NEXT: [[TEST_C_VAL:%.*]] = load i32, ptr [[TEST_C]], align 4
80-
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee(ptr [[P]], i32 [[TEST_C_VAL]])
80+
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee.argprom(ptr [[P]], i32 [[TEST_C_VAL]])
8181
; CHECK-NEXT: [[LTEST_C:%.*]] = load i32, ptr [[TEST_C]], align 4
8282
; CHECK-NEXT: [[SUM:%.*]] = add i32 [[LTEST_C]], [[RES]]
8383
; CHECK-NEXT: ret i32 [[SUM]]
@@ -101,7 +101,7 @@ define internal i32 @test_can_promote_2(ptr %p, ptr nocapture readonly %test_c)
101101
; CHECK-LABEL: define {{[^@]+}}@test_can_promote_2
102102
; CHECK-SAME: (ptr [[P:%.*]], ptr nocapture readonly [[TEST_C:%.*]]) {
103103
; CHECK-NEXT: [[TEST_C_VAL:%.*]] = load i32, ptr [[TEST_C]], align 4
104-
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee(ptr [[P]], i32 [[TEST_C_VAL]])
104+
; CHECK-NEXT: [[RES:%.*]] = call i32 @callee.argprom(ptr [[P]], i32 [[TEST_C_VAL]])
105105
; CHECK-NEXT: [[LTEST_C:%.*]] = load i32, ptr [[TEST_C]], align 4
106106
; CHECK-NEXT: [[SUM:%.*]] = add i32 [[LTEST_C]], [[RES]]
107107
; CHECK-NEXT: ret i32 [[SUM]]

llvm/test/Transforms/DeadArgElim/2007-12-20-ParamAttrs.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
@g = global i8 0
77

8-
; CHECK: define internal void @foo(i8 signext %y) [[NUW:#[0-9]+]]
8+
; CHECK: define internal void @foo.argelim(i8 signext %y) [[NUW:#[0-9]+]]
99
;
1010
; REMARK-LABEL: Function: foo
1111
; REMARK: Args:

llvm/test/Transforms/DeadArgElim/aggregates.ll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
; actually only used in ways we can eliminate. We gain benefit from analysing
55
; the "use" and applying its results to all sub-values.
66

7-
; CHECK-LABEL: define internal void @agguse_dead()
7+
; CHECK-LABEL: define internal void @agguse_dead.retelim()
88

99
define internal { i32, i32 } @agguse_dead() {
1010
ret { i32, i32 } { i32 0, i32 1 }
@@ -20,7 +20,7 @@ define internal { i32, i32 } @test_agguse_dead() {
2020
; Case 1: an opaque use of the aggregate exists (in this case dead). Otherwise
2121
; only one value is used, so function can be simplified.
2222

23-
; CHECK-LABEL: define internal i32 @rets_independent_if_agguse_dead()
23+
; CHECK-LABEL: define internal i32 @rets_independent_if_agguse_dead.retelim()
2424
; CHECK: [[RET:%.*]] = extractvalue { i32, i32 } { i32 0, i32 1 }, 1
2525
; CHECK: ret i32 [[RET]]
2626

@@ -89,7 +89,7 @@ define [2 x i32] @test_array_rets_have_multiple_slots() {
8989
; Case 4: we can remove some retvals from the array. It's nice to produce an
9090
; array again having done so (rather than converting it to a struct).
9191

92-
; CHECK-LABEL: define internal [2 x i32] @can_shrink_arrays()
92+
; CHECK-LABEL: define internal [2 x i32] @can_shrink_arrays.retelim()
9393
; CHECK: [[VAL0:%.*]] = extractvalue [3 x i32] [i32 42, i32 43, i32 44], 0
9494
; CHECK: [[RESTMP:%.*]] = insertvalue [2 x i32] poison, i32 [[VAL0]], 0
9595
; CHECK: [[VAL2:%.*]] = extractvalue [3 x i32] [i32 42, i32 43, i32 44], 2
@@ -117,7 +117,7 @@ define void @test_can_shrink_arrays() {
117117
; Case 5: %in gets passed directly to the return. It should mark be marked as
118118
; used if *any* of the return values are, not just if value 0 is.
119119

120-
; CHECK-LABEL: define internal i32 @ret_applies_to_all({ i32, i32 } %in)
120+
; CHECK-LABEL: define internal i32 @ret_applies_to_all.retelim({ i32, i32 } %in)
121121
; CHECK: [[RET:%.*]] = extractvalue { i32, i32 } %in, 1
122122
; CHECK: ret i32 [[RET]]
123123

@@ -167,7 +167,7 @@ entry:
167167
}
168168

169169
; CHECK-LABEL: define void @PR24906
170-
; CHECK: %[[invoke:.*]] = invoke i32 @agg_ret()
170+
; CHECK: %[[invoke:.*]] = invoke i32 @agg_ret.retelim()
171171
; CHECK: %[[oldret:.*]] = insertvalue { i32 } poison, i32 %[[invoke]], 0
172172
; CHECK: phi { i32 } [ %[[oldret]],
173173
define void @PR24906() personality ptr poison {

llvm/test/Transforms/DeadArgElim/func_metadata.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ target triple = "x86_64-unknown-linux-gnu"
88
@s = common dso_local local_unnamed_addr global i32 0, align 4
99

1010
define internal i32 @va_func(i32 %num, ...) !prof !28 !PGOFuncName !29{
11-
; CHECK: define internal void @va_func(i32 %num) !prof ![[ENTRYCOUNT:[0-9]+]] !PGOFuncName ![[PGOFUNCNAME1:[0-9]+]] {
11+
; CHECK: define internal void @va_func.retelim(i32 %num) !prof ![[ENTRYCOUNT:[0-9]+]] !PGOFuncName ![[PGOFUNCNAME1:[0-9]+]] {
1212
entry:
1313
%0 = load i32, ptr @s, align 4, !tbaa !31
1414
%add = add nsw i32 %0, %num
@@ -17,7 +17,7 @@ entry:
1717
}
1818

1919
define internal fastcc i32 @foo() unnamed_addr !prof !28 !PGOFuncName !30 {
20-
; CHECK: define internal fastcc void @foo() unnamed_addr !prof ![[ENTRYCOUNT:[0-9]+]] !PGOFuncName ![[PGOFUNCNAME2:[0-9]+]] {
20+
; CHECK: define internal fastcc void @foo.retelim() unnamed_addr !prof ![[ENTRYCOUNT:[0-9]+]] !PGOFuncName ![[PGOFUNCNAME2:[0-9]+]] {
2121
entry:
2222
%0 = load i32, ptr @s, align 4, !tbaa !31
2323
%add = add nsw i32 %0, 8

llvm/test/Transforms/DeadArgElim/variadic_safety.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ define void @call_deadret(i32 %in) {
3434
store i32 42, ptr %stacked
3535
call i32 (i32, i32, ...) @va_deadret_func(i32 poison, i32 %in, [6 x i32] poison, ptr byval(i32) %stacked)
3636
ret void
37-
; CHECK: call void (i32, i32, ...) @va_deadret_func(i32 poison, i32 poison, [6 x i32] poison, ptr byval(i32) %stacked)
37+
; CHECK: call void (i32, i32, ...) @va_deadret_func.retelim(i32 poison, i32 poison, [6 x i32] poison, ptr byval(i32) %stacked)
3838
}

0 commit comments

Comments
 (0)