aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2008-12-09 07:16:57 +0000
committerUros Bizjak <ubizjak@gmail.com>2008-12-09 07:16:57 +0000
commiteeea2422f2c4654b472da35402513a0e3224cd8f (patch)
tree0ea8f9f0dd9c6383c4b241aa3381dab19f9e113c
parent9f82b26db4838b8270f7dbd4345c52d6c711cc08 (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/ChangeLog5
-rw-r--r--gcc/config/alpha/alpha.c19
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,