Skip to content

Commit a3194af

Browse files
committed
!fixup handle creating vector false constant
1 parent 036f549 commit a3194af

File tree

2 files changed

+5
-9
lines changed

2 files changed

+5
-9
lines changed

llvm/lib/Analysis/InstructionSimplify.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5252,7 +5252,7 @@ static Value *simplifyExtractValueInst(Value *Agg, ArrayRef<unsigned> Idxs,
52525252
if (Idxs[0] == 0)
52535253
return V;
52545254
assert(Idxs[0] == 1 && "invalid index");
5255-
return getFalse(IntegerType::get(V->getContext(), 1));
5255+
return getFalse(CmpInst::makeCmpResultType(V->getType()));
52565256
}
52575257

52585258
return nullptr;

llvm/test/Transforms/InstSimplify/fold-intrinsics.ll

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,8 @@ declare void @use.i32(i32, i1)
615615

616616
define void @umul_extractvalue(ptr %P, i32 %x) {
617617
; CHECK-LABEL: @umul_extractvalue(
618+
; CHECK-NEXT: call void @use.i32(i32 [[X:%.*]], i1 false)
619+
; CHECK-NEXT: call void @use.i32(i32 [[X]], i1 false)
618620
; CHECK-NEXT: [[UMUL_3:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 2, i32 [[X]])
619621
; CHECK-NEXT: [[R_3:%.*]] = extractvalue { i32, i1 } [[UMUL_3]], 0
620622
; CHECK-NEXT: [[OV_3:%.*]] = extractvalue { i32, i1 } [[UMUL_3]], 1
@@ -643,14 +645,8 @@ declare void @use.4xi32(<4 x i32>, <4 x i1>)
643645

644646
define void @umul_extractvalue_vec(ptr %P, <4 x i32> %x) {
645647
; CHECK-LABEL: @umul_extractvalue_vec(
646-
; CHECK-NEXT: [[UMUL_1:%.*]] = call { <4 x i32>, <4 x i1> } @llvm.umul.with.overflow.v4i32(<4 x i32> [[X:%.*]], <4 x i32> splat (i32 1))
647-
; CHECK-NEXT: [[R_1:%.*]] = extractvalue { <4 x i32>, <4 x i1> } [[UMUL_1]], 0
648-
; CHECK-NEXT: [[OV_1:%.*]] = extractvalue { <4 x i32>, <4 x i1> } [[UMUL_1]], 1
649-
; CHECK-NEXT: call void @use.4xi32(<4 x i32> [[R_1]], <4 x i1> [[OV_1]])
650-
; CHECK-NEXT: [[UMUL_2:%.*]] = call { <4 x i32>, <4 x i1> } @llvm.umul.with.overflow.v4i32(<4 x i32> splat (i32 1), <4 x i32> [[X]])
651-
; CHECK-NEXT: [[R_2:%.*]] = extractvalue { <4 x i32>, <4 x i1> } [[UMUL_2]], 0
652-
; CHECK-NEXT: [[OV_2:%.*]] = extractvalue { <4 x i32>, <4 x i1> } [[UMUL_2]], 1
653-
; CHECK-NEXT: call void @use.4xi32(<4 x i32> [[R_2]], <4 x i1> [[OV_2]])
648+
; CHECK-NEXT: call void @use.4xi32(<4 x i32> [[X:%.*]], <4 x i1> zeroinitializer)
649+
; CHECK-NEXT: call void @use.4xi32(<4 x i32> [[X]], <4 x i1> zeroinitializer)
654650
; CHECK-NEXT: [[UMUL_3:%.*]] = call { <4 x i32>, <4 x i1> } @llvm.umul.with.overflow.v4i32(<4 x i32> splat (i32 2), <4 x i32> [[X]])
655651
; CHECK-NEXT: [[R_3:%.*]] = extractvalue { <4 x i32>, <4 x i1> } [[UMUL_3]], 0
656652
; CHECK-NEXT: [[OV_3:%.*]] = extractvalue { <4 x i32>, <4 x i1> } [[UMUL_3]], 1

0 commit comments

Comments
 (0)