3.0.1 Freeze
Roman Zippel
zippel@linux-m68k.org
Thu Aug 9 15:27:00 GMT 2001
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
More information about the Gcc
mailing list