arm.c (legitimize_pic_address): Handle LABEL_REFs in substantially the same way as we handle SYMBOL_REFS.
* arm.c (legitimize_pic_address): Handle LABEL_REFs in substantially the same way as we handle SYMBOL_REFS. From-SVN: r47973
This commit is contained in:
parent
62ab1cafcf
commit
a3c48721b5
|
@ -1,3 +1,8 @@
|
||||||
|
2001-12-13 Richard Earnshaw <rearnsha@arm.com>
|
||||||
|
|
||||||
|
* arm.c (legitimize_pic_address): Handle LABEL_REFs in substantially
|
||||||
|
the same way as we handle SYMBOL_REFS.
|
||||||
|
|
||||||
Thu Dec 13 07:47:24 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
Thu Dec 13 07:47:24 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||||
|
|
||||||
* loop.c (remove_constant_addition): Fix prototype and whitespace.
|
* loop.c (remove_constant_addition): Fix prototype and whitespace.
|
||||||
|
|
|
@ -2254,7 +2254,8 @@ legitimize_pic_address (orig, mode, reg)
|
||||||
enum machine_mode mode;
|
enum machine_mode mode;
|
||||||
rtx reg;
|
rtx reg;
|
||||||
{
|
{
|
||||||
if (GET_CODE (orig) == SYMBOL_REF)
|
if (GET_CODE (orig) == SYMBOL_REF
|
||||||
|
|| GET_CODE (orig) == LABEL_REF)
|
||||||
{
|
{
|
||||||
#ifndef AOF_ASSEMBLER
|
#ifndef AOF_ASSEMBLER
|
||||||
rtx pic_ref, address;
|
rtx pic_ref, address;
|
||||||
|
@ -2287,10 +2288,16 @@ legitimize_pic_address (orig, mode, reg)
|
||||||
else
|
else
|
||||||
emit_insn (gen_pic_load_addr_thumb (address, orig));
|
emit_insn (gen_pic_load_addr_thumb (address, orig));
|
||||||
|
|
||||||
pic_ref = gen_rtx_MEM (Pmode,
|
if (GET_CODE (orig) == LABEL_REF && NEED_GOT_RELOC)
|
||||||
gen_rtx_PLUS (Pmode, pic_offset_table_rtx,
|
pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, address);
|
||||||
address));
|
else
|
||||||
RTX_UNCHANGING_P (pic_ref) = 1;
|
{
|
||||||
|
pic_ref = gen_rtx_MEM (Pmode,
|
||||||
|
gen_rtx_PLUS (Pmode, pic_offset_table_rtx,
|
||||||
|
address));
|
||||||
|
RTX_UNCHANGING_P (pic_ref) = 1;
|
||||||
|
}
|
||||||
|
|
||||||
insn = emit_move_insn (reg, pic_ref);
|
insn = emit_move_insn (reg, pic_ref);
|
||||||
#endif
|
#endif
|
||||||
current_function_uses_pic_offset_table = 1;
|
current_function_uses_pic_offset_table = 1;
|
||||||
|
@ -2351,25 +2358,6 @@ legitimize_pic_address (orig, mode, reg)
|
||||||
|
|
||||||
return gen_rtx_PLUS (Pmode, base, offset);
|
return gen_rtx_PLUS (Pmode, base, offset);
|
||||||
}
|
}
|
||||||
else if (GET_CODE (orig) == LABEL_REF)
|
|
||||||
{
|
|
||||||
current_function_uses_pic_offset_table = 1;
|
|
||||||
|
|
||||||
if (NEED_GOT_RELOC)
|
|
||||||
{
|
|
||||||
rtx pic_ref, address = gen_reg_rtx (Pmode);
|
|
||||||
|
|
||||||
if (TARGET_ARM)
|
|
||||||
emit_insn (gen_pic_load_addr_arm (address, orig));
|
|
||||||
else
|
|
||||||
emit_insn (gen_pic_load_addr_thumb (address, orig));
|
|
||||||
|
|
||||||
pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, address);
|
|
||||||
|
|
||||||
emit_move_insn (address, pic_ref);
|
|
||||||
return address;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return orig;
|
return orig;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue