aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1992-10-01 11:03:46 -0600
committerJeff Law <law@gcc.gnu.org>1992-10-01 11:03:46 -0600
commit2fbd8ac74e5d308cecbe27a0c3ce5a05f28770a0 (patch)
tree509a9826c6be89b48856fb639d1c7a592ea28d83 /gcc
parente4e13a012ed49f893fe33cd81266d42b52c03b48 (diff)
downloadgcc-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.c8
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,