X-Git-Url: https://gcc.gnu.org/git/?a=blobdiff_plain;f=gcc%2Fcommon.opt;h=51c4a17da83bf2adb57b92414bb26f36ca5dc27c;hb=0f5a9a00e3ab1fe96142f304cfbcf3f63b15f326;hp=0888c15b88f03c83f0d0b264b75814e85afee1d6;hpb=1c6231c05bdccab3a21abcbb75e2094ea3e98782;p=gcc.git diff --git a/gcc/common.opt b/gcc/common.opt index 0888c15b88f0..51c4a17da83b 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1,6 +1,6 @@ ; Options for the language- and target-independent parts of the compiler. -; Copyright (C) 2003-2023 Free Software Foundation, Inc. +; Copyright (C) 2003-2024 Free Software Foundation, Inc. ; ; This file is part of GCC. ; @@ -634,6 +634,10 @@ Wfree-nonheap-object Common Var(warn_free_nonheap_object) Init(1) Warning Warn when attempting to free a non-heap object. +Whardened +Common Var(warn_hardened) Init(1) Warning +Warn when -fhardened did not enable an option from its set. + Whsa Common Ignore Warning Does nothing. Preserved for backward compatibility. @@ -781,6 +785,10 @@ Wsuggest-attribute=malloc Common Var(warn_suggest_attribute_malloc) Warning Warn about functions which might be candidates for __attribute__((malloc)). +Wsuggest-attribute=returns_nonnull +Common Var(warn_suggest_attribute_returns_nonnull) Warning +Warn about functions which might be candidates for __attribute__((returns_nonnull)). + Wsuggest-final-types Common Var(warn_suggest_final_types) Warning Warn about C++ polymorphic types where adding final keyword would improve code quality. @@ -1010,6 +1018,11 @@ Driver Undocumented ; 18: Corrects errors in mangling of lambdas with additional context. ; Default in G++ 13. ; +; 19: Emits ABI tags if needed in structured binding mangled names. +; Ignores cv-quals on [[no_unique_object]] members. +; Mangles constraints on function templates. +; Default in G++ 14. +; ; Additional positive integers will be assigned as new versions of ; the ABI become the default version of the ABI. fabi-version= @@ -1027,9 +1040,6 @@ Align the start of functions. falign-functions= Common RejectNegative Joined Var(str_align_functions) Optimization -flimit-function-alignment -Common Var(flag_limit_function_alignment) Optimization Init(0) - falign-jumps Common Var(flag_align_jumps) Optimization Align labels which are only reached by jumping. @@ -1248,6 +1258,10 @@ fcprop-registers Common Var(flag_cprop_registers) Optimization Perform a register copy-propagation optimization pass. +ffold-mem-offsets +Common Var(flag_fold_mem_offsets) Init(1) Optimization +Fold instructions calculating memory offsets to the memory access instruction if possible. + fcrossjumping Common Var(flag_crossjumping) Optimization Perform cross-jumping optimization. @@ -1375,6 +1389,10 @@ Enum(diagnostic_color_rule) String(always) Value(DIAGNOSTICS_COLOR_YES) EnumValue Enum(diagnostic_color_rule) String(auto) Value(DIAGNOSTICS_COLOR_AUTO) +fdiagnostics-json-formatting +Common Var(flag_diagnostics_json_formatting) Init(1) +Enable formatting of JSON output. + fdiagnostics-urls= Driver Common Joined RejectNegative Var(flag_diagnostics_show_urls) Enum(diagnostic_url_rule) Init(DIAGNOSTICS_URL_AUTO) -fdiagnostics-urls=[never|always|auto] Embed URLs in diagnostics. @@ -1506,10 +1524,6 @@ fdiagnostics-text-art-charset= Driver Common Joined RejectNegative Var(flag_diagnostics_text_art_charset) Enum(diagnostic_text_art_charset) Init(DIAGNOSTICS_TEXT_ART_CHARSET_EMOJI) -fdiagnostics-text-art-charset=[none|ascii|unicode|emoji] Determine which characters to use in text arg diagrams. -; Required for these enum values. -SourceInclude -diagnostic-text-art.h - Enum Name(diagnostic_text_art_charset) Type(int) @@ -1815,6 +1829,10 @@ fguess-branch-probability Common Var(flag_guess_branch_prob) Optimization Enable guessing of branch probabilities. +fhardened +Common Driver Var(flag_hardened) +Enable various security-relevant flags. + fharden-compares Common Var(flag_harden_compares) Optimization Harden conditionals not used in branches, checking reversed conditions. @@ -1823,6 +1841,41 @@ fharden-conditional-branches Common Var(flag_harden_conditional_branches) Optimization Harden conditional branches by checking reversed conditions. +fharden-control-flow-redundancy +Common Var(flag_harden_control_flow_redundancy) Optimization +Harden control flow by recording and checking execution paths. + +fhardcfr-skip-leaf +Common Var(flag_harden_control_flow_redundancy_skip_leaf) Optimization +Disable CFR in leaf functions. + +fhardcfr-check-returning-calls +Common Var(flag_harden_control_flow_redundancy_check_returning_calls) Init(-1) Optimization +Check CFR execution paths also before calls followed by returns of their results. + +fhardcfr-check-exceptions +Common Var(flag_harden_control_flow_redundancy_check_exceptions) Init(-1) Optimization +Check CFR execution paths also when exiting a function through an exception. + +fhardcfr-check-noreturn-calls= +Common Joined RejectNegative Enum(hardcfr_check_noreturn_calls) Var(flag_harden_control_flow_redundancy_check_noreturn) Init(HCFRNR_UNSPECIFIED) Optimization +-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never] Check CFR execution paths also before calling noreturn functions. + +Enum +Name(hardcfr_check_noreturn_calls) Type(enum hardcfr_noret) UnknownError(unknown hardcfr noreturn checking level %qs) + +EnumValue +Enum(hardcfr_check_noreturn_calls) String(never) Value(HCFRNR_NEVER) + +EnumValue +Enum(hardcfr_check_noreturn_calls) String(nothrow) Value(HCFRNR_NOTHROW) + +EnumValue +Enum(hardcfr_check_noreturn_calls) String(no-xthrow) Value(HCFRNR_NO_XTHROW) + +EnumValue +Enum(hardcfr_check_noreturn_calls) String(always) Value(HCFRNR_ALWAYS) + ; Nonzero means ignore `#ident' directives. 0 means handle them. ; Generate position-independent code for executables if possible ; On SVR4 targets, it also controls whether or not to emit a @@ -1904,6 +1957,40 @@ finline-atomics Common Var(flag_inline_atomics) Init(1) Optimization Inline __atomic operations when a lock free instruction sequence is available. +finline-stringops +Common RejectNegative Enum(ilsop_fn) Var(flag_inline_stringops, ILSOP_ALL) Enum(ilsop_fn) Init(ILSOP_NONE) Optimization Undocumented + +fno-inline-stringops +Common RejectNegative Enum(ilsop_fn) Var(flag_inline_stringops, ILSOP_NONE) Enum(ilsop_fn) Optimization Undocumented + +finline-stringops= +Common Joined Var(flag_inline_stringops) EnumSet Enum(ilsop_fn) Optimization +-finline-stringops[=memcmp|memcpy|memmove|memset] +Expand supported mem/str operations inline, even if against optimization. + +Enum +Name(ilsop_fn) Type(enum ilsop_fn) UnknownError(unavailable stringop for inlining %qs) + +; This is not part of any set. +; EnumValue +; Enum(ilsop_fn) String(none) Value(ILSOP_NONE) + +EnumValue +Enum(ilsop_fn) String(memcmp) Value(ILSOP_MEMCMP) Set(1) + +EnumValue +Enum(ilsop_fn) String(memcpy) Value(ILSOP_MEMCPY) Set(2) + +EnumValue +Enum(ilsop_fn) String(memmove) Value(ILSOP_MEMMOVE) Set(3) + +EnumValue +Enum(ilsop_fn) String(memset) Value(ILSOP_MEMSET) Set(4) + +; This is not part of any set either. +; EnumValue +; Enum(ilsop_fn) String(all) Value(ILSOP_ALL) + fcf-protection Common RejectNegative Alias(fcf-protection=,full) @@ -2187,6 +2274,10 @@ fmessage-length= Common RejectNegative Joined UInteger -fmessage-length= Limit diagnostics to characters per line. 0 suppresses line-wrapping. +fmin-function-alignment= +Common Joined RejectNegative UInteger Var(flag_min_function_alignment) Optimization +Align the start of every function. + fmodulo-sched Common Var(flag_modulo_sched) Optimization Perform SMS based modulo scheduling before the first scheduling pass. @@ -2511,6 +2602,9 @@ starts and when the destructor finishes. flifetime-dse= Common Joined RejectNegative UInteger Var(flag_lifetime_dse) Optimization IntegerRange(0, 2) +flimit-function-alignment +Common Var(flag_limit_function_alignment) Optimization Init(0) + flive-patching Common RejectNegative Alias(flive-patching=,inline-clone) Optimization @@ -2832,6 +2926,35 @@ fstrict-overflow Common Treat signed overflow as undefined. Negated as -fwrapv -fwrapv-pointer. +fstrub=disable +Common RejectNegative Var(flag_strub, 0) +Disable stack scrub entirely, disregarding strub attributes. + +fstrub=strict +Common RejectNegative Var(flag_strub, -4) +Enable stack scrub as per attributes, with strict call checking. + +; If any strub-enabling attribute is seen when the default or strict +; initializer values are in effect, flag_strub is bumped up by 2. The +; scrub mode gate function will then bump these initializer values to +; 0 if no strub-enabling attribute is seen. This minimizes the strub +; overhead. +fstrub=relaxed +Common RejectNegative Var(flag_strub, -3) Init(-3) +Restore default strub mode: as per attributes, with relaxed checking. + +fstrub=all +Common RejectNegative Var(flag_strub, 3) +Enable stack scrubbing for all viable functions. + +fstrub=at-calls +Common RejectNegative Var(flag_strub, 1) +Enable at-calls stack scrubbing for all viable functions. + +fstrub=internal +Common RejectNegative Var(flag_strub, 2) +Enable internal stack scrubbing for all viable functions. + fsync-libcalls Common Var(flag_sync_libcalls) Init(1) Implement __atomic operations via libcalls to legacy __sync functions. @@ -2884,10 +3007,25 @@ Common Var(flag_tracer) Optimization Perform superblock formation via tail duplication. ftrampolines -Common Var(flag_trampolines) Init(0) +Common Var(flag_trampolines) Init(HEAP_TRAMPOLINES_INIT) For targets that normally need trampolines for nested functions, always generate them instead of using descriptors. +ftrampoline-impl= +Common Joined RejectNegative Enum(trampoline_impl) Var(flag_trampoline_impl) Init(HEAP_TRAMPOLINES_INIT ? TRAMPOLINE_IMPL_HEAP : TRAMPOLINE_IMPL_STACK) +Whether trampolines are generated in executable memory rather than +executable stack. + +Enum +Name(trampoline_impl) Type(enum trampoline_impl) UnknownError(unknown trampoline implementation %qs) + +EnumValue +Enum(trampoline_impl) String(stack) Value(TRAMPOLINE_IMPL_STACK) + +EnumValue +Enum(trampoline_impl) String(heap) Value(TRAMPOLINE_IMPL_HEAP) + + ; Zero means that floating-point math operations cannot generate a ; (user-visible) trap. This is the case, for example, in nonstop ; IEEE 754 arithmetic.