Skip to content

Commit

Permalink
PR10180: Fix a instcombine crash with FP vectors.
Browse files Browse the repository at this point in the history
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133756 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
eefriedman committed Jun 23, 2011
1 parent aeebc35 commit 00805fa
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/Transforms/InstCombine/InstCombineSelect.cpp
Expand Up @@ -796,7 +796,7 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
// So at this point we know we have (Y -> OtherAddOp):
// select C, (add X, Y), (sub X, Z)
Value *NegVal; // Compute -Z
if (SI.getType()->isFloatingPointTy()) {
if (SI.getType()->isFPOrFPVectorTy()) {
NegVal = Builder->CreateFNeg(SubOp->getOperand(1));
} else {
NegVal = Builder->CreateNeg(SubOp->getOperand(1));
Expand All @@ -810,7 +810,7 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
Builder->CreateSelect(CondVal, NewTrueOp,
NewFalseOp, SI.getName() + ".p");

if (SI.getType()->isFloatingPointTy())
if (SI.getType()->isFPOrFPVectorTy())
return BinaryOperator::CreateFAdd(SubOp->getOperand(0), NewSel);
else
return BinaryOperator::CreateAdd(SubOp->getOperand(0), NewSel);
Expand Down
12 changes: 12 additions & 0 deletions test/Transforms/InstCombine/select-crash.ll
Expand Up @@ -18,3 +18,15 @@ entry:
%add94 = fadd double undef, %mul91
ret double %add94
}

; PR10180: same crash, but with vectors
define <4 x float> @foo(i1 %b, <4 x float> %x, <4 x float> %y, <4 x float> %z) {
; CHECK: @foo
; CHECK: fsub <4 x float>
; CHECK: select
; CHECK: fadd <4 x float>
%a = fadd <4 x float> %x, %y
%sub = fsub <4 x float> %x, %z
%sel = select i1 %b, <4 x float> %a, <4 x float> %sub
ret <4 x float> %sel
}

0 comments on commit 00805fa

Please sign in to comment.