This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch, xtensa] Add section anchor support for the xtensa backend.


On Tue, Jan 14, 2014 at 7:20 AM, Felix Yang <fei.yang0953@gmail.com> wrote:
> Hi Sterling,
>
>   I found that we can avoid emitting excessive literal loading
> instructions with with section anchors.
>   This patch also passed the cases in testsuite/gcc.c-torture/execute/ dir.
>   Please apply it if OK for trunk.

Hi Felix,

It's been a while since I dealt with it, but literals are produced by
gcc carefully such that they are arranged by pages and such to make
certain that certain linux loader operations are convenient. (Marc, I
believe, knows the details.)

Marc, does this rearrangement of the literals make a difference on that side?

Sterling

>
>
> Index: gcc/ChangeLog
> ===================================================================
> --- gcc/ChangeLog    (revision 206599)
> +++ gcc/ChangeLog    (working copy)
> @@ -1,3 +1,11 @@
> +2014-01-14  Felix Yang  <fei.yang0953@gmail.com>
> +
> +    * common/config/xtensa/xtensa-common.c
> +    (xtensa_option_optimization_table): Enable -fsection-anchors under -O1
> +    or plus, and disable -fcommon by default.
> +    * config/xtensa/xtensa.c (TARGET_MAX_ANCHOR_OFFSET): New.
> +    (TARGET_MIN_ANCHOR_OFFSET): Ditto.
> +
>  2014-01-14  Richard Biener  <rguenther@suse.de>
>
>      PR tree-optimization/58921
> Index: gcc/common/config/xtensa/xtensa-common.c
> ===================================================================
> --- gcc/common/config/xtensa/xtensa-common.c    (revision 206599)
> +++ gcc/common/config/xtensa/xtensa-common.c    (working copy)
> @@ -35,6 +35,13 @@ static const struct default_options xtensa_option_
>         assembler, so GCC cannot do a good job of reordering blocks.
>         Do not enable reordering unless it is explicitly requested.  */
>      { OPT_LEVELS_ALL, OPT_freorder_blocks, NULL, 0 },
> +    /* Enable section anchors under -O1 or plus. This can avoid generating
> +       excessive literal loading instructions to load addresses of globals.  */
> +    { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 2 },
> +    /* Allocate uninitialized global variables in the data section of object
> +       file, rather than generating them as common blocks. This is required
> +       for section anchors to work on uninitialized globals.  */
> +    { OPT_LEVELS_ALL, OPT_fcommon, NULL, 0 },
>      { OPT_LEVELS_NONE, 0, NULL, 0 }
>    };
>
> Index: gcc/config/xtensa/xtensa.c
> ===================================================================
> --- gcc/config/xtensa/xtensa.c    (revision 206599)
> +++ gcc/config/xtensa/xtensa.c    (working copy)
> @@ -290,6 +290,12 @@ static const int reg_nonleaf_alloc_order[FIRST_PSE
>  #undef TARGET_CANNOT_FORCE_CONST_MEM
>  #define TARGET_CANNOT_FORCE_CONST_MEM xtensa_cannot_force_const_mem
>
> +#undef TARGET_MAX_ANCHOR_OFFSET
> +#define TARGET_MAX_ANCHOR_OFFSET 255
> +
> +#undef TARGET_MIN_ANCHOR_OFFSET
> +#define TARGET_MIN_ANCHOR_OFFSET 0
> +
>  #undef TARGET_LEGITIMATE_ADDRESS_P
>  #define TARGET_LEGITIMATE_ADDRESS_P    xtensa_legitimate_address_p
>
>
> Cheers,
> Felix


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]