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]

Re: 3.0.1 Freeze


Hi,

On Wed, 8 Aug 2001, Richard Henderson wrote:

>         /* Note that single_set ignores parts of a parallel set for
>            which one of the destinations is REG_UNUSED.  We can't
>            handle that here, since we can wind up rewriting things
>            such that a single register is set twice within a single
>            parallel.  */
>         if (reg_set_p (src, insn))
>           continue;
>
> would be a lot safer.  And could go on the 3.0 branch without ifdefs,
> since it does nothing but disable optimization for particular instances.

Ok, here is the patch for it. It bootstrapped it successfully, check is
still running, but it's past anything critical now.
I also bootstrapped/tested it successfully on linux-i686.

bye, Roman

2001-08-10  Roman Zippel  <zippel@linux-m68k.org>
	    Richard Henderson  <rth@redhat.com>

	* regmove.c (regmove_optimize): avoid setting a register twice in
	a parallel set

Index: gcc/regmove.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/regmove.c,v
retrieving revision 1.96.2.6
diff -u -r1.96.2.6 regmove.c
--- regmove.c	2001/05/14 16:31:46	1.96.2.6
+++ regmove.c	2001/08/09 21:59:54
@@ -1306,6 +1306,14 @@
 	      if (! set)
 		continue;

+	      /* Note that single_set ignores parts of a parallel set for
+		 which one of the destinations is REG_UNUSED.  We can't
+		 handle that here, since we can wind up rewriting things
+		 such that a single register is set twice within a single
+		 parallel.  */
+	      if (reg_set_p (src, insn))
+		continue;
+
 	      /* match_no/dst must be a write-only operand, and
 		 operand_operand/src must be a read-only operand.  */
 	      if (match.use[op_no] != READ


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