aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-08-18 00:45:51 -0600
committerJeff Law <law@gcc.gnu.org>1993-08-18 00:45:51 -0600
commit44552b6a5b3f09a2670af1bd3af75ad396b31c6d (patch)
treed2fbd6cd66540342075a8523fadec41f914c6627 /gcc
parentba365a1952a253b9dca064c5af1ece63aebac95e (diff)
downloadgcc-44552b6a5b3f09a2670af1bd3af75ad396b31c6d.zip
gcc-44552b6a5b3f09a2670af1bd3af75ad396b31c6d.tar.gz
gcc-44552b6a5b3f09a2670af1bd3af75ad396b31c6d.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.md33
1 files 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