summaryrefslogtreecommitdiff
path: root/gcc/config/mips/mips.c
diff options
context:
space:
mode:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2002-03-09 05:48:21 +0000
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2002-03-09 05:48:21 +0000
commitbfe3e4b4faa088483a1bd5b0f07c219e6d9597e7 (patch)
tree6a13df93febf39c53900a304f2760dee27c66ac4 /gcc/config/mips/mips.c
parentf636c6f83da33641cf76772d953adbb6aa8766bb (diff)
downloadgcc-bfe3e4b4faa088483a1bd5b0f07c219e6d9597e7.tar.gz
* config/mips/mips.c (mips_va_arg): Apply big-endianness address
offset before loading address of argument passed by transparent reference. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50478 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/mips/mips.c')
-rw-r--r--gcc/config/mips/mips.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 683e33a9c30..6cdbda5c8b2 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;
}
}