clear global_live_at_* in clear_log_links

Geoff Keating geoffk@cygnus.com
Mon Jul 31 17:49:00 GMT 2000


> Date: Mon, 31 Jul 2000 15:43:22 -0700
> From: Richard Henderson <rth@cygnus.com>

> On Mon, Jul 31, 2000 at 03:30:51PM -0700, Geoff Keating wrote:
> > Yes.  Perhaps clear_log_links should also clear 
> > global_live_at_{start,end}?
> 
> Seems reasonable.

This fixes the regression failures triggered by some of the recent
loop changes, or SSA changes, or something---it doesn't really matter,
the bug was always present just hidden.

FAIL: gcc.c-torture/execute/loop-3c.c compilation,  -O3 -fssa 
FAIL: gcc.c-torture/execute/loop-4b.c compilation,  -O3 -fssa 

I'll commit it when the bootstrap finishes---I've already done 'make
check' with no failures on powerpc-linux.

-- 
- Geoffrey Keating <geoffk@cygnus.com>

===File ~/patches/cygnus/flow-liveatstart.patch=============
2000-07-31  Geoff Keating  <geoffk@cygnus.com>

	* flow.c (clear_log_links): Nuke global_live_at_start and
	global_live_at_end data, since if the log_links stuff is invalid
	so is global_live_at_*.

Index: flow.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/flow.c,v
retrieving revision 1.311
diff -p -u -u -p -r1.311 flow.c
--- flow.c	2000/07/30 23:05:52	1.311
+++ flow.c	2000/08/01 00:38:34
@@ -7746,16 +7747,30 @@ flow_loop_outside_edge_p (loop, e)
 }
 
 
-/* Clear LOG_LINKS fields of insns in a chain.  */
+/* Clear LOG_LINKS fields of insns in a chain.  
+   Also nuke the global_live_at_{start,end} data.  */
 
 void
 clear_log_links (insns)
      rtx insns;
 {
   rtx i;
+  int b;
+
   for (i = insns; i; i = NEXT_INSN (i))
     if (GET_RTX_CLASS (GET_CODE (i)) == 'i')
       LOG_LINKS (i) = 0;
+
+  for (b = 0; b < n_basic_blocks; b++)
+    {
+      basic_block bb = BASIC_BLOCK (i);
+
+      bb->global_live_at_start = NULL;
+      bb->global_live_at_end = NULL;
+    }
+
+  ENTRY_BLOCK_PTR->global_live_at_end = NULL;
+  EXIT_BLOCK_PTR->global_live_at_start = NULL;
 }
 
 /* Given a register bitmap, turn on the bits in a HARD_REG_SET that
============================================================


More information about the Gcc-regression mailing list