aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc
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/doc
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/doc')
-rw-r--r--gcc/doc/invoke.texi18
1 files changed, 17 insertions, 1 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 5f904cf..6ec5649 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -547,6 +547,7 @@ Objective-C and Objective-C++ Dialects}.
-falign-jumps[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
-falign-labels[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
-falign-loops[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
+-fmin-function-alignment=[@var{n}]
-fno-allocation-dce -fallow-store-data-races
-fassociative-math -fauto-profile -fauto-profile[=@var{path}]
-fauto-inc-dec -fbranch-probabilities
@@ -14234,6 +14235,9 @@ Align the start of functions to the next power-of-two greater than or
equal to @var{n}, skipping up to @var{m}-1 bytes. This ensures that at
least the first @var{m} bytes of the function can be fetched by the CPU
without crossing an @var{n}-byte alignment boundary.
+This is an optimization of code performance and alignment is ignored for
+functions considered cold. If alignment is required for all functions,
+use @option{-fmin-function-alignment}.
If @var{m} is not specified, it defaults to @var{n}.
@@ -14297,6 +14301,8 @@ Enabled at levels @option{-O2}, @option{-O3}.
Align loops to a power-of-two boundary. If the loops are executed
many times, this makes up for any execution of the dummy padding
instructions.
+This is an optimization of code performance and alignment is ignored for
+loops considered cold.
If @option{-falign-labels} is greater than this value, then its value
is used instead.
@@ -14319,6 +14325,8 @@ Enabled at levels @option{-O2}, @option{-O3}.
Align branch targets to a power-of-two boundary, for branch targets
where the targets can only be reached by jumping. In this case,
no dummy operations need be executed.
+This is an optimization of code performance and alignment is ignored for
+jumps considered cold.
If @option{-falign-labels} is greater than this value, then its value
is used instead.
@@ -14332,6 +14340,14 @@ The maximum allowed @var{n} option value is 65536.
Enabled at levels @option{-O2}, @option{-O3}.
+@opindex fmin-function-alignment=@var{n}
+@item -fmin-function-alignment
+Specify minimal alignment of functions to the next power-of-two greater than or
+equal to @var{n}. Unlike @option{-falign-functions} this alignment is applied
+also to all functions (even those considered cold). The alignment is also not
+affected by @option{-flimit-function-alignment}
+
+
@opindex fno-allocation-dce
@item -fno-allocation-dce
Do not remove unused C++ allocations in dead code elimination.
@@ -14428,7 +14444,7 @@ To use the link-time optimizer, @option{-flto} and optimization
options should be specified at compile time and during the final link.
It is recommended that you compile all the files participating in the
same link with the same options and also specify those options at
-link time.
+link time.
For example:
@smallexample