[4.1 PATCH] Backport of local alloc fix (PR middle-end/26991)

Jakub Jelinek jakub@redhat.com
Fri Jun 30 11:39:00 GMT 2006


Hi!

GCC 4.1 miscompiles opts.c (regression from 4.0), it stores into
a .rodata variable.
This bug has been fixed by Bernd on the trunk in February.
Bootstrapped/regtested on 7 linux arches, ok for 4.1?

2006-06-30  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/26991
	Backport from mainline
	2006-02-16  Bernd Schmidt  <bernd.schmidt@analog.com>

	PR rtl-optimization/25636
	* local-alloc.c (update_equiv_regs): Lose a bogus rtx_equal_p test
	when deciding whether an insn is an initializing insn.

--- gcc/local-alloc.c	(revision 111128)
+++ gcc/local-alloc.c	(revision 111129)
@@ -962,8 +963,7 @@ update_equiv_regs (void)
 
 	      /* If we haven't done so, record for reload that this is an
 		 equivalencing insn.  */
-	      if (!reg_equiv[regno].is_arg_equivalence
-		  && (!MEM_P (x) || rtx_equal_p (src, x)))
+	      if (!reg_equiv[regno].is_arg_equivalence)
 		reg_equiv_init[regno]
 		  = gen_rtx_INSN_LIST (VOIDmode, insn, reg_equiv_init[regno]);
 

	Jakub



More information about the Gcc-patches mailing list