Revert r236546, "propagate IR-level fast-math-flags to DAG nodes (NFC)"
[oota-llvm.git] / lib / CodeGen / SelectionDAG / DAGCombiner.cpp
index c063d4f9a38d698cab2f5ed449d51e1b96883823..bf42aabeab2933d5db65f7eceffd8f1468e047b5 100644 (file)
@@ -1452,9 +1452,12 @@ SDValue DAGCombiner::combine(SDNode *N) {
     if (isa<ConstantSDNode>(N0) || !isa<ConstantSDNode>(N1)) {
       SDValue Ops[] = {N1, N0};
       SDNode *CSENode;
-      if (auto *FlagsNode = dyn_cast<SDNodeWithFlags>(N)) {
-        CSENode = DAG.getNodeIfExists(N->getOpcode(), N->getVTList(),
-                                      Ops, &FlagsNode->Flags);
+      if (const BinaryWithFlagsSDNode *BinNode =
+              dyn_cast<BinaryWithFlagsSDNode>(N)) {
+        CSENode = DAG.getNodeIfExists(N->getOpcode(), N->getVTList(), Ops,
+                                      BinNode->Flags.hasNoUnsignedWrap(),
+                                      BinNode->Flags.hasNoSignedWrap(),
+                                      BinNode->Flags.hasExact());
       } else {
         CSENode = DAG.getNodeIfExists(N->getOpcode(), N->getVTList(), Ops);
       }