------- Comment #5 from rguenth at gcc dot gnu dot org  2006-04-26 09:55 -------
It does not even respect unsigned overflow:

      if (val1 == TYPE_MAX_VALUE (TREE_TYPE (val1))
          && TREE_CODE (val2) == MINUS_EXPR)
        /* +INF > NAME - CST.  */
        return 1;

for NAME == 0 and CST == 1 this will return 1 even if NAME - CST is +INF.
Now, luckily fold will transform that into NAME != CST-1 before VRP sees this,
but compare_values looks like it completely disregards possible overflow.

And of course negative integer constants.  But that's another story.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25148

Reply via email to