diff options
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/cse.c | 14 |
2 files changed, 7 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fd651ed..bd173b1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-11-13 Bernd Schmidt <bernd.schmidt@analog.com> + + * cse.c (cse_insn): Stores in a libcall sequence can invalidate + previous loads. + 2004-11-13 Kazu Hirata <kazu@cs.umass.edu> * tree.h: Fix comment typos. @@ -5681,12 +5681,7 @@ cse_insn (rtx insn, rtx libcall_insn) if (REG_P (dest) || GET_CODE (dest) == SUBREG) invalidate (dest, VOIDmode); else if (MEM_P (dest)) - { - /* Outgoing arguments for a libcall don't - affect any recorded expressions. */ - if (! libcall_insn || insn == libcall_insn) - invalidate (dest, VOIDmode); - } + invalidate (dest, VOIDmode); else if (GET_CODE (dest) == STRICT_LOW_PART || GET_CODE (dest) == ZERO_EXTRACT) invalidate (XEXP (dest, 0), GET_MODE (dest)); @@ -5854,12 +5849,7 @@ cse_insn (rtx insn, rtx libcall_insn) if (REG_P (dest) || GET_CODE (dest) == SUBREG) invalidate (dest, VOIDmode); else if (MEM_P (dest)) - { - /* Outgoing arguments for a libcall don't - affect any recorded expressions. */ - if (! libcall_insn || insn == libcall_insn) - invalidate (dest, VOIDmode); - } + invalidate (dest, VOIDmode); else if (GET_CODE (dest) == STRICT_LOW_PART || GET_CODE (dest) == ZERO_EXTRACT) invalidate (XEXP (dest, 0), GET_MODE (dest)); |
