Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / GVN / PRE / pre-basic-add.ll
blobf099ddcdbd7f5119600e37fdd20a8e6c5e8760be
1 ; RUN: opt < %s -passes=gvn -enable-pre -S | FileCheck %s
2 ; RUN: opt < %s -passes="gvn<pre>" -enable-pre=false -S | FileCheck %s
4 @H = common global i32 0                ; <ptr> [#uses=2]
5 @G = common global i32 0                ; <ptr> [#uses=1]
7 define i32 @test() nounwind {
8 entry:
9         %0 = load i32, ptr @H, align 4          ; <i32> [#uses=2]
10         %1 = call i32 (...) @foo() nounwind             ; <i32> [#uses=1]
11         %2 = icmp ne i32 %1, 0          ; <i1> [#uses=1]
12         br i1 %2, label %bb, label %bb1
14 bb:             ; preds = %entry
15         %3 = add i32 %0, 42             ; <i32> [#uses=1]
16 ; CHECK: %.pre = add i32 %0, 42
17         store i32 %3, ptr @G, align 4
18         br label %bb1
20 bb1:            ; preds = %bb, %entry
21         %4 = add i32 %0, 42             ; <i32> [#uses=1]
22         store i32 %4, ptr @H, align 4
23         br label %return
25 ; CHECK: %.pre-phi = phi i32 [ %.pre, %entry.bb1_crit_edge ], [ %3, %bb ]
26 ; CHECK-NEXT: store i32 %.pre-phi, ptr @H, align 4
27 ; CHECK-NEXT: ret i32 0
29 return:         ; preds = %bb1
30         ret i32 0
33 declare i32 @foo(...)