This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/54014] New: Value Range propagation bug
- From: "ferrandi at elet dot polimi.it" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 18 Jul 2012 11:39:55 +0000
- Subject: [Bug tree-optimization/54014] New: Value Range propagation bug
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54014
Bug #: 54014
Summary: Value Range propagation bug
Classification: Unclassified
Product: gcc
Version: 4.5.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: ferrandi@elet.polimi.it
Created attachment 27822
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27822
sightly modified version of arith-rand.c
Dears,
I've found a problem with a sightly modified version of a gcc regression test
(arith-rand.c).
The regression test has been modified in order to abort on a specific
condition. The test correctly aborts when no optimization is performed but it
does not fail when -O2 is passed. The problem seems to be in how the VRP work,
in fact once the -fno-tree-vrp is passed the test correctly fails.
The line I've added to arith-rand.c is the following
if((unsigned int) ABS (yy)==2147483648u) abort();
The VRP claims that (unsigned int) ABS (yy) is in the range [1, 2147483647] but
the actual range should be [1, 2147483648]. Everything seems to be related to
the managing of -(-2147483648).
The test does not abort on these versions on gcc-4.5.3 (Ubuntu 12.04), 4.6.3
(Ubuntu 12.04) and on gcc-4.7.1 (debian wheezy/sid) with the following command
line:
gcc-4.5 arith-rand.c -O2 #(Ubuntu 12.04)
gcc-4.5 arith-rand.c -O2 #(Ubuntu 12.04)
gcc-4.7 arith-rand.c -O2 #(debian wheezy/sid)
while it correctly aborts once the option -fno-tree-vrp is passed
Cheers,
Fabrizio