aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2002-03-09 05:48:21 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2002-03-09 05:48:21 +0000
commita85cd40702d3b6d5bf305d3de0993d1e0ee42eaa (patch)
tree6a13df93febf39c53900a304f2760dee27c66ac4
parentc51fbe40b30a1633942cc46eccb1597449462dd7 (diff)
downloadgcc-a85cd40702d3b6d5bf305d3de0993d1e0ee42eaa.zip
gcc-a85cd40702d3b6d5bf305d3de0993d1e0ee42eaa.tar.gz
gcc-a85cd40702d3b6d5bf305d3de0993d1e0ee42eaa.tar.bz2
mips.c (mips_va_arg): Apply big-endianness address offset before loading address of argument passed...
* config/mips/mips.c (mips_va_arg): Apply big-endianness address offset before loading address of argument passed by transparent reference. From-SVN: r50478
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/mips/mips.c12
2 files changed, 12 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c48695f..c9bf259 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2002-03-09 Alexandre Oliva <aoliva@redhat.com>
+
+ * config/mips/mips.c (mips_va_arg): Apply big-endianness address
+ offset before loading address of argument passed by transparent
+ reference.
+
2002-03-08 John David Anglin <dave@hiauly1.hia.nrc.ca>
* t-pa64 (LIB1ASMFUNCS, LIB1ASMSRC): Delete.
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 683e33a..6cdbda5 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -4726,17 +4726,17 @@ mips_va_arg (valist, type)
emit_queue();
emit_label (lab_over);
+ if (BYTES_BIG_ENDIAN && rsize != size)
+ addr_rtx = plus_constant (addr_rtx, rsize - size);
+
if (indirect)
{
- r = gen_rtx_MEM (Pmode, addr_rtx);
+ addr_rtx = force_reg (Pmode, addr_rtx);
+ r = gen_rtx_MEM (Pmode, addr_rtx);
set_mem_alias_set (r, get_varargs_alias_set ());
emit_move_insn (addr_rtx, r);
}
- else
- {
- if (BYTES_BIG_ENDIAN && rsize != size)
- addr_rtx = plus_constant (addr_rtx, rsize - size);
- }
+
return addr_rtx;
}
}