diff options
author | Richard Sandiford <rsandifo@redhat.com> | 2003-11-30 19:30:14 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2003-11-30 19:30:14 +0000 |
commit | 936b13179f2c50dbfc0ace293cf7558b6399d6ea (patch) | |
tree | 5a65705ceefe58591ba184764a8828bd1ec49178 /gcc/config/mips/mips.c | |
parent | 85a45cbb94cb71243ff95e57ebd7d933745af2f6 (diff) | |
download | gcc-936b13179f2c50dbfc0ace293cf7558b6399d6ea.zip gcc-936b13179f2c50dbfc0ace293cf7558b6399d6ea.tar.gz gcc-936b13179f2c50dbfc0ace293cf7558b6399d6ea.tar.bz2 |
re PR c++/12727 (mipsisa64-elf -mips32 regression: g++.dg/eh/registers1.C)
PR target/12727
* config/mips/mips.c (mips_save_reg): Fix frame information for sdc1
on 32-bit big-endian targets.
From-SVN: r74071
Diffstat (limited to 'gcc/config/mips/mips.c')
-rw-r--r-- | gcc/config/mips/mips.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 6096edd..87e2089 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -6543,11 +6543,15 @@ mips_frame_set (rtx mem, rtx reg) static void mips_save_reg (rtx reg, rtx mem) { - if (GET_MODE (reg) == DFmode && mips_split_64bit_move_p (mem, reg)) + if (GET_MODE (reg) == DFmode && !TARGET_FLOAT64) { rtx x1, x2; - mips_split_64bit_move (mem, reg); + if (mips_split_64bit_move_p (mem, reg)) + mips_split_64bit_move (mem, reg); + else + emit_move_insn (mem, reg); + x1 = mips_frame_set (mips_subword (mem, 0), mips_subword (reg, 0)); x2 = mips_frame_set (mips_subword (mem, 1), mips_subword (reg, 1)); mips_set_frame_expr (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, x1, x2))); |