https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119773

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Ok, so I've verified that before slsr pass stepping through the IL would
terminate and return 0 from main.
The slsr change is
@@ -64,8 +64,8 @@ int main ()
     goto <bb 5>; [73.64%]

   <bb 5> [local count: 790703480]:
-  _6 = c_lsm.10_19 * -2147483647;
-  _7 = _2 + _6;
+  slsr_31 = c_lsm.10_19 * -2147483648;
+  _7 = _5 - slsr_31;
   if (_7 >= 0)
     goto <bb 6>; [59.00%]
   else
where _5 is
  _5 = _2 + c_lsm.10_19;
from an earlier bb.
So, this indeed introduces UB which wasn't there, for c_lsm.10_19 value of 1
and _5 being also 1 that is 1 - -2147483648.

Reply via email to