This patch partially reverts a change in how a bare -g option was parsed
in a previous commit.  Originally, -g would set the debug level to 2
only if debug was off.  The previous commit changed that so that -g
would set the debug level to 2 unconditionally.  This patch changes
it so that -g sets the debug level to 2 if it was either off or at
level 1 before.

OK to commit?

-cary


2014-05-14  Cary Coutant  <ccout...@google.com>

gcc/
        PR debug/61013
        * opts.c (common_handle_option): Don't special-case "-g".
        (set_debug_level): Default to at least level 2 with "-g".


Index: gcc/opts.c
===================================================================
--- gcc/opts.c  (revision 210437)
+++ gcc/opts.c  (working copy)
@@ -1814,13 +1814,8 @@ common_handle_option (struct gcc_options
       break;
 
     case OPT_g:
-      /* -g by itself should force -g2.  */
-      if (*arg == '\0')
-       set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, "2", opts, opts_set,
-                        loc);
-      else
-       set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, arg, opts, opts_set,
-                        loc);
+      set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, arg, opts, opts_set,
+                       loc);
       break;
 
     case OPT_gcoff:
@@ -2070,10 +2065,12 @@ set_debug_level (enum debug_info_type ty
       opts_set->x_write_symbols = type;
     }
 
-  /* A debug flag without a level defaults to level 2.  */
+  /* A debug flag without a level defaults to level 2.
+     If off or at level 1, set it to level 2, but if already
+     at level 3, don't lower it.  */ 
   if (*arg == '\0')
     {
-      if (!opts->x_debug_info_level)
+      if (opts->x_debug_info_level < DINFO_LEVEL_NORMAL)
        opts->x_debug_info_level = DINFO_LEVEL_NORMAL;
     }
   else

Reply via email to