[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / Transforms / DeadStoreElimination / multiblock-throwing.ll
blobd7b63e6ae37959a09d59cabb761bc8ed2f300356
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=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_store_same_value(ptr noalias %P) {
8 ; CHECK-LABEL: @test6_store_same_value(
9 ; CHECK-NEXT:    store i32 0, ptr [[P:%.*]], align 4
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, ptr [[P]], align 4
18 ; CHECK-NEXT:    ret void
20   store i32 0, ptr %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, ptr %P
29   ret void
32 define void @test6_store_other_value(ptr noalias %P) {
33 ; CHECK-LABEL: @test6_store_other_value(
34 ; CHECK-NEXT:    store i32 0, ptr [[P:%.*]], align 4
35 ; CHECK-NEXT:    br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]
36 ; CHECK:       bb1:
37 ; CHECK-NEXT:    br label [[BB3:%.*]]
38 ; CHECK:       bb2:
39 ; CHECK-NEXT:    call void @unknown_func()
40 ; CHECK-NEXT:    br label [[BB3]]
41 ; CHECK:       bb3:
42 ; CHECK-NEXT:    store i32 1, ptr [[P]], align 4
43 ; CHECK-NEXT:    ret void
45   store i32 0, ptr %P
46   br i1 true, label %bb1, label %bb2
47 bb1:
48   br label %bb3
49 bb2:
50   call void @unknown_func()
51   br label %bb3
52 bb3:
53   store i32 1, ptr %P
54   ret void
57 define void @test23(ptr noalias %P) {
58 ; CHECK-LABEL: @test23(
59 ; CHECK-NEXT:    br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]
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, ptr [[P:%.*]], align 4
67 ; CHECK-NEXT:    ret void
69   br i1 true, label %bb1, label %bb2
70 bb1:
71   store i32 0, ptr %P
72   br label %bb3
73 bb2:
74   call void @unknown_func()
75   br label %bb3
76 bb3:
77   store i32 0, ptr %P
78   ret void
82 define void @test24(ptr noalias %P) {
83 ; CHECK-LABEL: @test24(
84 ; CHECK-NEXT:    br i1 true, label [[BB2:%.*]], label [[BB1:%.*]]
85 ; CHECK:       bb1:
86 ; CHECK-NEXT:    br label [[BB3:%.*]]
87 ; CHECK:       bb2:
88 ; CHECK-NEXT:    call void @unknown_func()
89 ; CHECK-NEXT:    br label [[BB3]]
90 ; CHECK:       bb3:
91 ; CHECK-NEXT:    store i32 0, ptr [[P:%.*]], align 4
92 ; CHECK-NEXT:    ret void
94   br i1 true, label %bb2, label %bb1
95 bb1:
96   store i32 0, ptr %P
97   br label %bb3
98 bb2:
99   call void @unknown_func()
100   br label %bb3
101 bb3:
102   store i32 0, ptr %P
103   ret void