[Bug tree-optimization/21380] [4.0 Regression] ICE compiling with -O
Jeffrey A Law
law@redhat.com
Fri May 6 16:44:00 GMT 2005
FYI, after bootstrapping and regression testing on i686-pc-linux-gnu
I applied the same patch used for the 4.0 branch to the mainline.
Jeff
-------------- next part --------------
PR tree-optimization/21380
* tree-ssa-threadupdate.c (thread_through_all_blocks): Do not
thread through a block with no preds.
* gcc.c-torture/compile/pr21380.c: New test.
Index: tree-ssa-threadupdate.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-threadupdate.c,v
retrieving revision 2.20
diff -c -p -r2.20 tree-ssa-threadupdate.c
*** tree-ssa-threadupdate.c 27 Jan 2005 18:22:22 -0000 2.20
--- tree-ssa-threadupdate.c 6 May 2005 02:54:49 -0000
*************** thread_through_all_blocks (void)
*** 560,566 ****
FOR_EACH_BB (bb)
{
! if (bb_ann (bb)->incoming_edge_threaded)
{
thread_block (bb);
retval = true;
--- 560,567 ----
FOR_EACH_BB (bb)
{
! if (bb_ann (bb)->incoming_edge_threaded
! && EDGE_COUNT (bb->preds) > 0)
{
thread_block (bb);
retval = true;
Index: testsuite/gcc.c-torture/compile/pr21380.c
===================================================================
RCS file: testsuite/gcc.c-torture/compile/pr21380.c
diff -N testsuite/gcc.c-torture/compile/pr21380.c
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- testsuite/gcc.c-torture/compile/pr21380.c 6 May 2005 02:55:06 -0000
***************
*** 0 ****
--- 1,42 ----
+ void bar (void);
+
+ void
+ foo (int *diff)
+ {
+ double deltay = 0.0;
+ int Stangent = 0;
+ int mindiff;
+ int Sflipped = 0;
+ int i;
+ int Sturn, Snofit;
+
+ Sturn = 1;
+ if (Sturn)
+ Stangent = 1;
+ if (Sturn)
+ {
+ Sflipped = 0;
+ Snofit = 1;
+ while (Snofit)
+ {
+ Snofit = 0;
+ mindiff = 0;
+ for (i = 0; i < 4; i++)
+ mindiff = diff[i];
+ while (!Snofit && (mindiff < 0.0))
+ {
+ deltay = (Stangent ? deltay : 0.0);
+ if (deltay < 0.0)
+ Snofit = 1;
+ for (i = 0; i < 4; i++)
+ {
+ }
+ }
+ if (Snofit)
+ if (Sflipped)
+ break;
+ }
+ if (Snofit)
+ bar ();
+ }
+ }
More information about the Gcc-patches
mailing list