[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / LICM / sink-promote.ll
blobac05af5a6400d77bf617980afcafba14cbf87d6d
1 ; RUN: opt < %s -basic-aa -licm -S | FileCheck %s
3 ; Test moved from sinking.ll, as it tests sinking of a store who alone touches
4 ; a memory location in a loop.
5 ; Store can be sunk out of exit block containing indirectbr instructions after
6 ; D50925. Updated to use an argument instead of undef, due to PR38989.
7 define void @test12(i32* %ptr) {
8 ; CHECK-LABEL: @test12
9 ; CHECK: store
10 ; CHECK-NEXT: br label %lab4
11   br label %lab4
13 lab4:
14   br label %lab20
16 lab5:
17   br label %lab20
19 lab6:
20   br label %lab4
22 lab7:
23   br i1 undef, label %lab8, label %lab13
25 lab8:
26   br i1 undef, label %lab13, label %lab10
28 lab10:
29   br label %lab7
31 lab13:
32   ret void
34 lab20:
35   br label %lab21
37 lab21:
38 ; CHECK: lab21:
39 ; CHECK-NOT: store
40 ; CHECK: br i1 false, label %lab21, label %lab22
41   store i32 36127957, i32* %ptr, align 4
42   br i1 undef, label %lab21, label %lab22
44 lab22:
45 ; CHECK: lab22:
46 ; CHECK-NOT: store
47 ; CHECK-NEXT: indirectbr i8* undef
48   indirectbr i8* undef, [label %lab5, label %lab6, label %lab7]