Skip to content

Commit 4baf45b

Browse files
committed
Fix returned attr
1 parent 081cb94 commit 4baf45b

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

llvm/test/tools/llvm-reduce/reduce-values-to-return-new-return-type.ll

+33
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,36 @@ define range(i32 8, 256) <2 x i32> @preserve_compatible_return_range(ptr %arg, <
153153
store i32 %load, ptr @gv
154154
ret <2 x i32> %arg1
155155
}
156+
157+
; INTERESTING-LABEL: @drop_incompatible_returned_param_attr_0(
158+
159+
; RESULT-LABEL: define i32 @drop_incompatible_returned_param_attr_0(ptr %arg, ptr %arg1) {
160+
; RESULT-NEXT: %load = load i32, ptr %arg
161+
; RESULT-NEXT: ret i32 %load
162+
define ptr @drop_incompatible_returned_param_attr_0(ptr returned %arg, ptr %arg1) {
163+
%load = load i32, ptr %arg
164+
store i32 %load, ptr @gv
165+
ret ptr %arg
166+
}
167+
168+
; INTERESTING-LABEL: @drop_incompatible_returned_param_attr_1(
169+
170+
; RESULT-LABEL: define i32 @drop_incompatible_returned_param_attr_1(ptr %arg, ptr %arg1) {
171+
; RESULT-NEXT: %load = load i32, ptr %arg
172+
; RESULT-NEXT: ret i32 %load
173+
define ptr @drop_incompatible_returned_param_attr_1(ptr %arg, ptr returned %arg1) {
174+
%load = load i32, ptr %arg
175+
store i32 %load, ptr @gv
176+
ret ptr %arg
177+
}
178+
179+
; INTERESTING-LABEL: @drop_incompatible_returned_param_attr_2
180+
181+
; RESULT-LABEL: define ptr @drop_incompatible_returned_param_attr_2(ptr %arg, ptr %arg1) {
182+
; RESULT-NEXT: %load = load ptr, ptr %arg
183+
; RESULT-NEXT: ret ptr %load
184+
define ptr @drop_incompatible_returned_param_attr_2(ptr %arg, ptr returned %arg1) {
185+
%load = load ptr, ptr %arg
186+
store ptr %load, ptr @gv
187+
ret ptr %arg1
188+
}

llvm/tools/llvm-reduce/deltas/ReduceValuesToReturn.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ static void rewriteFuncWithReturnType(Function &OldF, Value *NewRetValue) {
105105
OldF.removeRetAttrs(IncompatibleAttrs);
106106
}
107107

108+
// Now we need to remove any returned attributes from parameters.
109+
for (Argument &A : OldF.args())
110+
OldF.removeParamAttr(A.getArgNo(), Attribute::Returned);
111+
108112
Function *NewF =
109113
Function::Create(NewFuncTy, OldF.getLinkage(), OldF.getAddressSpace(), "",
110114
OldF.getParent());

0 commit comments

Comments
 (0)