From: Richard Henderson Date: Sun, 16 Aug 1998 00:54:51 +0000 (-0700) Subject: reload.c (find_equiv_reg): Reject equivalences separated by a volatile instruction. X-Git-Tag: prereleases/egcs-1.1-prerelease~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2651814314a783077fee869730c664837f4db13f;p=thirdparty%2Fgcc.git reload.c (find_equiv_reg): Reject equivalences separated by a volatile instruction. � * reload.c (find_equiv_reg): Reject equivalences separated by a volatile instruction. From-SVN: r21761 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e14fc70b037a..9685207a9873 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sun Aug 16 01:53:21 1998 Richard Henderson + + * reload.c (find_equiv_reg): Reject equivalences separated + by a volatile instruction. + Sun Aug 16 00:21:44 1998 Franz Sirl * rs6000/linux.h (CPP_OS_DEFAULT_SPEC): Define. diff --git a/gcc/reload.c b/gcc/reload.c index 1461cad5f832..b1483d19440a 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -6198,12 +6198,17 @@ find_equiv_reg (goal, insn, class, other, reload_reg_p, goalreg, mode) if (GET_RTX_CLASS (GET_CODE (p)) == 'i') { + pat = PATTERN (p); + + /* Watch out for unspec_volatile, and volatile asms. */ + if (volatile_insn_p (pat)) + return 0; + /* If this insn P stores in either GOAL or VALUE, return 0. If GOAL is a memory ref and this insn writes memory, return 0. If GOAL is a memory ref and its address is not constant, and this insn P changes a register used in GOAL, return 0. */ - pat = PATTERN (p); if (GET_CODE (pat) == SET || GET_CODE (pat) == CLOBBER) { register rtx dest = SET_DEST (pat);