mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-05-20 20:38:48 +00:00
FIX PR7158. SimplifyVBinOp was asserting when it fails to constant fold (op (build_vector), (build_vector)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104004 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
535af4a320
commit
a083988c8a
@ -6344,13 +6344,14 @@ SDValue DAGCombiner::SimplifyVBinOp(SDNode *N) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ops.push_back(DAG.getNode(N->getOpcode(), LHS.getDebugLoc(),
|
SDValue FoldOp = DAG.getNode(N->getOpcode(), LHS.getDebugLoc(), EltType,
|
||||||
EltType, LHSOp, RHSOp));
|
LHSOp, RHSOp);
|
||||||
AddToWorkList(Ops.back().getNode());
|
if (FoldOp.getOpcode() != ISD::UNDEF &&
|
||||||
assert((Ops.back().getOpcode() == ISD::UNDEF ||
|
FoldOp.getOpcode() != ISD::Constant &&
|
||||||
Ops.back().getOpcode() == ISD::Constant ||
|
FoldOp.getOpcode() != ISD::ConstantFP)
|
||||||
Ops.back().getOpcode() == ISD::ConstantFP) &&
|
break;
|
||||||
"Scalar binop didn't fold!");
|
Ops.push_back(FoldOp);
|
||||||
|
AddToWorkList(FoldOp.getNode());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Ops.size() == LHS.getNumOperands()) {
|
if (Ops.size() == LHS.getNumOperands()) {
|
||||||
|
17
test/CodeGen/ARM/2010-05-17-DAGCombineAssert.ll
Normal file
17
test/CodeGen/ARM/2010-05-17-DAGCombineAssert.ll
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
; RUN: llc < %s -mtriple=armv7-eabi -mcpu=cortex-a8
|
||||||
|
; PR7158
|
||||||
|
|
||||||
|
define arm_aapcs_vfpcc i32 @main() nounwind {
|
||||||
|
bb.nph55.bb.nph55.split_crit_edge:
|
||||||
|
br label %bb3
|
||||||
|
|
||||||
|
bb3: ; preds = %bb3, %bb.nph55.bb.nph55.split_crit_edge
|
||||||
|
br i1 undef, label %bb.i19, label %bb3
|
||||||
|
|
||||||
|
bb.i19: ; preds = %bb.i19, %bb3
|
||||||
|
%0 = insertelement <4 x float> undef, float undef, i32 3 ; <<4 x float>> [#uses=3]
|
||||||
|
%1 = fmul <4 x float> %0, %0 ; <<4 x float>> [#uses=1]
|
||||||
|
%2 = bitcast <4 x float> %1 to <2 x double> ; <<2 x double>> [#uses=0]
|
||||||
|
%3 = fmul <4 x float> %0, undef ; <<4 x float>> [#uses=0]
|
||||||
|
br label %bb.i19
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user