diff options
| author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-12-09 07:16:57 +0000 |
|---|---|---|
| committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-12-09 07:16:57 +0000 |
| commit | 7ca8bc48778eb47216630c1740747bb47b1fbcf2 (patch) | |
| tree | 0ea8f9f0dd9c6383c4b241aa3381dab19f9e113c | |
| parent | 352649dc55bb53249b99368de7cf114fe436a32b (diff) | |
| download | ppe42-gcc-7ca8bc48778eb47216630c1740747bb47b1fbcf2.tar.gz ppe42-gcc-7ca8bc48778eb47216630c1740747bb47b1fbcf2.zip | |
* config/alpha/alpha.c (alpha_set_memflags): Process memory
references in full insn sequence.
git-svn-id: svn+ssh://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, |

