blob: f4b29e3ee409664d3405cf8c545109c7d159b3b3 [file] [edit]
; RUN: opt -passes=ipsccp -S < %s | FileCheck %s
; IPSCCP constant-propagating through arguments of a `noipa` function.
; If `noipa` is working, IPSCCP should NOT propagate the constant 42 into @foo,
; because analyzing calls to @foo to determine argument values is IPA.
; CHECK: define internal i32 @foo(i32 %x)
; CHECK-NEXT: ret i32 poison
define internal i32 @foo(i32 %x) noinline {
ret i32 %x
}
; CHECK: define internal i32 @foo_noipa(i32 %x)
; CHECK-NEXT: ret i32 %x
define internal i32 @foo_noipa(i32 %x) noipa noinline {
ret i32 %x
}
define i32 @bar() {
%r = call i32 @foo(i32 42)
%s = call i32 @foo_noipa(i32 42)
; CHECK: %res = add i32 42, %s
%res = add i32 %r, %s
ret i32 %res
}