| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt -dse -S %s | FileCheck %s |
| |
| target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" |
| |
| ; Make sure we do not crash when we encounter unreachable blocks while checking |
| ; if all paths to DomAccess go through a killing block. |
| define void @test(float* %ptr, i1 %c.1, i1 %c.2, i1 %c.3) { |
| ; CHECK-LABEL: @test( |
| ; CHECK-NEXT: bb: |
| ; CHECK-NEXT: br i1 [[C_1:%.*]], label [[BB27:%.*]], label [[BB53:%.*]] |
| ; CHECK: bb10: |
| ; CHECK-NEXT: br label [[BB43:%.*]] |
| ; CHECK: bb22: |
| ; CHECK-NEXT: br i1 [[C_2:%.*]], label [[BB22:%.*]], label [[BB53]] |
| ; CHECK: bb27: |
| ; CHECK-NEXT: br i1 [[C_3:%.*]], label [[BB38:%.*]], label [[BB39:%.*]] |
| ; CHECK: bb38: |
| ; CHECK-NEXT: store float 0.000000e+00, float* [[PTR:%.*]], align 4 |
| ; CHECK-NEXT: br label [[BB38]] |
| ; CHECK: bb39: |
| ; CHECK-NEXT: br i1 [[C_2]], label [[BB43]], label [[BB38]] |
| ; CHECK: bb43: |
| ; CHECK-NEXT: store float 0.000000e+00, float* [[PTR]], align 4 |
| ; CHECK-NEXT: br label [[BB50:%.*]] |
| ; CHECK: bb50: |
| ; CHECK-NEXT: br i1 [[C_3]], label [[BB27]], label [[BB53]] |
| ; CHECK: bb53: |
| ; CHECK-NEXT: br label [[BB53]] |
| ; |
| bb: |
| br i1 %c.1, label %bb27, label %bb53 |
| |
| bb10: ; No predecessors! |
| br label %bb43 |
| |
| bb22: ; preds = %bb22 |
| br i1 %c.2, label %bb22, label %bb53 |
| |
| bb27: ; preds = %bb50, %bb |
| br i1 %c.3, label %bb38, label %bb39 |
| |
| bb38: ; preds = %bb39, %bb38, %bb27 |
| store float 0.000000e+00, float* %ptr, align 4 |
| br label %bb38 |
| |
| bb39: ; preds = %bb27 |
| br i1 %c.2, label %bb43, label %bb38 |
| |
| bb43: ; preds = %bb39, %bb10 |
| store float 0.000000e+00, float* %ptr, align 4 |
| br label %bb50 |
| |
| bb50: ; preds = %bb43 |
| br i1 %c.3, label %bb27, label %bb53 |
| |
| bb53: ; preds = %bb53, %bb50, %bb22, %bb |
| br label %bb53 |
| } |