; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -passes=instcombine -S | FileCheck %s @x = weak global i32 0 define void @self_assign_1() { ; CHECK-LABEL: @self_assign_1( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[TMP:%.*]] = load volatile i32, i32* @x, align 4 ; CHECK-NEXT: store volatile i32 [[TMP]], i32* @x, align 4 ; CHECK-NEXT: br label [[RETURN:%.*]] ; CHECK: return: ; CHECK-NEXT: ret void ; entry: %tmp = load volatile i32, i32* @x store volatile i32 %tmp, i32* @x br label %return return: ret void } define void @volatile_store_before_unreachable(i1 %c, i8* %p) { ; CHECK-LABEL: @volatile_store_before_unreachable( ; CHECK-NEXT: br i1 [[C:%.*]], label [[TRUE:%.*]], label [[FALSE:%.*]] ; CHECK: true: ; CHECK-NEXT: store volatile i8 0, i8* [[P:%.*]], align 1 ; CHECK-NEXT: unreachable ; CHECK: false: ; CHECK-NEXT: ret void ; br i1 %c, label %true, label %false true: store volatile i8 0, i8* %p unreachable false: ret void }