]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gas: Pass max_bytes to TC_FRAG_INIT
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 10 Feb 2019 12:34:10 +0000 (04:34 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 10 Feb 2019 13:57:53 +0000 (05:57 -0800)
commit292144de4f26e2c6a1fa9d84da2c7758872d4725
tree50c1b9bb12fce40926db1ba04532715f25da139f
parentc83ac8021a7649c148cb344870d8ce711eecc3c6
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
* 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): Track max_chars in max_bytes.
(HANDLE_ALIGN): Replace MAX_MEM_FOR_RS_ALIGN_CODE with
fragP->tc_frag_data.max_bytes.

(cherry picked from commit db22231044df03bbcb987496f3f29f0462b2e9ee)
gas/ChangeLog
gas/config/tc-i386.h