arm.opt (-marm-pic-data-is-text-relative): New option.

2013-11-19  Joey Ye  <joey.ye@arm.com>

        * config/arm/arm.opt (-marm-pic-data-is-text-relative): New option.
        * doc/invoke.texi (-marm-pic-data-is-text-relative): Documentation
        for new option.
        * config/arm/arm.c (arm_option_override): By default disable
        -marm-pic-data-is-text-relative.
        (legitimize_pic_address): Use arm_pic_data_is_text_relative.
        (arm_assemble_integer): Likewise.
        * config/arm/arm.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE): 
        New macro to initialize -marm-pic-data-is-text-relative.

From-SVN: r205016
This commit is contained in:
Joey Ye 2013-11-19 10:00:46 +00:00 committed by Joey Ye
parent cd0470594c
commit 32d6e6c0f8
5 changed files with 32 additions and 2 deletions

View File

@ -1,3 +1,15 @@
2013-11-19 Joey Ye <joey.ye@arm.com>
* config/arm/arm.opt (-marm-pic-data-is-text-relative): New option.
* doc/invoke.texi (-marm-pic-data-is-text-relative): Documentation
for new option.
* config/arm/arm.c (arm_option_override): By default disable
-marm-pic-data-is-text-relative.
(legitimize_pic_address): Use arm_pic_data_is_text_relative.
(arm_assemble_integer): Likewise.
* config/arm/arm.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
New macro to initialize -marm-pic-data-is-text-relative.
2013-11-19 Bin Cheng <bin.cheng@arm.com>
* tree-ssa-loop-ivopts.c (enum ainc_type): New.

View File

@ -2449,6 +2449,10 @@ arm_option_override (void)
arm_pic_register = pic_register;
}
if (TARGET_VXWORKS_RTP
&& !global_options_set.x_arm_pic_data_is_text_relative)
arm_pic_data_is_text_relative = 0;
/* Enable -mfix-cortex-m3-ldrd by default for Cortex-M3 cores. */
if (fix_cm3_ldrd == 2)
{
@ -5965,7 +5969,7 @@ legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg)
|| (GET_CODE (orig) == SYMBOL_REF &&
SYMBOL_REF_LOCAL_P (orig)))
&& NEED_GOT_RELOC
&& !TARGET_VXWORKS_RTP)
&& arm_pic_data_is_text_relative)
insn = arm_pic_static_addr (orig, reg);
else
{
@ -21458,7 +21462,7 @@ arm_assemble_integer (rtx x, unsigned int size, int aligned_p)
{
/* See legitimize_pic_address for an explanation of the
TARGET_VXWORKS_RTP check. */
if (TARGET_VXWORKS_RTP
if (!arm_pic_data_is_text_relative
|| (GET_CODE (x) == SYMBOL_REF && !SYMBOL_REF_LOCAL_P (x)))
fputs ("(GOT)", asm_out_file);
else

View File

@ -568,6 +568,10 @@ extern int prefer_neon_for_64bits;
#define NEED_PLT_RELOC 0
#endif
#ifndef TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE
#define TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE 1
#endif
/* Nonzero if we need to refer to the GOT with a PC-relative
offset. In other words, generate

View File

@ -158,6 +158,10 @@ mlong-calls
Target Report Mask(LONG_CALLS)
Generate call insns as indirect calls, if necessary
mpic-data-is-text-relative
Target Report Var(arm_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE)
Assume data segments are relative to text segment.
mpic-register=
Target RejectNegative Joined Var(arm_pic_register_string)
Specify the register to be used for PIC addressing

View File

@ -12188,6 +12188,12 @@ before execution begins.
Specify the register to be used for PIC addressing. The default is R10
unless stack-checking is enabled, when R9 is used.
@item -mpic-data-is-text-relative
@opindex mpic-data-is-text-relative
Assume that each data segments are relative to text segment at load time.
Therefore, it permits addressing data using PC-relative operations.
This option is on by default for targets other than VxWorks RTP.
@item -mpoke-function-name
@opindex mpoke-function-name
Write the name of each function into the text section, directly