[Bug tree-optimization/108360] [13 Regression] Dead Code Elimination Regression at -Os since r13-2048-g418b71c0d535bf
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 10 17:00:58 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108360
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |aldyh at gcc dot gnu.org,
| |amacleod at redhat dot com,
| |jakub at gcc dot gnu.org
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So, this used to be optimized out during vrp2, but I'm surprised how the ranger
could figure it out.
It is true that foo is never called. If b is initially <= 0 (that is actually
the case when running the program), then c is 0, f is 1, e is 16, j is 16, j==b
is 0 and so
g(j==b,k) is -1U; if b is initially > 0, then c is -1, f, e and j are 0, j==b
is 0 and so g(j==b,k) is also -1U.
I'm just surprised how GCC 12 ranger or old style VRP could figure that out
though.
Because when it only considers variable ranges, c is ]-1,0], f is [0,1], e and
j are [0,16] or [0,0] U [16,16] but that doesn't imply that b (VARYING) == j is
actually false or true.
More information about the Gcc-bugs
mailing list