1 ; RUN: opt < %s -simplifycfg -S | FileCheck %s
5 "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32"
6 target triple = "i386-pc-linux-gnu"
8 define void @test1(i32 %x) nounwind {
10 %0 = icmp eq i32 %x, 0 ; <i1> [#uses=1]
11 br i1 %0, label %bb, label %return
14 %1 = load volatile i32* null
18 return: ; preds = %entry
20 ; CHECK-LABEL: @test1(
21 ; CHECK: load volatile
25 define void @test2() nounwind {
30 ; CHECK-LABEL: @test2(
31 ; CHECK: call void @llvm.trap
36 define void @test3() nounwind {
38 store volatile i32 4, i32* null
41 ; CHECK-LABEL: @test3(
42 ; CHECK: store volatile i32 4, i32* null
46 ; Check store before unreachable.
47 define void @test4(i1 %C, i32* %P) {
48 ; CHECK-LABEL: @test4(
50 ; CHECK-NEXT: br i1 %C
52 br i1 %C, label %T, label %F
54 store volatile i32 0, i32* %P
60 ; Check cmpxchg before unreachable.
61 define void @test5(i1 %C, i32* %P) {
62 ; CHECK-LABEL: @test5(
64 ; CHECK-NEXT: br i1 %C
66 br i1 %C, label %T, label %F
68 cmpxchg volatile i32* %P, i32 0, i32 1 seq_cst
74 ; Check atomicrmw before unreachable.
75 define void @test6(i1 %C, i32* %P) {
76 ; CHECK-LABEL: @test6(
78 ; CHECK-NEXT: br i1 %C
80 br i1 %C, label %T, label %F
82 atomicrmw volatile xchg i32* %P, i32 0 seq_cst