On Mon, Oct 13, 2025 at 07:07:01AM +0100, Iain Sandoe wrote: > Tested on x86_64-darwin24, pushed to trunk, thanks > Iain > > --- 8< --- > > r16-4373 altered headers so that Wignored-attributes was named in > a diagnostic push. This causes several Objective-C++ tests to fail > since the atomicity.h header is included there. > > Since Objective-C/C++ are intended to be supersets of the base > language, there is no specific reason to exclude this warning there. > > gcc/c-family/ChangeLog: > > * c.opt: Enable Wignored-attributes for Objective-C and > Objective-C++. > > Signed-off-by: Iain Sandoe <[email protected]>
I wrote a more complete version of this patch, here is it rebased on top of your patch. I see no reason for any of these options to be C C++ only rather than C ObjC C++ ObjC++, or in some cases C++ only rather than C++ ObjC++. The only cases where I think limiting to C only is desirable are fgimple C Var(flag_gimple) Init(0) Enable parsing GIMPLE. where I think we don't want to support ObjC for GIMPLE FE, and lang-asm C Undocumented RejectDriver For everything else I believe people adding those options just didn't think of ObjC or ObjC++. Bootstrapped on x86_64-linux and i686-linux, ok for trunk? 2025-10-13 Jakub Jelinek <[email protected]> * c.opt (Wflex-array-member-not-at-end, Wignored-qualifiers, Wopenacc-parallelism, Wstrict-flex-arrays, Wsync-nand, fstrict-flex-arrays, fstrict-flex-arrays=): Enable also for ObjC and ObjC++ next to C and C++. (Wmisleading-indentation, Wopenmp-simd): Likewise. Also change LangEnabledBy from just C C++ to C ObjC C++ ObjC++. (Wplacement-new, Wplacement-new=, fcontract-assumption-mode=, fcontract-build-level=, fcontract-strict-declarations=, fcontract-mode=, fcontract-continuation-mode=, fcontract-role=, fcontract-semantic=, fcoroutines, flang-info-include-translate, flang-info-include-translate-not, flang-info-include-translate=, flang-info-module-cmi, flang-info-module-cmi=): Enable also for ObjC++ next to C++. --- gcc/c-family/c.opt.jj 2025-10-04 09:42:48.873647765 +0200 +++ gcc/c-family/c.opt 2025-10-13 09:34:40.747617261 +0200 @@ -774,7 +774,7 @@ C++ ObjC++ Var(warn_extra_semi) Init(-1) Warn about semicolon after in-class function definition. Wflex-array-member-not-at-end -C C++ Var(warn_flex_array_member_not_at_end) Warning +C ObjC C++ ObjC++ Var(warn_flex_array_member_not_at_end) Warning Warn when a structure containing a C99 flexible array member as the last field is not at the end of another structure. @@ -866,11 +866,11 @@ C ObjC C++ ObjC++ Var(warn_if_not_aligne Warn when the field in a struct is not aligned. Wignored-qualifiers -C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra) +C ObjC C++ ObjC++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra) Warn whenever type qualifiers are ignored. Wignored-attributes C ObjC C++ ObjC++ Var(warn_ignored_attributes) Init(1) Warning Warn whenever attributes are ignored. Wimplicit @@ -1013,7 +1013,7 @@ C ObjC C++ ObjC++ Var(warn_memset_transp Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not. Wmisleading-indentation -C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall) +C ObjC C++ ObjC++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) Warn when the indentation of the code does not reflect the block structure. Wmismatched-dealloc @@ -1187,7 +1187,7 @@ C ObjC Var(warn_old_style_definition) In Warn if an old-style parameter definition is used. Wopenacc-parallelism -C C++ Var(warn_openacc_parallelism) Warning +C ObjC C++ ObjC++ Var(warn_openacc_parallelism) Warning Warn about potentially suboptimal choices related to OpenACC parallelism. Wopenmp @@ -1195,7 +1195,7 @@ C ObjC C++ ObjC++ Warning Var(warn_openm Warn about suspicious OpenMP code. Wopenmp-simd -C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall) +C ObjC C++ ObjC++ Var(warn_openmp_simd) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) Warn if a simd directive is overridden by the vectorizer cost model. Woverlength-strings @@ -1243,11 +1243,11 @@ C++ ObjC++ Var(warn_pessimizing_move) Wa Warn about calling std::move on a local object in a return statement preventing copy elision. Wplacement-new -C++ Warning Alias(Wplacement-new=, 1, 0) +C++ ObjC++ Warning Alias(Wplacement-new=, 1, 0) Warn for placement new expressions with undefined behavior. Wplacement-new= -C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2) +C++ ObjC++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2) Warn for placement new expressions with undefined behavior. Wpmf-conversions @@ -1417,7 +1417,7 @@ C ObjC C++ ObjC++ LangEnabledBy(C ObjC C ; Wstrict-flex-arrays -C C++ Var(warn_strict_flex_arrays) Warning +C ObjC C++ ObjC++ Var(warn_strict_flex_arrays) Warning Warn about improper usages of flexible array members according to the level of -fstrict-flex-arrays. @@ -1495,7 +1495,7 @@ C ObjC C++ ObjC++ Var(warn_switch_outsid Warn about switch values that are outside of the switch's type range. Wsync-nand -C C++ Var(warn_sync_nand) Init(1) Warning +C ObjC C++ ObjC++ Var(warn_sync_nand) Init(1) Warning Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used. Wsynth @@ -1900,35 +1900,35 @@ EnumValue Enum(on_off) String(on) Value(1) fcontract-assumption-mode= -C++ Joined RejectNegative +C++ ObjC++ Joined RejectNegative -fcontract-assumption-mode=[on|off] Enable or disable treating axiom level contracts as assumptions (default on). fcontract-build-level= -C++ Joined RejectNegative +C++ ObjC++ Joined RejectNegative -fcontract-build-level=[off|default|audit] Specify max contract level to generate runtime checks for. fcontract-strict-declarations= -C++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative +C++ ObjC++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative -fcontract-strict-declarations=[on|off] Enable or disable warnings on generalized redeclaration of functions with contracts (default off). fcontract-mode= -C++ Var(flag_contract_mode) Enum(on_off) Joined Init(1) RejectNegative +C++ ObjC++ Var(flag_contract_mode) Enum(on_off) Joined Init(1) RejectNegative -fcontract-mode=[on|off] Enable or disable all contract facilities (default on). fcontract-continuation-mode= -C++ Joined RejectNegative +C++ ObjC++ Joined RejectNegative -fcontract-continuation-mode=[on|off] Enable or disable contract continuation mode (default off). fcontract-role= -C++ Joined RejectNegative +C++ ObjC++ Joined RejectNegative -fcontract-role=<name>:<semantics> Specify the semantics for all levels in a role (default, review), or a custom contract role with given semantics (ex: opt:assume,assume,assume). fcontract-semantic= -C++ Joined RejectNegative +C++ ObjC++ Joined RejectNegative -fcontract-semantic=<level>:<semantic> Specify the concrete semantics for level. fcoroutines -C++ LTO Var(flag_coroutines) +C++ ObjC++ LTO Var(flag_coroutines) Enable C++ coroutines (experimental). fdebug-cpp @@ -2130,23 +2130,23 @@ C ObjC Var(warn_compare_distinct_pointer Warn if pointers of distinct types are compared without a cast. flang-info-include-translate -C++ Var(note_include_translate_yes) +C++ ObjC++ Var(note_include_translate_yes) Note #include directives translated to import declarations. flang-info-include-translate-not -C++ Var(note_include_translate_no) +C++ ObjC++ Var(note_include_translate_no) Note #include directives not translated to import declarations, and not known to be textual. flang-info-include-translate= -C++ Joined RejectNegative MissingArgError(missing header name) +C++ ObjC++ Joined RejectNegative MissingArgError(missing header name) Note a #include translation of a specific header. flang-info-module-cmi -C++ Var(note_module_cmi_yes) +C++ ObjC++ Var(note_module_cmi_yes) Note Compiled Module Interface pathnames. flang-info-module-cmi= -C++ Joined RejectNegative MissingArgError(missing module name) +C++ ObjC++ Joined RejectNegative MissingArgError(missing module name) Note Compiled Module Interface pathname of a specific module or header-unit. fmax-include-depth= @@ -2357,10 +2357,10 @@ C++ ObjC++ Var(flag_sized_deallocation) Enable C++14 sized deallocation support. fstrict-flex-arrays -C C++ Common Alias(fstrict-flex-arrays=,3,0) +C ObjC C++ ObjC++ Common Alias(fstrict-flex-arrays=,3,0) fstrict-flex-arrays= -C C++ Common Joined RejectNegative UInteger Var(flag_strict_flex_arrays) Init(0) IntegerRange(0,3) +C ObjC C++ ObjC++ Common Joined RejectNegative UInteger Var(flag_strict_flex_arrays) Init(0) IntegerRange(0,3) -fstrict-flex-arrays=<level> Control when to treat the trailing array of a structure as a flexible array member for the purposes of accessing the elements of such an array. The default is treating all trailing arrays of structures as flexible array members. fsquangle Jakub
