[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / GVNHoist / pr30216.ll
bloba13efdb9d76b4fb1cada11e377ca876f7085536d
1 ; RUN: opt -S -gvn-hoist < %s | FileCheck %s
3 ; Make sure the two stores @B do not get hoisted past the load @B.
5 ; CHECK-LABEL: define i8* @Foo
6 ; CHECK: store
7 ; CHECK: store
8 ; CHECK: load
9 ; CHECK: store
11 @A = external global i8
12 @B = external global i8*
14 define i8* @Foo() {
15   store i8 0, i8* @A
16   br i1 undef, label %if.then, label %if.else
18 if.then:
19   store i8* null, i8** @B
20   ret i8* null
22 if.else:
23   %1 = load i8*, i8** @B
24   store i8* null, i8** @B
25   ret i8* %1
28 ; Make sure the two stores @B do not get hoisted past the store @GlobalVar.
30 ; CHECK-LABEL: define i8* @Fun
31 ; CHECK: store
32 ; CHECK: store
33 ; CHECK: store
34 ; CHECK: store
35 ; CHECK: load
37 @GlobalVar = internal global i8 0
39 define i8* @Fun() {
40   store i8 0, i8* @A
41   br i1 undef, label %if.then, label %if.else
43 if.then:
44   store i8* null, i8** @B
45   ret i8* null
47 if.else:
48   store i8 0, i8* @GlobalVar
49   store i8* null, i8** @B
50   %1 = load i8*, i8** @B
51   ret i8* %1