[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / LICM / pr50367.ll
blobe660d9f626e1317e83c557a803cb0daaea34df6b
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -S -passes='loop-mssa(licm)' < %s | FileCheck %s
3 @e = external dso_local global i32*, align 8
5 define void @main() {
6 ; CHECK-LABEL: @main(
7 ; CHECK-NEXT:  entry:
8 ; CHECK-NEXT:    br label [[LOOP1:%.*]]
9 ; CHECK:       loop1:
10 ; CHECK-NEXT:    br label [[LOOP2:%.*]]
11 ; CHECK:       loop2:
12 ; CHECK-NEXT:    br i1 false, label [[LOOP2_LATCH:%.*]], label [[LOOP_LATCH:%.*]]
13 ; CHECK:       loop2.latch:
14 ; CHECK-NEXT:    br label [[LOOP2]]
15 ; CHECK:       loop.latch:
16 ; CHECK-NEXT:    br label [[LOOP1]]
18 entry:
19   br label %loop1
21 loop1:
22   br label %loop2
24 loop2:
25   br i1 undef, label %loop2.latch, label %loop.latch
27 loop2.latch:
28   store i32 0, i32* null, align 4
29   br label %loop2
31 loop.latch:
32   store i32* null, i32** @e, align 8, !tbaa !0
33   %ptr = load i32*, i32** @e, align 8, !tbaa !0
34   store i32 0, i32* %ptr, align 4, !tbaa !4
35   br label %loop1
38 !0 = !{!1, !1, i64 0}
39 !1 = !{!"any pointer", !2, i64 0}
40 !2 = !{!"omnipotent char", !3, i64 0}
41 !3 = !{!"Simple C/C++ TBAA"}
42 !4 = !{!5, !5, i64 0}
43 !5 = !{!"int", !2, i64 0}