Index: lib/Transforms/InstCombine/InstCombineAddSub.cpp =================================================================== --- lib/Transforms/InstCombine/InstCombineAddSub.cpp +++ lib/Transforms/InstCombine/InstCombineAddSub.cpp @@ -1539,6 +1539,10 @@ "Expected a subtraction operator!"); if (BO->hasNoSignedWrap() && I.hasNoSignedWrap()) Res->setHasNoSignedWrap(true); + } else { + // Preserve nsw/nuw for non-binary operations. + Res->setHasNoSignedWrap(I.hasNoSignedWrap()); + Res->setHasNoUnsignedWrap(I.hasNoUnsignedWrap()); } return Res;