diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2019-02-10 04:34:10 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2019-02-10 04:34:22 -0800 |
commit | db22231044df03bbcb987496f3f29f0462b2e9ee (patch) | |
tree | 192c026a57355102d8022e6600d95d916e9ff375 /gas/config/tc-arm.h | |
parent | ab759ca8db37ffd3e32df5226e0b4ea16a81c849 (diff) | |
download | gdb-db22231044df03bbcb987496f3f29f0462b2e9ee.zip gdb-db22231044df03bbcb987496f3f29f0462b2e9ee.tar.gz gdb-db22231044df03bbcb987496f3f29f0462b2e9ee.tar.bz2 |
gas: Pass max_bytes to TC_FRAG_INIT
ommit 3ae729d5a4f63740ed9a778960b17c2912b0bbdd
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Wed Mar 7 04:18:45 2018 -0800
x86: Rewrite NOP generation for fill and alignment
increased MAX_MEM_FOR_RS_ALIGN_CODE to 4095 which resulted in increase
of assembler time and memory usage by 5 times for inputs with many
.p2align directives, which is typical for LTO output. This patch passes
max_bytes to TC_FRAG_INIT so that MAX_MEM_FOR_RS_ALIGN_CODE can be set
as needed and tracked by backend it so that HANDLE_ALIGN can check the
maximum alignment for each rs_align_code frag. Wall time to assemble
the same cc1plus.s:
before:
423.78user 0.89system 7:05.71elapsed 99%CPU
after:
102.35user 0.27system 1:42.89elapsed 99%CPU
PR gas/24165
* frags.c (frag_var_init): Pass max_chars to TC_FRAG_INIT as
max_bytes.
* config/tc-aarch64.h (TC_FRAG_INIT): Add and pass max_bytes to
aarch64_init_frag.
* /config/tc-arm.h (TC_FRAG_INIT): And and pass max_bytes to
arm_init_frag.
* config/tc-avr.h (TC_FRAG_INIT): And and ignore max_bytes.
* config/tc-ia64.h (TC_FRAG_INIT): Likewise.
* config/tc-mmix.h (TC_FRAG_INIT): Likewise.
* config/tc-nds32.h (TC_FRAG_INIT): Likewise.
* config/tc-ns32k.h (TC_FRAG_INIT): Likewise.
* config/tc-rl78.h (TC_FRAG_INIT): Likewise.
* config/tc-rx.h (TC_FRAG_INIT): Likewise.
* config/tc-score.h (TC_FRAG_INIT): Likewise.
* config/tc-tic54x.h (TC_FRAG_INIT): Likewise.
* config/tc-tic6x.h (TC_FRAG_INIT): Likewise.
* config/tc-xtensa.h (TC_FRAG_INIT): Likewise.
* config/tc-i386.h (MAX_MEM_FOR_RS_ALIGN_CODE): Set to
(alignment ? ((1 << alignment) - 1) : 1)
(i386_tc_frag_data): Add max_bytes.
(TC_FRAG_INIT): Add and track max_bytes.
(HANDLE_ALIGN): Replace MAX_MEM_FOR_RS_ALIGN_CODE with
fragP->tc_frag_data.max_bytes.
* doc/internals.texi: Update TC_FRAG_TYPE with max_bytes.
Diffstat (limited to 'gas/config/tc-arm.h')
-rw-r--r-- | gas/config/tc-arm.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/gas/config/tc-arm.h b/gas/config/tc-arm.h index f095d0a..0d5e79c 100644 --- a/gas/config/tc-arm.h +++ b/gas/config/tc-arm.h @@ -229,8 +229,7 @@ arm_min (int am_p1, int am_p2) } #define TC_FRAG_TYPE struct arm_frag_type -/* NOTE: max_chars is a local variable from frag_var / frag_variant. */ -#define TC_FRAG_INIT(fragp) arm_init_frag (fragp, max_chars) +#define TC_FRAG_INIT(fragp, max_bytes) arm_init_frag (fragp, max_bytes) #define TC_ALIGN_ZERO_IS_DEFAULT 1 #define HANDLE_ALIGN(fragp) arm_handle_align (fragp) /* PR gas/19276: COFF/PE segment alignment is already handled in coff_frob_section(). */ |