* [Patch, xtensa] Add section anchor support for the xtensa backend.
@ 2014-01-14 15:20 Felix Yang
2014-01-14 16:49 ` Sterling Augustine
0 siblings, 1 reply; 2+ messages in thread
From: Felix Yang @ 2014-01-14 15:20 UTC (permalink / raw)
To: Sterling Augustine, gcc-patches
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.
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
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Patch, xtensa] Add section anchor support for the xtensa backend.
2014-01-14 15:20 [Patch, xtensa] Add section anchor support for the xtensa backend Felix Yang
@ 2014-01-14 16:49 ` Sterling Augustine
0 siblings, 0 replies; 2+ messages in thread
From: Sterling Augustine @ 2014-01-14 16:49 UTC (permalink / raw)
To: Felix Yang; +Cc: gcc-patches
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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-01-14 16:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-14 15:20 [Patch, xtensa] Add section anchor support for the xtensa backend Felix Yang
2014-01-14 16:49 ` Sterling Augustine
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).