This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC 4.0.3 RC1


Mark Mitchell <mark@codesourcery.com> wrote:
> GCC 4.0.3 RC1 is available here:
> 
> ftp://gcc.gnu.org/pub/gcc/prerelease-4.0.3-20060303
> 
> Please download and test!

There are failures on sh4-*-linux-gnu during libjava build and 65
unusual regressions for C++ testsuite.  I don't file PRs for them
because it looks these are the same problems as PR target/22553
and PR target/23706 which are the target issues for the exception
solved at 4.1:

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

It seems that the recent changes on 4.0 branch reveal these target
problems which are latent on 4.0.  There are patches for these PRs,
though the patch for 23706 touches the middle end file.  I'm unsure
whether to backport it to 4.0.3 is appropriate or not at this last
stage.

Anyway the attached backport patches are tested with bootstrap and
"make -k check" on i686-pc-linux-gnu with no new failures.
Although bootstrap on sh4-unknown-linux-gnu is on going, the result
of the toplevel "make -k check" on x86 cross sh4-unknown-linux-gnu
looks fine.

Regards,
	kaz
--
2006-03-06    Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target 23706
	Backport from 4.1:
	* lcm.c (optimize_mode_switching): Clear transp bit for
	block with incomming abnormal edges.

	PR target 22553
	Backport from 4.1:
	* config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_schedule_insns
	to 2 if it's already non-zero.
	(OVERRIDE_OPTIONS): Clear flag_schedule_insns if flag_exceptions
	is set and warn about it if flag_schedule_insns is 1.

diff -uprN ORIG/gcc-4.0.3-20060303/gcc/lcm.c TMP/gcc-4.0.3-20060303/gcc/lcm.c
--- ORIG/gcc-4.0.3-20060303/gcc/lcm.c	2005-01-18 20:36:31.000000000 +0900
+++ TMP/gcc-4.0.3-20060303/gcc/lcm.c	2006-03-06 10:07:51.000000000 +0900
@@ -1223,6 +1223,18 @@ optimize_mode_switching (FILE *file)
 
 	  REG_SET_TO_HARD_REG_SET (live_now,
 				   bb->global_live_at_start);
+
+	  /* Pretend the mode is clobbered across abnormal edges.  */
+	  {
+	    edge_iterator ei;
+	    edge e;
+	    FOR_EACH_EDGE (e, ei, bb->preds)
+	      if (e->flags & EDGE_COMPLEX)
+		break;
+	    if (e)
+	      RESET_BIT (transp[bb->index], j);
+	  }
+
 	  for (insn = BB_HEAD (bb);
 	       insn != NULL && insn != NEXT_INSN (BB_END (bb));
 	       insn = NEXT_INSN (insn))
diff -uprN ORIG/gcc-4.0.3-20060303/gcc/config/sh/sh.h TMP/gcc-4.0.3-20060303/gcc/config/sh/sh.h
--- ORIG/gcc-4.0.3-20060303/gcc/config/sh/sh.h	2006-01-05 08:07:24.000000000 +0900
+++ TMP/gcc-4.0.3-20060303/gcc/config/sh/sh.h	2006-03-06 10:30:51.000000000 +0900
@@ -695,6 +695,10 @@ do {									\
       if (! (SIZE))							\
 	target_flags |= SAVE_ALL_TR_BIT;				\
     }									\
+  /* If flag_schedule_insns is 1, we set it to 2 here so we know if	\
+     the user explicitly requested this to be on or off.  */		\
+  if (flag_schedule_insns > 0)						\
+    flag_schedule_insns = 2;						\
 } while (0)
 
 #define ASSEMBLER_DIALECT assembler_dialect
@@ -796,6 +800,17 @@ do {									\
 	 SH3 and lower as they give spill failures for R0.  */		\
       if (!TARGET_HARD_SH4) 						\
         flag_schedule_insns = 0;		 			\
+      /* ??? Current exception handling places basic block boundaries	\
+	 after call_insns.  It causes the high pressure on R0 and gives	\
+	 spill failures for R0 in reload.  See PR 22553 and the thread	\
+	 on gcc-patches							\
+         <http://gcc.gnu.org/ml/gcc-patches/2005-10/msg00816.html>.  */	\
+      else if (flag_exceptions)						\
+	{								\
+	  if (flag_schedule_insns == 1)		 			\
+	    warning (0, "ignoring -fschedule-insns because of exception handling bug");	\
+	  flag_schedule_insns = 0;		 			\
+	}								\
     }									\
 									\
   if (align_loops == 0)							\


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]