diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2020-10-28 18:41:24 +0100 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2020-10-28 18:41:24 +0100 |
commit | bf6dad60c338a42a7fb85f7b2a5870c0fb2e20f8 (patch) | |
tree | e513781ef717465e7db0358e987a5a6cbef5665c /gcc/doc | |
parent | 0c261d5b5c931d9e9214d06531bdc7e9e16aeaab (diff) | |
parent | 47d13acbda9a5d8eb57ff169ba74857cd54108e4 (diff) | |
download | gcc-bf6dad60c338a42a7fb85f7b2a5870c0fb2e20f8.zip gcc-bf6dad60c338a42a7fb85f7b2a5870c0fb2e20f8.tar.gz gcc-bf6dad60c338a42a7fb85f7b2a5870c0fb2e20f8.tar.bz2 |
Merge branch 'master' into devel/coarray_native.
Merge into devel/coarray_native to prepare for later merging of
coarray_native with master.
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/analyzer.texi | 6 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 76 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 263 | ||||
-rw-r--r-- | gcc/doc/sourcebuild.texi | 12 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 7 |
5 files changed, 323 insertions, 41 deletions
diff --git a/gcc/doc/analyzer.texi b/gcc/doc/analyzer.texi index 92c12e1..96fe9bb 100644 --- a/gcc/doc/analyzer.texi +++ b/gcc/doc/analyzer.texi @@ -329,7 +329,8 @@ we only emit the simplest path (which could be intraprocedural, if it can be reproduced without a caller). We apply a check that each duplicate warning's shortest path is feasible, rejecting any warnings for which the shortest path is infeasible (which could lead to -false negatives). +false negatives). This check can be suppressed (for debugging purposes) +using @option{-fno-analyzer-feasibility}. We use the shortest feasible @code{exploded_path} through the @code{exploded_graph} (a list of @code{exploded_edge *}) to build a @@ -488,6 +489,9 @@ truthfulness of the argument. This is useful for writing DejaGnu tests. @subsection Other Debugging Techniques +The option @option{-fdump-analyzer-json} will dump both the supergraph +and the exploded graph in compressed JSON form. + One approach when tracking down where a particular bogus state is introduced into the @code{exploded_graph} is to add custom code to @code{program_state::validate}. diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 5571c4f..5be1cbe 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -3680,6 +3680,10 @@ This attribute adds stack protection code to the function if flags @option{-fstack-protector}, @option{-fstack-protector-strong} or @option{-fstack-protector-explicit} are set. +@item no_stack_protector +@cindex @code{no_stack_protector} function attribute +This attribute prevents stack protection code for the function. + @item target (@var{string}, @dots{}) @cindex @code{target} function attribute Multiple target back ends implement the @code{target} attribute @@ -6623,6 +6627,31 @@ Enable/disable the generation of the XSAVEOPT instructions. @cindex @code{target("xsaves")} function attribute, x86 Enable/disable the generation of the XSAVES instructions. +@item amx-tile +@itemx no-amx-tile +@cindex @code{target("amx-tile")} function attribute, x86 +Enable/disable the generation of the AMX-TILE instructions. + +@item amx-int8 +@itemx no-amx-int8 +@cindex @code{target("amx-int8")} function attribute, x86 +Enable/disable the generation of the AMX-INT8 instructions. + +@item amx-bf16 +@itemx no-amx-bf16 +@cindex @code{target("amx-bf16")} function attribute, x86 +Enable/disable the generation of the AMX-BF16 instructions. + +@item uintr +@itemx no-uintr +@cindex @code{target("uintr")} function attribute, x86 +Enable/disable the generation of the UINTR instructions. + +@item hreset +@itemx no-hreset +@cindex @code{target("hreset")} function attribute, x86 +Enable/disable the generation of the HRESET instruction. + @item cld @itemx no-cld @cindex @code{target("cld")} function attribute, x86 @@ -12760,7 +12789,7 @@ Outside strict ISO C mode (@option{-ansi}, @option{-std=c90}, @code{j1f}, @code{j1l}, @code{j1}, @code{jnf}, @code{jnl}, @code{jn}, @code{lgammaf_r}, @code{lgammal_r}, @code{lgamma_r}, @code{mempcpy}, @code{pow10f}, @code{pow10l}, @code{pow10}, @code{printf_unlocked}, -@code{rindex}, @code{roundeven}, @code{roundevenf}, @code{roudnevenl}, +@code{rindex}, @code{roundeven}, @code{roundevenf}, @code{roundevenl}, @code{scalbf}, @code{scalbl}, @code{scalb}, @code{signbit}, @code{signbitf}, @code{signbitl}, @code{signbitd32}, @code{signbitd64}, @code{signbitd128}, @code{significandf}, @@ -17635,6 +17664,37 @@ Perform a 64-bit parallel bits extract operation, as if implemented by the @code{pextd} instruction. @findex __builtin_pextd +@smallexample +@exdent vector signed __int128 vsx_xl_sext (signed long long, signed char *); +@exdent vector signed __int128 vsx_xl_sext (signed long long, signed short *); +@exdent vector signed __int128 vsx_xl_sext (signed long long, signed int *); +@exdent vector signed __int128 vsx_xl_sext (signed long long, signed long long *); +@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned char *); +@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned short *); +@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned int *); +@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned long long *); +@end smallexample + +Load (and sign extend) to an __int128 vector, as if implemented by the ISA 3.1 +@code{lxvrbx} @code{lxvrhx} @code{lxvrwx} @code{lxvrdx} instructions. +@findex vsx_xl_sext +@findex vsx_xl_zext + +@smallexample +@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed char *); +@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed short *); +@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed int *); +@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed long long *); +@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned char *); +@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned short *); +@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned int *); +@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned long long *); +@end smallexample + +Truncate and store the rightmost element of a vector, as if implemented by the +ISA 3.1 @code{stxvrbx} @code{stxvrhx} @code{stxvrwx} @code{stxvrdx} instructions. +@findex vec_xst_trunc + @node PowerPC AltiVec/VSX Built-in Functions @subsection PowerPC AltiVec/VSX Built-in Functions @@ -20961,9 +21021,9 @@ given by the third argument, using natural element order in the second argument. The rest of the second argument is unchanged. If the byte index is greater than 14 for halfwords, greater than 12 for words, or greater than 8 for doublewords the result is undefined. For little-endian, -the generated code will be semantically equivalent to @code{vins[bhw]rx} +the generated code will be semantically equivalent to @code{vins[bhwd]rx} instructions. Similarly for big-endian it will be semantically equivalent -to @code{vins[bhw]lx}. Note that some fairly anomalous results can be +to @code{vins[bhwd]lx}. Note that some fairly anomalous results can be generated if the byte index is not aligned on an element boundary for the type of element being inserted. @findex vec_insertl @@ -20996,8 +21056,8 @@ for halfwords, 12 for words, or 8 for doublewords, the intrinsic will be rejected. Note that the underlying hardware instruction uses the same register for the second argument and the result. For little-endian, the code generation will be semantically equivalent to -@code{vins[bhw]lx}, while for big-endian it will be semantically equivalent to -@code{vins[bhw]rx}. +@code{vins[bhwd]lx}, while for big-endian it will be semantically equivalent to +@code{vins[bhwd]rx}. Note that some fairly anomalous results can be generated if the byte index is not aligned on an element boundary for the sort of element being inserted. @findex vec_inserth @@ -21584,10 +21644,10 @@ void amo_stdat_smin (int64_t *, int64_t); ISA 3.1 of the PowerPC added new Matrix-Multiply Assist (MMA) instructions. GCC provides support for these instructions through the following built-in functions which are enabled with the @code{-mmma} option. The vec_t type -below is defined to be a normal vector unsigned char type. The uint2, uint4 +below is defined to be a normal vector unsigned char type. The uint2, uint4 and uint8 parameters are 2-bit, 4-bit and 8-bit unsigned integer constants -respectively. The compiler will verify that they are constants and that -their values are within range. +respectively. The compiler will verify that they are constants and that +their values are within range. The built-in functions supported are: diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 8be2b4f..edea7ee 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -236,7 +236,8 @@ in the following sections. -Wabi-tag -Wcatch-value -Wcatch-value=@var{n} @gol -Wno-class-conversion -Wclass-memaccess @gol -Wcomma-subscript -Wconditionally-supported @gol --Wno-conversion-null -Wctor-dtor-privacy -Wno-delete-incomplete @gol +-Wno-conversion-null -Wctad-maybe-unsupported @gol +-Wctor-dtor-privacy -Wno-delete-incomplete @gol -Wdelete-non-virtual-dtor -Wdeprecated-copy -Wdeprecated-copy-dtor @gol -Weffc++ -Wextra-semi -Wno-inaccessible-base @gol -Wno-inherited-variadic-ctor -Wno-init-list-lifetime @gol @@ -244,7 +245,7 @@ in the following sections. -Wmultiple-inheritance -Wnamespaces -Wnarrowing @gol -Wnoexcept -Wnoexcept-type -Wnon-virtual-dtor @gol -Wpessimizing-move -Wno-placement-new -Wplacement-new=@var{n} @gol --Wredundant-move -Wredundant-tags @gol +-Wrange-loop-construct -Wredundant-move -Wredundant-tags @gol -Wreorder -Wregister @gol -Wstrict-null-sentinel -Wno-subobject-linkage -Wtemplates @gol -Wno-non-template-friend -Wold-style-cast @gol @@ -362,6 +363,7 @@ Objective-C and Objective-C++ Dialects}. -Wno-shift-overflow -Wshift-overflow=@var{n} @gol -Wsign-compare -Wsign-conversion @gol -Wno-sizeof-array-argument @gol +-Wsizeof-array-div @gol -Wsizeof-pointer-div -Wsizeof-pointer-memaccess @gol -Wstack-protector -Wstack-usage=@var{byte-size} -Wstrict-aliasing @gol -Wstrict-aliasing=n -Wstrict-overflow -Wstrict-overflow=@var{n} @gol @@ -392,6 +394,7 @@ Objective-C and Objective-C++ Dialects}. -fanalyzer @gol -fanalyzer-call-summaries @gol -fanalyzer-checker=@var{name} @gol +-fno-analyzer-feasibility @gol -fanalyzer-fine-grained @gol -fanalyzer-state-merge @gol -fanalyzer-state-purge @gol @@ -406,6 +409,7 @@ Objective-C and Objective-C++ Dialects}. -fdump-analyzer-exploded-nodes @gol -fdump-analyzer-exploded-nodes-2 @gol -fdump-analyzer-exploded-nodes-3 @gol +-fdump-analyzer-json @gol -fdump-analyzer-state-purge @gol -fdump-analyzer-supergraph @gol -Wno-analyzer-double-fclose @gol @@ -426,6 +430,8 @@ Objective-C and Objective-C++ Dialects}. -Wno-analyzer-use-after-free @gol -Wno-analyzer-use-of-pointer-in-stale-stack-frame @gol -Wno-analyzer-use-of-uninitialized-value @gol +-Wno-analyzer-write-to-const @gol +-Wno-analyzer-write-to-string-literal @gol } @item C and Objective-C-only Warning Options @@ -483,7 +489,7 @@ Objective-C and Objective-C++ Dialects}. -fgcse-sm -fhoist-adjacent-loads -fif-conversion @gol -fif-conversion2 -findirect-inlining @gol -finline-functions -finline-functions-called-once -finline-limit=@var{n} @gol --finline-small-functions -fipa-cp -fipa-cp-clone @gol +-finline-small-functions -fipa-modref -fipa-cp -fipa-cp-clone @gol -fipa-bit-cp -fipa-vrp -fipa-pta -fipa-profile -fipa-pure-const @gol -fipa-reference -fipa-reference-addressable @gol -fipa-stack-alignment -fipa-icf -fira-algorithm=@var{algorithm} @gol @@ -1104,7 +1110,7 @@ Objective-C and Objective-C++ Dialects}. -march=@var{arch} -mbmx -mno-bmx -mcdx -mno-cdx} @emph{Nvidia PTX Options} -@gccoptlist{-m32 -m64 -mmainkernel -moptimize} +@gccoptlist{-m64 -mmainkernel -moptimize} @emph{OpenRISC Options} @gccoptlist{-mboard=@var{name} -mnewlib -mhard-mul -mhard-div @gol @@ -1359,6 +1365,7 @@ See RS/6000 and PowerPC Options. -mvpclmulqdq -mavx512bitalg -mmovdiri -mmovdir64b -mavx512vpopcntdq @gol -mavx5124fmaps -mavx512vnni -mavx5124vnniw -mprfchw -mrdpid @gol -mrdseed -msgx -mavx512vp2intersect -mserialize -mtsxldtrk@gol +-mamx-tile -mamx-int8 -mamx-bf16 -muintr -mhreset@gol -mcldemote -mms-bitfields -mno-align-stringops -minline-all-stringops @gol -minline-stringops-dynamically -mstringop-strategy=@var{alg} @gol -mmemcpy-strategy=@var{strategy} -mmemset-strategy=@var{strategy} @gol @@ -3304,6 +3311,25 @@ void f(int *a, int b, int c) @{ Enabled by default with @option{-std=c++20}. +@item -Wctad-maybe-unsupported @r{(C++ and Objective-C++ only)} +@opindex Wctad-maybe-unsupported +@opindex Wno-ctad-maybe-unsupported +Warn when performing class template argument deduction (CTAD) on a type with +no explicitly written deduction guides. This warning will point out cases +where CTAD succeeded only because the compiler synthesized the implicit +deduction guides, which might not be what the programmer intended. Certain +style guides allow CTAD only on types that specifically "opt-in"; i.e., on +types that are designed to support CTAD. This warning can be suppressed with +the following pattern: + +@smallexample +struct allow_ctad_t; // any name works +template <typename T> struct S @{ + S(T) @{ @} +@}; +S(allow_ctad_t) -> S<void>; // guide with incomplete parameter type will never be considered +@end smallexample + @item -Wctor-dtor-privacy @r{(C++ and Objective-C++ only)} @opindex Wctor-dtor-privacy @opindex Wno-ctor-dtor-privacy @@ -3582,6 +3608,24 @@ treats the return value as if it were designated by an rvalue. This warning is enabled by @option{-Wextra}. +@item -Wrange-loop-construct @r{(C++ and Objective-C++ only)} +@opindex Wrange-loop-construct +@opindex Wno-range-loop-construct +This warning warns when a C++ range-based for-loop is creating an unnecessary +copy. This can happen when the range declaration is not a reference, but +probably should be. For example: + +@smallexample +struct S @{ char arr[128]; @}; +void fn () @{ + S arr[5]; + for (const auto x : arr) @{ @dots{} @} +@} +@end smallexample + +It does not warn when the type being copied is a trivially-copyable type whose +size is less than 64 bytes. This warning is enabled by @option{-Wall}. + @item -Wredundant-tags @r{(C++ and Objective-C++ only)} @opindex Wredundant-tags @opindex Wno-redundant-tags @@ -4304,7 +4348,8 @@ options: @gccoptlist{-fno-diagnostics-show-caret @gol -fno-diagnostics-show-line-numbers @gol -fdiagnostics-color=never @gol --fdiagnostics-urls=never} +-fdiagnostics-urls=never @gol +-fdiagnostics-path-format=separate-events} In the future, if GCC changes the default appearance of its diagnostics, the corresponding option to disable the new behavior will be added to this list. @@ -5251,11 +5296,13 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}. -Wparentheses @gol -Wpessimizing-move @r{(only for C++)} @gol -Wpointer-sign @gol +-Wrange-loop-construct @r{(only for C++)} @gol -Wreorder @gol -Wrestrict @gol -Wreturn-type @gol -Wsequence-point @gol -Wsign-compare @r{(only in C++)} @gol +-Wsizeof-array-div @gol -Wsizeof-pointer-div @gol -Wsizeof-pointer-memaccess @gol -Wstrict-aliasing @gol @@ -8010,6 +8057,23 @@ real to lower precision real values. This option is also enabled by @opindex Wscalar-storage-order Do not warn on suspicious constructs involving reverse scalar storage order. +@item -Wsizeof-array-div +@opindex Wsizeof-array-div +@opindex Wno-sizeof-array-div +Warn about divisions of two sizeof operators when the first one is applied +to an array and the divisor does not equal the size of the array element. +In such a case, the computation will not yield the number of elements in the +array, which is likely what the user intended. This warning warns e.g. about +@smallexample +int fn () +@{ + int arr[10]; + return sizeof (arr) / sizeof (short); +@} +@end smallexample + +This warning is enabled by @option{-Wall}. + @item -Wsizeof-pointer-div @opindex Wsizeof-pointer-div @opindex Wno-sizeof-pointer-div @@ -8758,6 +8822,8 @@ Enabling this option effectively enables the following warnings: -Wanalyzer-unsafe-call-within-signal-handler @gol -Wanalyzer-use-after-free @gol -Wanalyzer-use-of-pointer-in-stale-stack-frame @gol +-Wanalyzer-write-to-const @gol +-Wanalyzer-write-to-string-literal @gol } This option is only available if GCC was configured with analyzer @@ -8940,6 +9006,30 @@ to disable it. This diagnostic warns for paths through the code in which a pointer is dereferenced that points to a variable in a stale stack frame. +@item -Wno-analyzer-write-to-const +@opindex Wanalyzer-write-to-const +@opindex Wno-analyzer-write-to-const +This warning requires @option{-fanalyzer}, which enables it; use +@option{-Wno-analyzer-write-to-const} +to disable it. + +This diagnostic warns for paths through the code in which the analyzer +detects an attempt to write through a pointer to a @code{const} object. +However, the analyzer does not prioritize detection of such paths, so +false negatives are more likely relative to other warnings. + +@item -Wno-analyzer-write-to-string-literal +@opindex Wanalyzer-write-to-string-literal +@opindex Wno-analyzer-write-to-string-literal +This warning requires @option{-fanalyzer}, which enables it; use +@option{-Wno-analyzer-write-to-string-literal} +to disable it. + +This diagnostic warns for paths through the code in which the analyzer +detects an attempt to write through a pointer to a string literal. +However, the analyzer does not prioritize detection of such paths, so +false negatives are more likely relative to other warnings. + @end table Pertinent parameters for controlling the exploration are: @@ -8972,6 +9062,17 @@ such as the @code{taint} checker that implements @option{-Wanalyzer-tainted-array-index}, and this option is required to enable them. +@item -fno-analyzer-feasibility +@opindex fanalyzer-feasibility +@opindex fno-analyzer-feasibility +This option is intended for analyzer developers. + +By default the analyzer verifies that there is a feasible control flow path +for each diagnostic it emits: that the conditions that hold are not mutually +exclusive. Diagnostics for which no feasible path can be found are rejected. +This filtering can be suppressed with @option{-fno-analyzer-feasibility}, for +debugging issues in this code. + @item -fanalyzer-fine-grained @opindex fanalyzer-fine-grained @opindex fno-analyzer-fine-grained @@ -9103,6 +9204,12 @@ Dump a textual representation of the ``exploded graph'' to one dump file per node, to @file{@var{file}.eg-@var{id}.txt}. This is typically a large number of dump files. +@item -fdump-analyzer-json +@opindex fdump-analyzer-json +Dump a compressed JSON representation of analyzer internals to +@file{@var{file}.analyzer.json.gz}. The precise format is subject +to change. + @item -fdump-analyzer-state-purge @opindex fdump-analyzer-state-purge As per @option{-fdump-analyzer-supergraph}, dump a representation of the @@ -9649,6 +9756,7 @@ compilation time. -fif-conversion @gol -fif-conversion2 @gol -finline-functions-called-once @gol +-fipa-modref @gol -fipa-profile @gol -fipa-pure-const @gol -fipa-reference @gol @@ -10744,11 +10852,18 @@ default at any optimization level. @opindex fipa-profile Perform interprocedural profile propagation. The functions called only from cold functions are marked as cold. Also functions executed once (such as -@code{cold}, @code{noreturn}, static constructors or destructors) are identified. Cold -functions and loop less parts of functions executed once are then optimized for -size. +@code{cold}, @code{noreturn}, static constructors or destructors) are +identified. Cold functions and loop less parts of functions executed once are +then optimized for size. Enabled by default at @option{-O} and higher. +@item -fipa-modref +@opindex fipa-modref +Perform interprocedural mod/ref analysis. This optimization analyzes the side +effects of functions (memory locations that are modified or referenced) and +enables better optimization across the function call boundary. This flag is +enabled by default at @option{-O} and higher. + @item -fipa-cp @opindex fipa-cp Perform interprocedural constant propagation. @@ -10832,7 +10947,7 @@ callers are impacted, therefore need to be patched as well. @gccoptlist{-fwhole-program -fipa-pta -fipa-reference -fipa-ra @gol -fipa-icf -fipa-icf-functions -fipa-icf-variables @gol -fipa-bit-cp -fipa-vrp -fipa-pure-const -fipa-reference-addressable @gol --fipa-stack-alignment} +-fipa-stack-alignment -fipa-modref} @item inline-only-static @@ -11554,7 +11669,18 @@ Do not remove unused C++ allocations in dead code elimination. @item -fallow-store-data-races @opindex fallow-store-data-races -Allow the compiler to introduce new data races on stores. +Allow the compiler to perform optimizations that may introduce new data races +on stores, without proving that the variable cannot be concurrently accessed +by other threads. Does not affect optimization of local data. It is safe to +use this option if it is known that global data will not be accessed by +multiple threads. + +Examples of optimizations enabled by @option{-fallow-store-data-races} include +hoisting or if-conversions that may cause a value that was already in memory +to be re-written with that same value. Such re-writing is safe in a single +threaded context but may be unsafe in a multi-threaded context. Note that on +some processors, if-conversions may be required in order to enable +vectorization. Enabled at level @option{-Ofast}. @@ -11667,7 +11793,7 @@ to more aggressive optimization decisions. When a file is compiled with @option{-flto} without @option{-fuse-linker-plugin}, the generated object file is larger than a regular object file because it contains GIMPLE bytecodes and the usual -final code (see @option{-ffat-lto-objects}. This means that +final code (see @option{-ffat-lto-objects}). This means that object files with LTO information can be linked as normal object files; if @option{-fno-lto} is passed to the linker, no interprocedural optimizations are applied. Note that when @@ -12725,6 +12851,18 @@ Deeper chains are still handled by late inlining. Probability (in percent) that C++ inline function with comdat visibility are shared across multiple compilation units. +@item ipa-modref-max-bases +@item ipa-modref-max-refs +@item ipa-modref-max-accesses +Specifies the maximal number of base pointers, referneces and accesses stored +for a single function by mod/ref analysis. + +@item ipa-modref-max-tests +Specifies the maxmal number of tests alias oracle can perform to disambiguate +memory locations using the mod/ref information. This parameter ought to be +bigger than @option{--param ipa-modref-max-bases} and @option{--param +ipa-modref-max-refs}. + @item profile-func-internal-id A parameter to control whether to use function internal id in profile database lookup. If the value is 0, the compiler uses an id that @@ -13337,6 +13475,9 @@ loop in the loop nest by a given number of iterations. The strip length can be changed using the @option{loop-block-tile-size} parameter. +@item ipa-jump-function-lookups +Specifies number of statements visited during jump function offset discovery. + @item ipa-cp-value-list-size IPA-CP attempts to track all possible values and types passed to a function's parameter in order to propagate them and perform devirtualization. @@ -13374,6 +13515,10 @@ of iterations of a loop known, it adds a bonus of @option{ipa-cp-loop-hint-bonus} to the profitability score of the candidate. +@item ipa-max-loop-predicates +The maximum number of different predicates IPA will use to describe when +loops in a function have known properties. + @item ipa-max-aa-steps During its analysis of function bodies, IPA-CP employs alias analysis in order to track values pointed to by function parameters. In order @@ -17473,8 +17618,10 @@ performance of the code. Permissible values for this option are: @samp{cortex-a57}, @samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-a75}, @samp{cortex-a76}, @samp{cortex-a76ae}, @samp{cortex-a77}, @samp{cortex-a65}, @samp{cortex-a65ae}, @samp{cortex-a34}, +@samp{cortex-a78}, @samp{cortex-a78ae}, @samp{ares}, @samp{exynos-m1}, @samp{emag}, @samp{falkor}, -@samp{neoverse-e1},@samp{neoverse-n1},@samp{qdf24xx}, @samp{saphira}, +@samp{neoverse-e1}, @samp{neoverse-n1}, @samp{neoverse-n2}, +@samp{neoverse-v1}, @samp{qdf24xx}, @samp{saphira}, @samp{phecda}, @samp{xgene1}, @samp{vulcan}, @samp{octeontx}, @samp{octeontx81}, @samp{octeontx83}, @samp{octeontx2}, @samp{octeontx2t98}, @samp{octeontx2t96} @@ -17487,7 +17634,7 @@ performance of the code. Permissible values for this option are: @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}, @samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53}, @samp{cortex-a75.cortex-a55}, @samp{cortex-a76.cortex-a55}, -@samp{cortex-r82}, @samp{native}. +@samp{cortex-r82}, @samp{cortex-x1}, @samp{native}. The values @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}, @samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53}, @@ -19314,16 +19461,17 @@ Permissible names are: @samp{arm7tdmi}, @samp{arm7tdmi-s}, @samp{arm710t}, @samp{cortex-a32}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a55}, @samp{cortex-a57}, @samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-a75}, @samp{cortex-a76}, @samp{cortex-a76ae}, @samp{cortex-a77}, +@samp{cortex-a78}, @samp{cortex-a78ae}, @samp{ares}, @samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-r8}, @samp{cortex-r52}, @samp{cortex-m0}, @samp{cortex-m0plus}, @samp{cortex-m1}, @samp{cortex-m3}, @samp{cortex-m4}, @samp{cortex-m7}, @samp{cortex-m23}, @samp{cortex-m33}, -@samp{cortex-m35p}, @samp{cortex-m55}, +@samp{cortex-m35p}, @samp{cortex-m55}, @samp{cortex-x1}, @samp{cortex-m1.small-multiply}, @samp{cortex-m0.small-multiply}, @samp{cortex-m0plus.small-multiply}, @samp{exynos-m1}, @samp{marvell-pj4}, -@samp{neoverse-n1}, @samp{xscale}, @samp{iwmmxt}, @samp{iwmmxt2}, -@samp{ep9312}, @samp{fa526}, @samp{fa626}, @samp{fa606te}, @samp{fa626te}, -@samp{fmp626}, @samp{fa726te}, @samp{xgene1}. +@samp{neoverse-n1}, @samp{neoverse-n2}, @samp{neoverse-v1}, @samp{xscale}, +@samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}, @samp{fa526}, @samp{fa626}, +@samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}, @samp{xgene1}. Additionally, this option can specify that GCC should tune the performance of the code for a big.LITTLE system. Permissible names are: @@ -25485,17 +25633,16 @@ These options are defined for Nvidia PTX: @table @gcctabopt -@item -m32 -@itemx -m64 -@opindex m32 +@item -m64 @opindex m64 -Generate code for 32-bit or 64-bit ABI. +Ignored, but preserved for backward compatibility. Only 64-bit ABI is +supported. @item -misa=@var{ISA-string} @opindex march Generate code for given the specified PTX ISA (e.g.@: @samp{sm_35}). ISA strings must be lower-case. Valid ISA strings include @samp{sm_30} and -@samp{sm_35}. The default ISA is sm_30. +@samp{sm_35}. The default ISA is sm_35. @item -mmainkernel @opindex mmainkernel @@ -25872,14 +26019,30 @@ Generate code for given RISC-V ISA (e.g.@: @samp{rv64im}). ISA strings must be lower-case. Examples include @samp{rv64i}, @samp{rv32g}, @samp{rv32e}, and @samp{rv32imaf}. +When @option{-march=} is not specified, use the setting from @option{-mcpu}. + +If both @option{-march} and @option{-mcpu=} are not specified, the default for +this argument is system dependent, users who want a specific architecture +extensions should specify one explicitly. + +@item -mcpu=@var{processor-string} +@opindex mcpu +Use architecture of and optimize the output for the given processor, specified +by particular CPU name. +Permissible values for this option are: @samp{sifive-e20}, @samp{sifive-e21}, +@samp{sifive-e24}, @samp{sifive-e31}, @samp{sifive-e34}, @samp{sifive-e76}, +@samp{sifive-s21}, @samp{sifive-s51}, @samp{sifive-s54}, @samp{sifive-s76}, +@samp{sifive-u54}, and @samp{sifive-u74}. + @item -mtune=@var{processor-string} @opindex mtune -Optimize the output for the given processor, specified by microarchitecture -name. Permissible values for this option are: @samp{rocket}, +Optimize the output for the given processor, specified by microarchitecture or +particular CPU name. Permissible values for this option are: @samp{rocket}, @samp{sifive-3-series}, @samp{sifive-5-series}, @samp{sifive-7-series}, -and @samp{size}. +@samp{size}, and all valid options for @option{-mcpu=}. -When @option{-mtune=} is not specified, the default is @samp{rocket}. +When @option{-mtune=} is not specified, use the setting from @option{-mcpu}, +the default is @samp{rocket} if both are not specified. The @samp{size} choice is not intended for use by end-users. This is used when @option{-Os} is specified. It overrides the instruction cost info @@ -27612,7 +27775,7 @@ system representing a certain processor type. Possible values for @var{cpu-type} are @samp{z900}/@samp{arch5}, @samp{z990}/@samp{arch6}, @samp{z9-109}, @samp{z9-ec}/@samp{arch7}, @samp{z10}/@samp{arch8}, @samp{z196}/@samp{arch9}, @samp{zEC12}, @samp{z13}/@samp{arch11}, -@samp{z14}/@samp{arch12}, and @samp{native}. +@samp{z14}/@samp{arch12}, @samp{z15}/@samp{arch13}, and @samp{native}. The default is @option{-march=z900}. @@ -29162,7 +29325,7 @@ Generate instructions for the machine type @var{cpu-type}. In contrast to for the specified @var{cpu-type}, @option{-march=@var{cpu-type}} allows GCC to generate code that may not run at all on processors other than the one indicated. Specifying @option{-march=@var{cpu-type}} implies -@option{-mtune=@var{cpu-type}}. +@option{-mtune=@var{cpu-type}}, except where noted otherwise. The choices for @var{cpu-type} are: @@ -29178,6 +29341,19 @@ of the selected instruction set. @item x86-64 A generic CPU with 64-bit extensions. +@item x86-64-v2 +@itemx x86-64-v3 +@itemx x86-64-v4 +These choices for @var{cpu-type} select the corresponding +micro-architecture level from the x86-64 psABI. They are only available +when compiling for an x86-64 target that uses the System V psABI@. + +Since these @var{cpu-type} values do not have a corresponding +@option{-mtune} setting, using @option{-march} with these values enables +generic tuning. Specific tuning can be enabled using the +@option{-mtune=@var{other-cpu-type}} option with an appropriate +@var{other-cpu-type} value. + @item i386 Original Intel i386 CPU@. @@ -30117,6 +30293,8 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @need 200 @itemx -menqcmd @opindex menqcmd +@itemx -muintr +@opindex muintr @need 200 @itemx -mtsxldtrk @opindex mtsxldtrk @@ -30141,6 +30319,18 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @need 200 @itemx -mserialize @opindex mserialize +@need 200 +@itemx -mamx-tile +@opindex mamx-tile +@need 200 +@itemx -mamx-int8 +@opindex mamx-int8 +@need 200 +@itemx -mamx-bf16 +@opindex mamx-bf16 +@need 200 +@itemx -mhreset +@opindex mhreset These switches enable the use of instructions in the MMX, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4A, SSE4.1, SSE4.2, AVX, AVX2, AVX512F, AVX512PF, AVX512ER, AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI, SHA, @@ -30149,8 +30339,8 @@ WBNOINVD, FMA4, PREFETCHW, RDPID, PREFETCHWT1, RDSEED, SGX, XOP, LWP, 3DNow!@:, enhanced 3DNow!@:, POPCNT, ABM, ADX, BMI, BMI2, LZCNT, FXSR, XSAVE, XSAVEOPT, XSAVEC, XSAVES, RTM, HLE, TBM, MWAITX, CLZERO, PKU, AVX512VBMI2, GFNI, VAES, WAITPKG, VPCLMULQDQ, AVX512BITALG, MOVDIRI, MOVDIR64B, AVX512BF16, -ENQCMD, AVX512VPOPCNTDQ, AVX5124FMAPS, AVX512VNNI, AVX5124VNNIW, SERIALIZE -or CLDEMOTE extended instruction sets. Each has a corresponding +ENQCMD, AVX512VPOPCNTDQ, AVX5124FMAPS, AVX512VNNI, AVX5124VNNIW, SERIALIZE, +UINTR, HRESET or CLDEMOTE extended instruction sets. Each has a corresponding @option{-mno-} option to disable use of these instructions. These extensions are also available as built-in functions: see @@ -31514,6 +31704,19 @@ crt0%O%s %:if-exists(crti%O%s) \ %:if-exists-else(crtbeginT%O%s crtbegin%O%s) @end smallexample +@item @code{if-exists-then-else} +The @code{if-exists-then-else} spec function takes at least two arguments +and an optional third one. The first argument is an absolute pathname to a +file. If the file exists, the function returns the second argument. +If the file does not exist, the function returns the third argument if there +is one, or NULL otherwise. This can be used to expand one text, or optionally +another, based on the existence of a file. Here is a small example of its +usage: + +@smallexample +-l%:if-exists-then-else(%:getenv(VSB_DIR rtnet.h) rtnet net) +@end smallexample + @item @code{replace-outfile} The @code{replace-outfile} spec function takes two arguments. It looks for the first argument in the outfiles array and replaces it with the second argument. Here diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 65b2e55..49316a5 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -1527,6 +1527,9 @@ optabs on vectors. Target supports fully-masked (also known as fully-predicated) loops, so that vector loops can handle partial as well as full vectors. +@item vect_masked_load +Target supports vector masked loads. + @item vect_masked_store Target supports vector masked stores. @@ -2249,6 +2252,15 @@ Target supports the execution of @code{avx512f} instructions. @item avx512vp2intersect Target supports the execution of @code{avx512vp2intersect} instructions. +@item amx_tile +Target supports the execution of @code{amx-tile} instructions. + +@item amx_int8 +Target supports the execution of @code{amx-int8} instructions. + +@item amx_bf16 +Target supports the execution of @code{amx-bf16} instructions. + @item cell_hw Test system can execute AltiVec and Cell PPU instructions. diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 8e9e770..97437e8 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -5602,9 +5602,12 @@ refers to the global ``variable'' @code{errno}. (On certain systems, macro, a reasonable default is used. @end defmac -@deftypefn {Target Hook} bool TARGET_LIBC_HAS_FUNCTION (enum function_class @var{fn_class}) +@deftypefn {Target Hook} bool TARGET_LIBC_HAS_FUNCTION (enum function_class @var{fn_class}, tree @var{type}) This hook determines whether a function from a class of functions -@var{fn_class} is present in the target C library. +@var{fn_class} is present in the target C library. If @var{type} is NULL, +the caller asks for support for all standard (float, double, long double) +types. If @var{type} is non-NULL, the caller asks for support for a +specific type. @end deftypefn @deftypefn {Target Hook} bool TARGET_LIBC_HAS_FAST_FUNCTION (int @var{fcode}) |