config/m32r.c (m32r_legitimize_pic_address): Changed to support GOTOFF relocation.
config/m32r.c (m32r_legitimize_pic_address): Changed to support GOTOFF relocation. config/m32r.md (UNSPEC_GOTOFF): New. (gotoff_load_addr): New. From-SVN: r92186
This commit is contained in:
parent
2594119414
commit
c331bf0802
@ -3,6 +3,11 @@
|
||||
* config/m32r/m32r.h (PREFERRED_DEBUGGING_TYPE):
|
||||
Use DWARF2_DEBUG.
|
||||
|
||||
* config/m32r.c (m32r_legitimize_pic_address): Changed
|
||||
to support GOTOFF relocation.
|
||||
* config/m32r.md (UNSPEC_GOTOFF): New.
|
||||
(gotoff_load_addr): New.
|
||||
|
||||
2004-12-15 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* config/mips/mips.c (mips_arg_info): Use FUNCTION_ARG_BOUNDARY to
|
||||
|
@ -1987,12 +1987,21 @@ m32r_legitimize_pic_address (rtx orig, rtx reg)
|
||||
else
|
||||
address = reg;
|
||||
|
||||
current_function_uses_pic_offset_table = 1;
|
||||
|
||||
if (GET_CODE (orig) == LABEL_REF
|
||||
|| (GET_CODE (orig) == SYMBOL_REF && SYMBOL_REF_LOCAL_P (orig)))
|
||||
{
|
||||
emit_insn (gen_gotoff_load_addr (reg, orig));
|
||||
emit_insn (gen_addsi3 (reg, reg, pic_offset_table_rtx));
|
||||
return reg;
|
||||
}
|
||||
|
||||
emit_insn (gen_pic_load_addr (address, orig));
|
||||
|
||||
emit_insn (gen_addsi3 (address, address, pic_offset_table_rtx));
|
||||
pic_ref = gen_const_mem (Pmode, address);
|
||||
insn = emit_move_insn (reg, pic_ref);
|
||||
current_function_uses_pic_offset_table = 1;
|
||||
#if 0
|
||||
/* Put a REG_EQUAL note on this insn, so that it can be optimized
|
||||
by loop. */
|
||||
|
@ -31,7 +31,9 @@
|
||||
[(UNSPEC_LOAD_SDA_BASE 2)
|
||||
(UNSPEC_SET_CBIT 3)
|
||||
(UNSPEC_PIC_LOAD_ADDR 4)
|
||||
(UNSPEC_GET_PC 5)])
|
||||
(UNSPEC_GET_PC 5)
|
||||
(UNSPEC_GOTOFF 6)
|
||||
])
|
||||
|
||||
;; Insn type. Used to default other attribute values.
|
||||
(define_attr "type"
|
||||
@ -2570,6 +2572,14 @@
|
||||
"ld24 %0,%#%1"
|
||||
[(set_attr "type" "int4")])
|
||||
|
||||
(define_insn "gotoff_load_addr"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(unspec:SI [(match_operand 1 "" "")] UNSPEC_GOTOFF))]
|
||||
"flag_pic"
|
||||
"seth %0, %#shigh(%1@GOTOFF)\;add3 %0, %0, low(%1@GOTOFF)"
|
||||
[(set_attr "type" "int4")
|
||||
(set_attr "length" "8")])
|
||||
|
||||
;; Load program counter insns.
|
||||
|
||||
(define_insn "get_pc"
|
||||
|
Loading…
Reference in New Issue
Block a user