This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patches] Fixes for the libjava failure
On Sun, Aug 05, 2001 at 12:51:52PM -0700, Richard Henderson wrote:
> I think we need to suppress the move if can_throw_internal.
Indeed, this does allow a bootstrap. I've committed both patches.
Looking at the logs for gcc-regression, this has been an extremely
poor week. Since August 1, there have been 45 runs on Geoff's
regression checker. 40 (!) of those have failed to build, and not
a single one was regression-free.
We cannot continue to be this sloppy.
r~
* local-alloc.c (update_equiv_regs): Do not move insns that
can throw.
Index: local-alloc.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/local-alloc.c,v
retrieving revision 1.82
diff -u -p -r1.82 local-alloc.c
--- local-alloc.c 2001/07/30 20:03:37 1.82
+++ local-alloc.c 2001/08/06 06:40:13
@@ -1102,6 +1102,12 @@ update_equiv_regs ()
abort ();
equiv_insn = XEXP (reg_equiv[regno].init_insns, 0);
+ /* We may not move instructions that can throw, since
+ that changes basic block boundaries and we are not
+ prepared to adjust the CFG to match. */
+ if (can_throw_internal (equiv_insn))
+ continue;
+
if (asm_noperands (PATTERN (equiv_insn)) < 0
&& validate_replace_rtx (regno_reg_rtx[regno],
reg_equiv[regno].src, insn))