[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / DeadStoreElimination / multiblock-throwing.ll
blobc067a907892d9b35e50c1ca94ef9875f4c9fa73d
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
4 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
5 declare void @unknown_func()
7 define void @test6(i32* noalias %P) {
8 ; CHECK-LABEL: @test6(
9 ; CHECK-NEXT:    store i32 0, i32* [[P:%.*]]
10 ; CHECK-NEXT:    br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]
11 ; CHECK:       bb1:
12 ; CHECK-NEXT:    br label [[BB3:%.*]]
13 ; CHECK:       bb2:
14 ; CHECK-NEXT:    call void @unknown_func()
15 ; CHECK-NEXT:    br label [[BB3]]
16 ; CHECK:       bb3:
17 ; CHECK-NEXT:    store i32 0, i32* [[P]]
18 ; CHECK-NEXT:    ret void
20   store i32 0, i32* %P
21   br i1 true, label %bb1, label %bb2
22 bb1:
23   br label %bb3
24 bb2:
25   call void @unknown_func()
26   br label %bb3
27 bb3:
28   store i32 0, i32* %P
29   ret void
32 define void @test23(i32* noalias %P) {
33 ; CHECK-LABEL: @test23(
34 ; CHECK-NEXT:    br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]
35 ; CHECK:       bb1:
36 ; CHECK-NEXT:    br label [[BB3:%.*]]
37 ; CHECK:       bb2:
38 ; CHECK-NEXT:    call void @unknown_func()
39 ; CHECK-NEXT:    br label [[BB3]]
40 ; CHECK:       bb3:
41 ; CHECK-NEXT:    store i32 0, i32* [[P:%.*]]
42 ; CHECK-NEXT:    ret void
44   br i1 true, label %bb1, label %bb2
45 bb1:
46   store i32 0, i32* %P
47   br label %bb3
48 bb2:
49   call void @unknown_func()
50   br label %bb3
51 bb3:
52   store i32 0, i32* %P
53   ret void
57 define void @test24(i32* noalias %P) {
58 ; CHECK-LABEL: @test24(
59 ; CHECK-NEXT:    br i1 true, label [[BB2:%.*]], label [[BB1:%.*]]
60 ; CHECK:       bb1:
61 ; CHECK-NEXT:    br label [[BB3:%.*]]
62 ; CHECK:       bb2:
63 ; CHECK-NEXT:    call void @unknown_func()
64 ; CHECK-NEXT:    br label [[BB3]]
65 ; CHECK:       bb3:
66 ; CHECK-NEXT:    store i32 0, i32* [[P:%.*]]
67 ; CHECK-NEXT:    ret void
69   br i1 true, label %bb2, label %bb1
70 bb1:
71   store i32 0, i32* %P
72   br label %bb3
73 bb2:
74   call void @unknown_func()
75   br label %bb3
76 bb3:
77   store i32 0, i32* %P
78   ret void