xref: /llvm-project/llvm/test/Transforms/Inline/invariant-group-sroa.ll (revision 151602c7a9935558ca671b35359989b261045db0)
1; RUN: opt -passes='print<inline-cost>' -disable-output %s 2>&1 | FileCheck %s
2
3; SROA analysis should yield non-zero savings for allocas passed through invariant group intrinsics
4; CHECK: SROACostSavings: 10
5
6declare ptr @llvm.launder.invariant.group.p0(ptr)
7declare ptr @llvm.strip.invariant.group.p0(ptr)
8
9declare void @b()
10
11define i32 @f() {
12  %a = alloca i32
13  %r = call i32 @g(ptr %a)
14  ret i32 %r
15}
16
17define i32 @g(ptr %a) {
18  %a_inv_i8 = call ptr @llvm.launder.invariant.group.p0(ptr %a)
19  %i1 = load i32, ptr %a_inv_i8
20  %i2 = load i32, ptr %a_inv_i8
21  %i3 = add i32 %i1, %i2
22  %t = call ptr @llvm.strip.invariant.group.p0(ptr %a_inv_i8)
23  ret i32 %i3
24}
25