pa.c (legitimize_address): Consistently use Pmode rather than SImode.
* pa.c (legitimize_address): Consistently use Pmode rather than SImode. Do not call gen_pic2_highpart directly anymore. * pa.md (pic2_highpart): No longer a named pattern. (pic2_lo_sum): Similarly. Reformat to make more readable. From-SVN: r28326
This commit is contained in:
parent
b70a1fb1c2
commit
2a0a6f69ea
|
@ -1,5 +1,10 @@
|
||||||
Wed Jul 28 13:18:35 1999 Jeffrey A Law (law@cygnus.com)
|
Wed Jul 28 13:18:35 1999 Jeffrey A Law (law@cygnus.com)
|
||||||
|
|
||||||
|
* pa.c (legitimize_address): Consistently use Pmode rather than
|
||||||
|
SImode. Do not call gen_pic2_highpart directly anymore.
|
||||||
|
* pa.md (pic2_highpart): No longer a named pattern.
|
||||||
|
(pic2_lo_sum): Similarly. Reformat to make more readable.
|
||||||
|
|
||||||
* pa.md (call, call_value): Use "word_mode" instead of "SImode" as
|
* pa.md (call, call_value): Use "word_mode" instead of "SImode" as
|
||||||
needed.
|
needed.
|
||||||
|
|
||||||
|
|
|
@ -639,11 +639,13 @@ legitimize_pic_address (orig, mode, reg)
|
||||||
|
|
||||||
if (flag_pic == 2)
|
if (flag_pic == 2)
|
||||||
{
|
{
|
||||||
emit_insn (gen_pic2_highpart (reg, pic_offset_table_rtx, orig));
|
emit_move_insn (reg,
|
||||||
|
gen_rtx_PLUS (word_mode, pic_offset_table_rtx,
|
||||||
|
gen_rtx_HIGH (word_mode, orig)));
|
||||||
pic_ref
|
pic_ref
|
||||||
= gen_rtx_MEM (Pmode,
|
= gen_rtx_MEM (Pmode,
|
||||||
gen_rtx_LO_SUM (Pmode, reg,
|
gen_rtx_LO_SUM (Pmode, reg,
|
||||||
gen_rtx_UNSPEC (SImode,
|
gen_rtx_UNSPEC (Pmode,
|
||||||
gen_rtvec (1, orig),
|
gen_rtvec (1, orig),
|
||||||
0)));
|
0)));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1610,7 +1610,7 @@
|
||||||
[(set_attr "type" "multi")
|
[(set_attr "type" "multi")
|
||||||
(set_attr "length" "16")]) ; 12 or 16
|
(set_attr "length" "16")]) ; 12 or 16
|
||||||
|
|
||||||
(define_insn "pic2_highpart"
|
(define_insn ""
|
||||||
[(set (match_operand:SI 0 "register_operand" "=a")
|
[(set (match_operand:SI 0 "register_operand" "=a")
|
||||||
(plus:SI (match_operand:SI 1 "register_operand" "r")
|
(plus:SI (match_operand:SI 1 "register_operand" "r")
|
||||||
(high:SI (match_operand 2 "" ""))))]
|
(high:SI (match_operand 2 "" ""))))]
|
||||||
|
@ -1624,11 +1624,12 @@
|
||||||
; We need this to make sure CSE doesn't simplify a memory load with a
|
; We need this to make sure CSE doesn't simplify a memory load with a
|
||||||
; symbolic address, whose content it think it knows. For PIC, what CSE
|
; symbolic address, whose content it think it knows. For PIC, what CSE
|
||||||
; think is the real value will be the address of that value.
|
; think is the real value will be the address of that value.
|
||||||
(define_insn "pic2_lo_sum"
|
(define_insn ""
|
||||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||||
(mem:SI (lo_sum:SI (match_operand:SI 1 "register_operand" "r")
|
(mem:SI
|
||||||
(unspec:SI [(match_operand:SI 2 "symbolic_operand" "")] 0))))]
|
(lo_sum:SI (match_operand:SI 1 "register_operand" "r")
|
||||||
""
|
(unspec:SI
|
||||||
|
[(match_operand:SI 2 "symbolic_operand" "")] 0))))]
|
||||||
"*
|
"*
|
||||||
{
|
{
|
||||||
if (flag_pic != 2)
|
if (flag_pic != 2)
|
||||||
|
@ -1638,7 +1639,6 @@
|
||||||
[(set_attr "type" "load")
|
[(set_attr "type" "load")
|
||||||
(set_attr "length" "4")])
|
(set_attr "length" "4")])
|
||||||
|
|
||||||
|
|
||||||
;; Always use addil rather than ldil;add sequences. This allows the
|
;; Always use addil rather than ldil;add sequences. This allows the
|
||||||
;; HP linker to eliminate the dp relocation if the symbolic operand
|
;; HP linker to eliminate the dp relocation if the symbolic operand
|
||||||
;; lives in the TEXT space.
|
;; lives in the TEXT space.
|
||||||
|
|
Loading…
Reference in New Issue