The magic values for default (usually -1 or sometimes 2) for some options
are from times we haven't global_options_set, I think we should eventually
get rid of all of those.
The PR is about gcc -Q --help=optimizers reporting -fshort-enums as
[enabled] when it is disabled.
For this the following patch is just partial fix; with explicit
gcc -Q --help=optimizers -fshort-enums
or
gcc -Q --help=optimizers -fno-short-enums
it already worked correctly before, with this patch it will report
even with just
gcc -Q --help=optimizers
correct value on most targets, except 32-bit arm with some options or
defaults, so I think it is a step in the right direction.
But, as I wrote in the PR, process_options isn't done before --help=
and even shouldn't be in its current form where it warns on some option
combinations or errors or emits sorry on others, so I think ideally
process_options should have some bool argument whether it is done for
--help= purposes or not, if yes, not emit warnings and just adjust the
options, otherwise do what it currently does.
2024-12-14 Jakub Jelinek <jakub@redhat.com>
PR c/118011
gcc/
* opts.cc (init_options_struct): Don't set opts->x_flag_short_enums to
2.
* toplev.cc (process_options): Test !OPTION_SET_P (flag_short_enums)
rather than flag_short_enums == 2.
gcc/ada/
* gcc-interface/misc.cc (gnat_post_options): Test
!OPTION_SET_P (flag_short_enums) rather than flag_short_enums == 2.
/* Unfortunately the post_options hook is called before the value of
flag_short_enums is autodetected, if need be. Mimic the process
for our private flag_short_enums. */
- if (flag_short_enums == 2)
+ if (!OPTION_SET_P (flag_short_enums))
flag_short_enums = targetm.default_short_enums ();
return false;
/* Initialize whether `char' is signed. */
opts->x_flag_signed_char = DEFAULT_SIGNED_CHAR;
- /* Set this to a special "uninitialized" value. The actual default
- is set after target options have been processed. */
- opts->x_flag_short_enums = 2;
/* Initialize target_flags before default_options_optimization
so the latter can modify it. */
flag_section_anchors = 0;
}
- if (flag_short_enums == 2)
+ if (!OPTION_SET_P (flag_short_enums))
flag_short_enums = targetm.default_short_enums ();
/* Set aux_base_name if not already set. */