Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / GVNHoist / hoist-inline.ll
blob94237a731fd00b7dc0f631ecc59752ee5c7cec8f
1 ; RUN: opt -S -O2 -enable-gvn-hoist < %s | FileCheck %s
3 ; Check that the inlined loads are hoisted.
4 ; CHECK-LABEL: define i32 @fun(
5 ; CHECK-LABEL: entry:
6 ; CHECK: load i32, ptr @A
7 ; CHECK: if.then:
9 @A = external global i32
10 @B = external global i32
11 @C = external global i32
12 @D = external global i32
13 @E = external global i32
15 define i32 @loadA() {
16    %a = load i32, ptr @A
17    ret i32 %a
20 define i32 @fun(i1 %c) {
21 entry:
22   br i1 %c, label %if.then, label %if.else
24 if.then:
25   store i32 1, ptr @B
26   %call1 = call i32 @loadA()
27   store i32 2, ptr @C
28   br label %if.endif
30 if.else:
31   store i32 2, ptr @D
32   %call2 = call i32 @loadA()
33   store i32 1, ptr @E
34   br label %if.endif
36 if.endif:
37   %ret = phi i32 [ %call1, %if.then ], [ %call2, %if.else ]
38   ret i32 %ret