aboutsummaryrefslogtreecommitdiff
path: root/gcc/varasm.cc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2024-01-24 18:13:17 +0100
committerJan Hubicka <jh@suse.cz>2024-01-24 18:13:17 +0100
commit0f5a9a00e3ab1fe96142f304cfbcf3f63b15f326 (patch)
treece0fdad9112f365e31899523f2bac814464eb5fa /gcc/varasm.cc
parentdfa17fd3b1a50cab51803e8a63c5c7b7db173523 (diff)
downloadgcc-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.cc5
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);