[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