; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 ; RUN: opt -passes=gvn < %s -S -o - | FileCheck %s define void @f() { ; CHECK-LABEL: define void @f() { ; CHECK-NEXT: [[ENTRY:.*:]] ; CHECK-NEXT: [[A:%.*]] = alloca <7 x i1>, align 2 ; CHECK-NEXT: store <7 x i1> undef, ptr [[A]], align 2 ; CHECK-NEXT: [[VAL:%.*]] = load i1, ptr [[A]], align 2 ; CHECK-NEXT: br i1 [[VAL]], label %[[COND_TRUE:.*]], label %[[COND_FALSE:.*]] ; CHECK: [[COND_TRUE]]: ; CHECK-NEXT: ret void ; CHECK: [[COND_FALSE]]: ; CHECK-NEXT: ret void ; entry: %a = alloca <7 x i1>, align 2 store <7 x i1> undef, ptr %a, align 2 %val = load i1, ptr %a, align 2 br i1 %val, label %cond.true, label %cond.false cond.true: ret void cond.false: ret void } define <7 x i1> @g(ptr %a) { ; CHECK-LABEL: define <7 x i1> @g( ; CHECK-SAME: ptr [[A:%.*]]) { ; CHECK-NEXT: [[ENTRY:.*:]] ; CHECK-NEXT: [[VEC:%.*]] = load <7 x i1>, ptr [[A]], align 1 ; CHECK-NEXT: [[VAL:%.*]] = load i1, ptr [[A]], align 2 ; CHECK-NEXT: br i1 [[VAL]], label %[[COND_TRUE:.*]], label %[[COND_FALSE:.*]] ; CHECK: [[COND_TRUE]]: ; CHECK-NEXT: ret <7 x i1> [[VEC]] ; CHECK: [[COND_FALSE]]: ; CHECK-NEXT: ret <7 x i1> zeroinitializer ; entry: %vec = load <7 x i1>, ptr %a %val = load i1, ptr %a, align 2 br i1 %val, label %cond.true, label %cond.false cond.true: ret <7 x i1> %vec cond.false: ret <7 x i1> }