[Bug tree-optimization/31605] [4.2/4.3 Regression] VRP eliminates a useful test due with conversion from unsigned int to int

pinskia at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Apr 17 19:28:00 GMT 2007



------- Comment #4 from pinskia at gcc dot gnu dot org  2007-04-17 20:27 -------
And it is a bug on the 4.2 branch.
Before Ian's patch we got the following ranges for the testcase in comment #2:

D.1528_1: VARYING
start_2: VARYING
D.1528_3: VARYING
cur_bitshift_4: ~[0, 0]  EQUIVALENCES: { } (0 elements)
start_5: [0, 0fffffff8]  EQUIVALENCES: { start_2 } (1 elements)
<retval>_6: VARYING
start_9: [0fffffff9, +INF]  EQUIVALENCES: { start_2 } (1 elements)

After we get:
D.1528_1: VARYING
start_2: VARYING
D.1528_3: VARYING
cur_bitshift_4: [-INF(OVF), -2147483648]  EQUIVALENCES: { } (0 elements)
start_5: [0, 0fffffff8]  EQUIVALENCES: { start_2 } (1 elements)
<retval>_6: VARYING
start_9: [0fffffff9, +INF]  EQUIVALENCES: { start_2 } (1 elements)



Before:
Visiting statement:
cur_bitshift_4 = (int) start_9;

Found new range for cur_bitshift_4: ~[0, 0]

After:
Visiting statement:
cur_bitshift_4 = (int) start_9;

Found new range for cur_bitshift_4: [-INF(OVF), -2147483648]



That is just incorrect.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.3 Regression] VRP        |[4.2/4.3 Regression] VRP
                   |eliminates a useful test due|eliminates a useful test due
                   |with conversion from        |with conversion from
                   |unsigned int to int         |unsigned int to int
   Target Milestone|4.3.0                       |4.2.0


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



More information about the Gcc-bugs mailing list