diff options
author | Jeff Law <law@gcc.gnu.org> | 1992-10-01 11:03:46 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1992-10-01 11:03:46 -0600 |
commit | 2fbd8ac74e5d308cecbe27a0c3ce5a05f28770a0 (patch) | |
tree | 509a9826c6be89b48856fb639d1c7a592ea28d83 /gcc | |
parent | e4e13a012ed49f893fe33cd81266d42b52c03b48 (diff) | |
download | gcc-2fbd8ac74e5d308cecbe27a0c3ce5a05f28770a0.zip gcc-2fbd8ac74e5d308cecbe27a0c3ce5a05f28770a0.tar.gz gcc-2fbd8ac74e5d308cecbe27a0c3ce5a05f28770a0.tar.bz2 |
pa.c (emit_move_sequence): When making a reference to the data space before reload...
* pa.c (emit_move_sequence): When making a reference to the data
space before reload, emit an insn sequence which is much more
likely to create "addil" instructions rather than "ldil; add"
sequences. Doing so greatly reduces the chance of running into a
HPUX linker bug when compiling kernels.
From-SVN: r2296
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/pa/pa.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index f723542..7f34d80 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -665,10 +665,12 @@ emit_move_sequence (operands, mode) } else { - rtx temp1 = gen_reg_rtx (mode), temp2 = gen_reg_rtx (mode); + rtx temp1, temp2 = gen_reg_rtx (mode); - emit_insn (gen_rtx (SET, VOIDmode, - temp1, gen_rtx (HIGH, mode, operand1))); + /* For 2.4 we could set RTX_UNCHANGING and add a + REG_EQUAL note for the first insn. This would + allow the first insn to be moved out of loops. */ + temp1 = gen_rtx (HIGH, mode, operand1); emit_insn (gen_rtx (SET, VOIDmode, temp2, gen_rtx (PLUS, mode, |