diff options
author | Jan Hubicka <jh@suse.cz> | 2024-01-24 18:13:17 +0100 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2024-01-24 18:13:17 +0100 |
commit | 0f5a9a00e3ab1fe96142f304cfbcf3f63b15f326 (patch) | |
tree | ce0fdad9112f365e31899523f2bac814464eb5fa /gcc/varasm.cc | |
parent | dfa17fd3b1a50cab51803e8a63c5c7b7db173523 (diff) | |
download | gcc-0f5a9a00e3ab1fe96142f304cfbcf3f63b15f326.zip gcc-0f5a9a00e3ab1fe96142f304cfbcf3f63b15f326.tar.gz gcc-0f5a9a00e3ab1fe96142f304cfbcf3f63b15f326.tar.bz2 |
Add -fmin-function-alignmnet
-falign-functions is ignored in cold code, since it is an optimization intended to
improve instruction prefetch. In some case it is necessary to force alignment for
all functions, so this patch adds -fmin-function-alignment for this purpose.
gcc/ChangeLog:
PR middle-end/88345
* common.opt: (flimit-function-alignment): Reorder alphabeticaly
(fmin-function-alignment): New parameter.
* doc/invoke.texi: (-fmin-function-alignment): Document.
(-falign-functions,-falign-loops,-falign-labels): Mention that
aglinments are ignored in cold code.
* varasm.cc (assemble_start_function): Handle min-function-alignment.
Diffstat (limited to 'gcc/varasm.cc')
-rw-r--r-- | gcc/varasm.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/varasm.cc b/gcc/varasm.cc index d2c879b..fa17eff 100644 --- a/gcc/varasm.cc +++ b/gcc/varasm.cc @@ -1939,6 +1939,11 @@ assemble_start_function (tree decl, const char *fnname) /* Tell assembler to move to target machine's alignment for functions. */ align = floor_log2 (align / BITS_PER_UNIT); + /* Handle forced alignment. This really ought to apply to all functions, + since it is used by patchable entries. */ + if (flag_min_function_alignment) + align = MAX (align, floor_log2 (flag_min_function_alignment)); + if (align > 0) { ASM_OUTPUT_ALIGN (asm_out_file, align); |