gcc.c (spec_undefvar_allowed): New global.
authorOlivier Hainque <hainque@adacore.com>
Thu, 6 Jul 2017 15:04:30 +0000 (15:04 +0000)
committerOlivier Hainque <hainque@gcc.gnu.org>
Thu, 6 Jul 2017 15:04:30 +0000 (15:04 +0000)
2017-07-06  Olivier Hainque  <hainque@adacore.com>

        * gcc.c (spec_undefvar_allowed): New global.
        (process_command): Set to true when running for --version or --help
        alone, or together.
        (getenv_spec_function): When the variable is not defined, use the
        variable name as the variable value if we're allowed not to issue
        a fatal error.

From-SVN: r250027

gcc/ChangeLog
gcc/gcc.c

index 4fd19e6..9d4b01f 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-06  Olivier Hainque  <hainque@adacore.com>
+
+       * gcc.c (spec_undefvar_allowed): New global.
+       (process_command): Set to true when running for --version or --help
+       alone, or together.
+       (getenv_spec_function): When the variable is not defined, use the
+       variable name as the variable value if we're allowed not to issue
+       a fatal error.
+
 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
 
        * auto-profile.c (afdo_set_bb_count, afdo_propagate_edge,
index 6d724b2..e8e3d66 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -4615,23 +4615,23 @@ process_command (unsigned int decoded_options_count,
 
   /* Decide if undefined variable references are allowed in specs.  */
 
-  /* --version and --help alone or together are safe.  Note that -v would
-     make them unsafe, as they'd then be run for subprocesses as well, the
-     location of which might depend on variables possibly coming from
-     self-specs.
+  /* -v alone is safe. --version and --help alone or together are safe.  Note
+     that -v would make them unsafe, as they'd then be run for subprocesses as
+     well, the location of which might depend on variables possibly coming
+     from self-specs.  Note also that the command name is counted in
+     decoded_options_count.  */
 
-     Count the number of options we have for which undefined variables
-     are harmless for sure, and check that nothing else is set.  */
-
-  unsigned n_varsafe_options = 0;
+  unsigned help_version_count = 0;
 
   if (print_version)
-    n_varsafe_options++;
-  
+    help_version_count++;
+
   if (print_help_list)
-    n_varsafe_options++;
-  
-  spec_undefvar_allowed = (n_varsafe_options == decoded_options_count - 1);
+    help_version_count++;
+
+  spec_undefvar_allowed =
+    ((verbose_flag && decoded_options_count == 2)
+     || help_version_count == decoded_options_count - 1);
 
   alloc_switch ();
   switches[n_switches].part1 = 0;