31 lines · plain
1; RUN: opt < %s -passes=argpromotion -S | FileCheck %s2 3; Store instructions are allowed users for byval arguments only.4define internal void @callee(ptr %arg) nounwind {5; CHECK-LABEL: define {{[^@]+}}@callee6; CHECK-SAME: (ptr [[ARG:%.*]]) #[[ATTR0:[0-9]+]] {7; CHECK-NEXT: entry:8; CHECK-NEXT: [[TEMP:%.*]] = load i32, ptr [[ARG]], align 49; CHECK-NEXT: [[SUM:%.*]] = add i32 [[TEMP]], 110; CHECK-NEXT: store i32 [[SUM]], ptr [[ARG]], align 411; CHECK-NEXT: ret void12;13entry:14 %temp = load i32, ptr %arg, align 415 %sum = add i32 %temp, 116 store i32 %sum, ptr %arg, align 417 ret void18}19 20define i32 @caller(ptr %arg) nounwind {21; CHECK-LABEL: define {{[^@]+}}@caller22; CHECK-SAME: (ptr [[ARG:%.*]]) #[[ATTR0]] {23; CHECK-NEXT: entry:24; CHECK-NEXT: call void @callee(ptr [[ARG]]) #[[ATTR0]]25; CHECK-NEXT: ret i32 026;27entry:28 call void @callee(ptr %arg) nounwind29 ret i32 030}31