[SelectionDAGBuilder] Set NoUnsignedWrap for inbounds gep and load/store offsets.
[oota-llvm.git] / lib / CodeGen / SelectionDAG / DAGCombiner.cpp
index 0872d7a9a22828a8a095f9cc8712b7dc3a4a226b..bc2405b952a60dd6d90ea2c8b447ce40709655a5 100644 (file)
@@ -6843,9 +6843,13 @@ SDValue DAGCombiner::ReduceLoadWidth(SDNode *N) {
   uint64_t PtrOff = ShAmt / 8;
   unsigned NewAlign = MinAlign(LN0->getAlignment(), PtrOff);
   SDLoc DL(LN0);
+  // The original load itself didn't wrap, so an offset within it doesn't.
+  SDNodeFlags Flags;
+  Flags.setNoUnsignedWrap(true);
   SDValue NewPtr = DAG.getNode(ISD::ADD, DL,
                                PtrType, LN0->getBasePtr(),
-                               DAG.getConstant(PtrOff, DL, PtrType));
+                               DAG.getConstant(PtrOff, DL, PtrType),
+                               &Flags);
   AddToWorklist(NewPtr.getNode());
 
   SDValue Load;