mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
pru: Enable section anchoring by default
Loading an arbitrary constant address in a register is expensive for PRU. So enable section anchoring by default to utilize the unsigned byte constant offset operand of load/store instructions. gcc/ChangeLog: * common/config/pru/pru-common.cc (TARGET_OPTION_OPTIMIZATION_TABLE): New definition. * config/pru/pru.cc (TARGET_MIN_ANCHOR_OFFSET): Set minimal anchor offset. (TARGET_MAX_ANCHOR_OFFSET): Set maximum anchor offset. gcc/testsuite/ChangeLog: * gcc.target/pru/section-anchors-1.c: New test. * gcc.target/pru/section-anchors-2.c: New test. Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
This commit is contained in:
parent
f2fac50209
commit
dcdefe47e1
@ -33,4 +33,16 @@ along with GCC; see the file COPYING3. If not see
|
||||
#undef TARGET_EXCEPT_UNWIND_INFO
|
||||
#define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info
|
||||
|
||||
#undef TARGET_OPTION_OPTIMIZATION_TABLE
|
||||
#define TARGET_OPTION_OPTIMIZATION_TABLE pru_option_optimization_table
|
||||
|
||||
/* Set default optimization options. */
|
||||
static const struct default_options pru_option_optimization_table[] =
|
||||
{
|
||||
/* Enable section anchors by default at -O1 or higher. */
|
||||
{ OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 },
|
||||
|
||||
{ OPT_LEVELS_NONE, 0, NULL, 0 }
|
||||
};
|
||||
|
||||
struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
|
||||
|
@ -3249,6 +3249,12 @@ pru_unwind_word_mode (void)
|
||||
#undef TARGET_PRINT_OPERAND_ADDRESS
|
||||
#define TARGET_PRINT_OPERAND_ADDRESS pru_print_operand_address
|
||||
|
||||
#undef TARGET_MIN_ANCHOR_OFFSET
|
||||
#define TARGET_MIN_ANCHOR_OFFSET 0
|
||||
|
||||
#undef TARGET_MAX_ANCHOR_OFFSET
|
||||
#define TARGET_MAX_ANCHOR_OFFSET 255
|
||||
|
||||
#undef TARGET_OPTION_OVERRIDE
|
||||
#define TARGET_OPTION_OVERRIDE pru_option_override
|
||||
|
||||
|
14
gcc/testsuite/gcc.target/pru/section-anchors-1.c
Normal file
14
gcc/testsuite/gcc.target/pru/section-anchors-1.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* Ensure section anchors are enabled by default. */
|
||||
|
||||
/* { dg-do assemble } */
|
||||
/* { dg-options "-O1" } */
|
||||
/* { dg-final { object-size text == 24 } } */
|
||||
|
||||
int aa;
|
||||
int bb;
|
||||
|
||||
int
|
||||
test (void)
|
||||
{
|
||||
return aa + bb;
|
||||
}
|
14
gcc/testsuite/gcc.target/pru/section-anchors-2.c
Normal file
14
gcc/testsuite/gcc.target/pru/section-anchors-2.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* Ensure section anchors are enabled by default. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O1" } */
|
||||
|
||||
int aa;
|
||||
int bb;
|
||||
|
||||
int
|
||||
test (void)
|
||||
{
|
||||
return aa + bb;
|
||||
/* { dg-final { scan-assembler {\n\tldi32\tr\d+, \.LANCHOR\d+} } } */
|
||||
}
|
Loading…
Reference in New Issue
Block a user