From 44552b6a5b3f09a2670af1bd3af75ad396b31c6d Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 18 Aug 1993 00:45:51 -0600 Subject: [PATCH] pa.md (high for symbolic operands): TARGET_KERNEL version is now default. * pa.md (high for symbolic operands): TARGET_KERNEL version is now default. Delete ! TARGET_KERNEL version. From-SVN: r5179 --- gcc/config/pa/pa.md | 33 ++++----------------------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 4b085f2..c78b9c3 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -1069,12 +1069,13 @@ [(set_attr "type" "multi") (set_attr "length" "12")]) -;; For kernel code always use addil; else we can lose due to a linker -;; bug involving absolute symbols and "ldil;add" style relocations +;; Always use addil rather than ldil;add sequences. This allows the +;; HP linker to eliminate the dp relocation if the symbolic operand +;; lives in the TEXT space. (define_insn "" [(set (match_operand:SI 0 "register_operand" "=a") (high:SI (match_operand 1 "" "")))] - "TARGET_KERNEL && symbolic_operand(operands[1], Pmode) + "symbolic_operand(operands[1], Pmode) && ! function_label_operand (operands[1]) && ! read_only_operand (operands[1])" "@ @@ -1082,32 +1083,6 @@ [(set_attr "type" "binary") (set_attr "length" "4")]) -;; For all symbolic operands *except* function addresses and read-only -;; operands (which live in TEXT space and do not require relocation). -;; -;; The constraints are a little strange. -;; The basic idea is to prefer %r1 as much as possible for register -;; allocation (hence we do not allow regclass to know about the general -;; register case (via *r). -;; We also want to avoid spilling %r1 as that will cause every use -;; of %r1 to be reloaded, so we make the %r1 case very expensive -;; as far as reload is concerned (via !a). -;; -;; The real solution is to not spill all pseudos allocated to %r1 -;; when %r1 is needed as a spill register, but that is considerably -;; more difficult than coercing decent behavior via constraints. -(define_insn "" - [(set (match_operand:SI 0 "register_operand" "=!a,*r") - (high:SI (match_operand 1 "" "")))] - "! TARGET_KERNEL && symbolic_operand(operands[1], Pmode) - && ! function_label_operand (operands[1]) - && ! read_only_operand (operands[1])" - "@ - addil L'%G1,%%r27 - ldil L'%G1,%0\;add %0,%%r27,%0" - [(set_attr "type" "binary,binary") - (set_attr "length" "4,8")]) - ;; This is for use in the prologue/epilogue code. We need it ;; to add large constants to a stack pointer or frame pointer. ;; Because of the additional %r1 pressure, we probably do not -- 2.7.4