[Bug tree-optimization/21030] [4.1 Regression] ICE in set_value_range building 176.gcc with -O2

kazu at cs dot umass dot edu gcc-bugzilla@gcc.gnu.org
Thu Apr 28 19:34:00 GMT 2005


------- Additional Comments From kazu at cs dot umass dot edu  2005-04-28 19:33 -------
Diego,

I think it's OK to have contradictory information from an ASSERT_EXPR and
SCEV.

Let's say we have a loop counting from i = 0 upward.

It's possible that we "if (i < 0)" in the loop and see something like

  i_10 = ASSERT_EXPR <i_1, i_1 < 0>;

on the "then" arm of the conditional.  In this case, we know we are
counting upward, so SCEV tells us that the minimum value of i_10
should be 0, but the ASSERT_EXPR tells us that the range should be
[-INF, -1].  They are completely disjoint!

This weird situation comes from the fact that the "then" branch of the
conditional is dead.  In this case, probably the safest and simplest
thing to do is to ignoring what SCEV says.

Kazu Hirata


-- 


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



More information about the Gcc-bugs mailing list