From: Richard Henderson Date: Mon, 6 Aug 2001 06:41:46 +0000 (-0700) Subject: local-alloc.c (update_equiv_regs): Do not move insns that can throw. X-Git-Tag: prereleases/libstdc++-3.0.95~2846 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78d56e8b0a6fe5d1ab79028bb1f0c3e6dbc27bbb;p=thirdparty%2Fgcc.git local-alloc.c (update_equiv_regs): Do not move insns that can throw. * local-alloc.c (update_equiv_regs): Do not move insns that can throw. From-SVN: r44655 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 293b81df9509..0e35ab36cf85 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-08-05 Richard Henderson + + * local-alloc.c (update_equiv_regs): Do not move insns that + can throw. + 2001-08-05 Jan Hubicka * Makefile.in (reload1.o): Add dedendancy on except.h diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index a068db8385d3..c987190698ef 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -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))