https://gcc.gnu.org/g:18f0b7d5f370c47633837e935f8a6e1b8616b56b

commit r15-6252-g18f0b7d5f370c47633837e935f8a6e1b8616b56b
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Sat Dec 14 11:25:08 2024 +0100

    opts: Use OPTION_SET_P instead of magic value 2 for -fshort-enums default 
[PR118011]
    
    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  <ja...@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.

Diff:
---
 gcc/ada/gcc-interface/misc.cc | 2 +-
 gcc/opts.cc                   | 3 ---
 gcc/toplev.cc                 | 2 +-
 3 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/gcc/ada/gcc-interface/misc.cc b/gcc/ada/gcc-interface/misc.cc
index c7c735e57639..d3f8ffa8692c 100644
--- a/gcc/ada/gcc-interface/misc.cc
+++ b/gcc/ada/gcc-interface/misc.cc
@@ -283,7 +283,7 @@ gnat_post_options (const char **pfilename ATTRIBUTE_UNUSED)
   /* 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;
diff --git a/gcc/opts.cc b/gcc/opts.cc
index 9909d4a4fc50..fa64bb7734a9 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -444,9 +444,6 @@ init_options_struct (struct gcc_options *opts, struct 
gcc_options *opts_set)
 
   /* 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.  */
diff --git a/gcc/toplev.cc b/gcc/toplev.cc
index 370d7f39f218..5f19ebb5cf2a 100644
--- a/gcc/toplev.cc
+++ b/gcc/toplev.cc
@@ -1300,7 +1300,7 @@ process_options ()
       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.  */

Reply via email to