diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2008-12-09 07:16:57 +0000 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2008-12-09 07:16:57 +0000 |
commit | eeea2422f2c4654b472da35402513a0e3224cd8f (patch) | |
tree | 0ea8f9f0dd9c6383c4b241aa3381dab19f9e113c | |
parent | 9f82b26db4838b8270f7dbd4345c52d6c711cc08 (diff) |
* config/alpha/alpha.c (alpha_set_memflags): Process memory
references in full insn sequence.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@142581 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 19 |
2 files changed, 14 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8b338f59da..fe7ef41c1a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-12-08 Uros Bizjak <ubizjak@gmail.com> + + * config/alpha/alpha.c (alpha_set_memflags): Process memory + references in full insn sequence. + 2008-12-09 Jason Merrill <jason@redhat.com> PR c++/38410 diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 26feea52dda..52ae122f6ed 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -1603,18 +1603,17 @@ alpha_set_memflags_1 (rtx *xp, void *data) return -1; } -/* Given INSN, which is an INSN list or the PATTERN of a single insn - generated to perform a memory operation, look for any MEMs in either +/* Given SEQ, which is an INSN list, look for any MEMs in either a SET_DEST or a SET_SRC and copy the in-struct, unchanging, and volatile flags from REF into each of the MEMs found. If REF is not a MEM, don't do anything. */ void -alpha_set_memflags (rtx insn, rtx ref) +alpha_set_memflags (rtx seq, rtx ref) { - rtx *base_ptr; + rtx insn; - if (GET_CODE (ref) != MEM) + if (!MEM_P (ref)) return; /* This is only called from alpha.md, after having had something @@ -1627,11 +1626,11 @@ alpha_set_memflags (rtx insn, rtx ref) && !MEM_READONLY_P (ref)) return; - if (INSN_P (insn)) - base_ptr = &PATTERN (insn); - else - base_ptr = &insn; - for_each_rtx (base_ptr, alpha_set_memflags_1, (void *) ref); + for (insn = seq; insn; insn = NEXT_INSN (insn)) + if (INSN_P (insn)) + for_each_rtx (&PATTERN (insn), alpha_set_memflags_1, (void *) ref); + else + gcc_unreachable (); } static rtx alpha_emit_set_const (rtx, enum machine_mode, HOST_WIDE_INT, |