[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / DeadStoreElimination / multiblock-unreachable.ll
blob6548ec34ae0ac7016688b9470a9f9fcb15c16e43
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -dse -S %s | FileCheck %s
4 target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
6 ; Make sure we do not crash when we encounter unreachable blocks while checking
7 ; if all paths to DomAccess go through a killing block.
8 define void @test(float* %ptr, i1 %c.1, i1 %c.2, i1 %c.3) {
9 ; CHECK-LABEL: @test(
10 ; CHECK-NEXT:  bb:
11 ; CHECK-NEXT:    br i1 [[C_1:%.*]], label [[BB27:%.*]], label [[BB53:%.*]]
12 ; CHECK:       bb10:
13 ; CHECK-NEXT:    br label [[BB43:%.*]]
14 ; CHECK:       bb22:
15 ; CHECK-NEXT:    br i1 [[C_2:%.*]], label [[BB22:%.*]], label [[BB53]]
16 ; CHECK:       bb27:
17 ; CHECK-NEXT:    br i1 [[C_3:%.*]], label [[BB38:%.*]], label [[BB39:%.*]]
18 ; CHECK:       bb38:
19 ; CHECK-NEXT:    store float 0.000000e+00, float* [[PTR:%.*]], align 4
20 ; CHECK-NEXT:    br label [[BB38]]
21 ; CHECK:       bb39:
22 ; CHECK-NEXT:    br i1 [[C_2]], label [[BB43]], label [[BB38]]
23 ; CHECK:       bb43:
24 ; CHECK-NEXT:    store float 0.000000e+00, float* [[PTR]], align 4
25 ; CHECK-NEXT:    br label [[BB50:%.*]]
26 ; CHECK:       bb50:
27 ; CHECK-NEXT:    br i1 [[C_3]], label [[BB27]], label [[BB53]]
28 ; CHECK:       bb53:
29 ; CHECK-NEXT:    br label [[BB53]]
31 bb:
32   br i1 %c.1, label %bb27, label %bb53
34 bb10:                                             ; No predecessors!
35   br label %bb43
37 bb22:                                             ; preds = %bb22
38   br i1 %c.2, label %bb22, label %bb53
40 bb27:                                             ; preds = %bb50, %bb
41   br i1 %c.3, label %bb38, label %bb39
43 bb38:                                             ; preds = %bb39, %bb38, %bb27
44   store float 0.000000e+00, float* %ptr, align 4
45   br label %bb38
47 bb39:                                             ; preds = %bb27
48   br i1 %c.2, label %bb43, label %bb38
50 bb43:                                             ; preds = %bb39, %bb10
51   store float 0.000000e+00, float* %ptr, align 4
52   br label %bb50
54 bb50:                                             ; preds = %bb43
55   br i1 %c.3, label %bb27, label %bb53
57 bb53:                                             ; preds = %bb53, %bb50, %bb22, %bb
58   br label %bb53