[llvm] 7a43be1 - [DAG] visitXROUND - use FoldConstantArithmetic to attempt to constant fold

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 18 02:11:03 PDT 2024


Author: Simon Pilgrim
Date: 2024-10-18T10:10:43+01:00
New Revision: 7a43be1690e27ddf8813e49d93eb419d214fcd7a

URL: https://github.com/llvm/llvm-project/commit/7a43be1690e27ddf8813e49d93eb419d214fcd7a
DIFF: https://github.com/llvm/llvm-project/commit/7a43be1690e27ddf8813e49d93eb419d214fcd7a.diff

LOG: [DAG] visitXROUND - use FoldConstantArithmetic to attempt to constant fold

Don't rely on isConstantFPBuildVectorOrConstantFP followed by getNode() will constant fold - FoldConstantArithmetic will do all of this for us.

Added: 
    

Modified: 
    llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index 2f829be97b0713..b717847fc302df 100644
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -18156,8 +18156,9 @@ SDValue DAGCombiner::visitXROUND(SDNode *N) {
 
   // fold (lrint|llrint c1fp) -> c1
   // fold (lround|llround c1fp) -> c1
-  if (DAG.isConstantFPBuildVectorOrConstantFP(N0))
-    return DAG.getNode(N->getOpcode(), SDLoc(N), VT, N0);
+  if (SDValue C =
+          DAG.FoldConstantArithmetic(N->getOpcode(), SDLoc(N), VT, {N0}))
+    return C;
 
   return SDValue();
 }


        


More information about the llvm-commits mailing list