[Bug c/93781] Optimizer produces suboptimal code related to -ftree-vrp

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Feb 17 09:59:00 GMT 2020


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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2020-02-17
     Ever confirmed|0                           |1
           Severity|normal                      |enhancement

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Adding assert for C00000400_5 from C00000400_5 < 0
Adding assert for _1 from _1 + 2147483648 <= 2147483647

But _1 is defined as:
  _1 = arg_4(D) + 4294967293;

and arg_4 is used in the BB were we would have added the above asserts.

The second assert comes from:
      /* Add asserts for NAME cmp CST and NAME being defined
         as NAME = (int) NAME2.  */

We need one more for NAME cmp CST, and NAME = (int)NAME2 and NAME2 = NAME3 +
CST.

The question becomes how recusive/adding extra cases to do we want to add to
register_edge_assert_for_2.


More information about the Gcc-bugs mailing list