[llvm] [SelectionDAGBuilder] Remove NoNaNsFPMath uses (PR #169904)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 30 09:56:48 PST 2026
================
@@ -6864,12 +6867,16 @@ static SDValue foldAndOrOfSETCC(SDNode *LogicOp, SelectionDAG &DAG) {
NewOpcode = IsSigned ? ISD::SMAX : ISD::UMAX;
} else if (OpVT.isFloatingPoint())
NewOpcode = getMinMaxOpcodeForCompareFold(
- Operand1, Operand2, CC, LogicOp->getOpcode(), DAG,
- isFMAXNUMFMINNUM_IEEE, isFMAXNUMFMINNUM);
+ Operand1, Operand2,
+ LHSSetCCFlags.hasNoNaNs() && RHSSetCCFlags.hasNoNaNs(), CC,
+ LogicOp->getOpcode(), DAG, isFMAXNUMFMINNUM_IEEE, isFMAXNUMFMINNUM);
if (NewOpcode != ISD::DELETED_NODE) {
+ // Propagate fast-math flags from setcc.
+ SDNodeFlags Flags = LHS->getFlags() & RHS->getFlags();
SDValue MinMaxValue =
- DAG.getNode(NewOpcode, DL, OpVT, Operand1, Operand2);
+ DAG.getNode(NewOpcode, DL, OpVT, Operand1, Operand2, Flags);
+ SelectionDAG::FlagInserter FlagInserter(DAG, Flags);
----------------
arsenm wrote:
Can you use the explicit flag operands instead of the FlagInserter
https://github.com/llvm/llvm-project/pull/169904
More information about the llvm-commits
mailing list