diff options
author | John David Anglin <danglin@gcc.gnu.org> | 2015-09-12 13:51:40 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2015-09-12 13:51:40 +0000 |
commit | 2b564b9c4528d947ffbe4cd0d9dea44c1f6b2328 (patch) | |
tree | 106bf29836a236a3dce12654d7cafb79e61a0f62 /gcc/config/pa/pa.c | |
parent | 76b88c5fc9930734f4d3496b9100862f62311ce5 (diff) | |
download | gcc-2b564b9c4528d947ffbe4cd0d9dea44c1f6b2328.zip gcc-2b564b9c4528d947ffbe4cd0d9dea44c1f6b2328.tar.gz gcc-2b564b9c4528d947ffbe4cd0d9dea44c1f6b2328.tar.bz2 |
pa.c (pa_output_move_double): Enhance to handle HIGH CONSTANT_P operands.
* config/pa/pa.c (pa_output_move_double): Enhance to handle HIGH
CONSTANT_P operands.
From-SVN: r227706
Diffstat (limited to 'gcc/config/pa/pa.c')
-rw-r--r-- | gcc/config/pa/pa.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 7cf540c..e16e58d 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -2464,6 +2464,7 @@ pa_output_move_double (rtx *operands) enum { REGOP, OFFSOP, MEMOP, CNSTOP, RNDOP } optype0, optype1; rtx latehalf[2]; rtx addreg0 = 0, addreg1 = 0; + int highonly = 0; /* First classify both operands. */ @@ -2674,7 +2675,14 @@ pa_output_move_double (rtx *operands) else if (optype1 == OFFSOP) latehalf[1] = adjust_address_nv (operands[1], SImode, 4); else if (optype1 == CNSTOP) - split_double (operands[1], &operands[1], &latehalf[1]); + { + if (GET_CODE (operands[1]) == HIGH) + { + operands[1] = XEXP (operands[1], 0); + highonly = 1; + } + split_double (operands[1], &operands[1], &latehalf[1]); + } else latehalf[1] = operands[1]; @@ -2727,8 +2735,11 @@ pa_output_move_double (rtx *operands) if (addreg1) output_asm_insn ("ldo 4(%0),%0", &addreg1); - /* Do that word. */ - output_asm_insn (pa_singlemove_string (latehalf), latehalf); + /* Do high-numbered word. */ + if (highonly) + output_asm_insn ("ldil L'%1,%0", latehalf); + else + output_asm_insn (pa_singlemove_string (latehalf), latehalf); /* Undo the adds we just did. */ if (addreg0) |