42 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4@x = weak global i32 05 6define void @self_assign_1() {7; CHECK-LABEL: @self_assign_1(8; CHECK-NEXT: entry:9; CHECK-NEXT: [[TMP:%.*]] = load volatile i32, ptr @x, align 410; CHECK-NEXT: store volatile i32 [[TMP]], ptr @x, align 411; CHECK-NEXT: br label [[RETURN:%.*]]12; CHECK: return:13; CHECK-NEXT: ret void14;15entry:16 %tmp = load volatile i32, ptr @x17 store volatile i32 %tmp, ptr @x18 br label %return19 20return:21 ret void22}23 24define void @volatile_store_before_unreachable(i1 %c, ptr %p) {25; CHECK-LABEL: @volatile_store_before_unreachable(26; CHECK-NEXT: br i1 [[C:%.*]], label [[TRUE:%.*]], label [[FALSE:%.*]]27; CHECK: true:28; CHECK-NEXT: store volatile i8 0, ptr [[P:%.*]], align 129; CHECK-NEXT: unreachable30; CHECK: false:31; CHECK-NEXT: ret void32;33 br i1 %c, label %true, label %false34 35true:36 store volatile i8 0, ptr %p37 unreachable38 39false:40 ret void41}42