We shouldn't point users at specific parameters that control GCC
behavior since those are explicitly internal GCC interfaces subject to
incompatible changes or removal. This patch removes all such
references in the GCC user manual, either by replacing them with more
user-centric language, vague references to parameters generally, or
just removing the text as being unhelpful.
gcc/ChangeLog
PR target/123245
PR translation/89915
* invoke.texi (Warning Options): Remove discussion of parameters
from -Winterference-size documentation.
(Static Analyzer Options): Ditto for -Wanalyzer-symbol-too-complex,
the list of things the analyzer has specific knowledge of, and
-fanalyzer-call-summaries.
(Optimize Options): Ditto for -finline-limit and fipa-cp-clone.
(Instrumentation Options): Likewise for -fsanitize=kernel-hwaddress
and -fharden-control-flow-redundancy.
(C++ Compiled Module Interface): Likewise for discussion of limits
on number of open files.
---
gcc/doc/invoke.texi | 71 +++++++++++++++------------------------------
1 file changed, 24 insertions(+), 47 deletions(-)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 8da02a6696d..e18df364eee 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -11246,11 +11246,12 @@ warnings produced by @option{-Winline} to appear or
disappear.
@opindex Winterference-size
@opindex Wno-interference-size
@item -Winterference-size
-Warn about use of C++17 @code{std::hardware_destructive_interference_size}
-without specifying its value with @option{--param
destructive-interference-size}.
-Also warn about questionable values for that option.
+@item -Wno-interference-size
+Warn about questionable uses of the C++17 @code{constexpr} variables
+@code{std::hardware_destructive_interference_size} and
+@code{std::hardware_constructive_interference_size}.
-This variable is intended to be used for controlling class layout, to
+These variables are intended to be used for controlling class layout, to
avoid false sharing in concurrent code:
@smallexample
@@ -11266,8 +11267,7 @@ Here @samp{one} and @samp{two} are intended to be far
enough apart
that stores to one won't require accesses to the other to reload the
cache line.
-By default, @option{--param destructive-interference-size} and
-@option{--param constructive-interference-size} are set based on the
+By default, these variables are given values based on the
current @option{-mtune} option, typically to the L1 cache line size
for the particular target CPU, sometimes to a range if tuning for a
generic target. So all translation units that depend on ABI
@@ -11276,10 +11276,10 @@ the same @option{-mtune} (or @option{-mcpu}).
If ABI stability is important, such as if the use is in a header for a
library, you should probably not use the hardware interference size
-variables at all. Alternatively, you can force a particular value
-with @option{--param}.
+variables at all.
-If you are confident that your use of the variable does not affect ABI
+These warnings are enabled by default.
+If you are confident that your use of these variables does not affect ABI
outside a single build of your project, you can turn off the warning
with @option{-Wno-interference-size}.
@@ -11615,8 +11615,7 @@ to attempt to track the state of memory, but these can
be defeated by
sufficiently complicated code.
By default, the analysis silently stops tracking values of expressions
-if they exceed the threshold defined by
-@option{--param analyzer-max-svalue-depth=@var{value}}, and falls back
+if they exceed an internal limit, and falls back
to an imprecise representation for such expressions.
The @option{-Wanalyzer-symbol-too-complex} option warns if this occurs.
@@ -12490,14 +12489,9 @@ and of the following functions:
In addition, various functions with an @code{__analyzer_} prefix have
special meaning to the analyzer, described in the GCC Internals manual.
-
-Pertinent parameters for controlling the exploration are:
-@itemize @bullet
-@item @option{--param analyzer-bb-explosion-factor=@var{value}}
-@item @option{--param analyzer-max-enodes-per-program-point=@var{value}}
-@item @option{--param analyzer-max-recursion-depth=@var{value}}
-@item @option{--param analyzer-min-snodes-for-call-summary=@var{value}}
-@end itemize
+Various internal parameters, settable via @option{--param}, are used
+to control the exploration; these are also documented in the GCC Internals
+manual.
The following options control the analyzer.
@@ -12526,8 +12520,7 @@ rather than exploring all paths through the function
from callsite to each
possible return.
If enabled, call summaries are only used for functions with more than one
-call site, and that are sufficiently complicated (as per
-@option{--param analyzer-min-snodes-for-call-summary=@var{value}}).
+call site, and that are sufficiently complicated.
@opindex fanalyzer-checker
@item -fanalyzer-checker=@var{name}
@@ -13790,20 +13783,9 @@ By default, GCC limits the size of functions that can
be inlined. This flag
allows coarse control of this limit. @var{n} is the size of functions that
can be inlined in number of pseudo instructions.
-Inlining is actually controlled by a number of parameters, which may be
-specified individually by using @option{--param @var{name}=@var{value}}.
-The @option{-finline-limit=@var{n}} option sets some of these parameters
-as follows:
-
-@table @gcctabopt
-@item max-inline-insns-single
-is set to @var{n}/2.
-@item max-inline-insns-auto
-is set to @var{n}/2.
-@end table
-
-See below for a documentation of the individual
-parameters controlling inlining and for the defaults of these parameters.
+Inlining is actually controlled by a number of internal parameters, which
+are documented in the GCC Internals manual and should not normally be set
+directly.
@emph{Note:} there may be no value to @option{-finline-limit} that results
in default behavior.
@@ -14733,8 +14715,7 @@ Perform function cloning to make interprocedural
constant propagation stronger.
When enabled, interprocedural constant propagation performs function cloning
when externally visible function can be called with constant arguments.
Because this optimization can create multiple copies of functions,
-it may significantly increase code size
-(see @option{--param ipa-cp-unit-growth=@var{value}}).
+it may significantly increase code size.
This flag is enabled by default at @option{-O3}.
It is also enabled by @option{-fprofile-use} and @option{-fauto-profile}.
@@ -17348,12 +17329,10 @@ instrumentation differences necessary for compiling
the Linux kernel.
These differences are to avoid hwasan library initialization calls and to
account for the stack pointer having a different value in its top byte.
-@emph{Note:} This option has different defaults to the
@option{-fsanitize=hwaddress}.
-Instrumenting the stack and alloca calls are not on by default but are still
-possible by specifying the command-line options
-@option{--param hwasan-instrument-stack=1} and
-@option{--param hwasan-instrument-allocas=1} respectively. Using a random frame
-tag is not implemented for kernel instrumentation.
+@emph{Note:} This option has different defaults than
+@option{-fsanitize=hwaddress}.
+Instrumenting the stack and alloca calls are not on by default.
+Using a random frame tag is not implemented for kernel instrumentation.
@opindex fsanitize=memtag-stack
@item -fsanitize=memtag-stack
@@ -17817,9 +17796,7 @@ Verification takes place before returns, before
mandatory tail calls
(see below) and, optionally, before escaping exceptions with
@option{-fhardcfr-check-exceptions}, before returning calls with
@option{-fhardcfr-check-returning-calls}, and before noreturn calls with
-@option{-fhardcfr-check-noreturn-calls}). Tuning options
-@option{--param hardcfr-max-blocks} and @option{--param
-hardcfr-max-inline-blocks} are available.
+@option{-fhardcfr-check-noreturn-calls}).
Tail call optimization takes place too late to affect control flow
redundancy, but calls annotated as mandatory tail calls by language
@@ -38713,7 +38690,7 @@ functionality. Generally blocks are read when name
lookup or template
instantiation occurs. To inhibit this, the @option{-fno-module-lazy}
option may be used.
-The @option{--param lazy-modules=@var{n}} parameter controls the limit
+GCC has an internal parameter that controls the limit
on the number of concurrently open module files during lazy loading.
Should more modules be imported, an LRU algorithm is used to determine
which files to close---until that file is needed again. This limit
--
2.39.5