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
This commit is contained in:
parent
ba365a1952
commit
44552b6a5b
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user