mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
DAG Combiner: Fold SelectCC When Cond is UNDEF
In case folding a node end up with a NaN as operand for the select, the folding of the condition of the selectcc node returns "UNDEF". Differential Revision: http://reviews.llvm.org/D6889 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225952 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
125de50e12
commit
cfe92407cd
@ -5100,13 +5100,16 @@ SDValue DAGCombiner::visitSELECT_CC(SDNode *N) {
|
||||
return N2; // cond always true -> true val
|
||||
else
|
||||
return N3; // cond always false -> false val
|
||||
}
|
||||
|
||||
// Fold to a simpler select_cc
|
||||
if (SCC.getOpcode() == ISD::SETCC)
|
||||
} else if (SCC->getOpcode() == ISD::UNDEF) {
|
||||
// When the condition is UNDEF, just return the first operand. This is
|
||||
// coherent the DAG creation, no setcc node is created in this case
|
||||
return N2;
|
||||
} else if (SCC.getOpcode() == ISD::SETCC) {
|
||||
// Fold to a simpler select_cc
|
||||
return DAG.getNode(ISD::SELECT_CC, SDLoc(N), N2.getValueType(),
|
||||
SCC.getOperand(0), SCC.getOperand(1), N2, N3,
|
||||
SCC.getOperand(2));
|
||||
}
|
||||
}
|
||||
|
||||
// If we can fold this based on the true/false value, do so.
|
||||
|
Loading…
Reference in New Issue
Block a user