From a85cd40702d3b6d5bf305d3de0993d1e0ee42eaa Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sat, 9 Mar 2002 05:48:21 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/mips/mips.c | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c48695f7c20..c9bf259a4bd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-03-09 Alexandre Oliva + + * 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 * t-pa64 (LIB1ASMFUNCS, LIB1ASMSRC): Delete. 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; } }