This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Darwin] Do not enable -fvar-tracking at -O0


Hi,

this is a regression present on the mainline and 4.7 branch.  -fvar-tracking 
is automatically enabled on Darwin when -g is passed, including at -O0.  This 
results in bloated and incomplete debug info.

This comes from a latent issue in the handling of flag_var_tracking_uninit in 
the Darwin back-end, which wasn't updated for the new option machinery.

Tested on x86_64-apple-darwin10.8.0, OK for mainline and 4.7 branch?


2012-11-09  Eric Botcazou  <ebotcazou@adacore.com>

	* common.opt (fvar-tracking-uninit): Document.
	* toplev.c (process_options): Fix handling of flag_var_tracking_uninit.
	* config/darwin.c (darwin_override_options): Likewise.


-- 
Eric Botcazou
Index: toplev.c
===================================================================
--- toplev.c	(revision 193322)
+++ toplev.c	(working copy)
@@ -1416,12 +1416,15 @@ process_options (void)
   /* If the user specifically requested variable tracking with tagging
      uninitialized variables, we need to turn on variable tracking.
      (We already determined above that variable tracking is feasible.)  */
-  if (flag_var_tracking_uninit)
+  if (flag_var_tracking_uninit == 1)
     flag_var_tracking = 1;
 
   if (flag_var_tracking == AUTODETECT_VALUE)
     flag_var_tracking = optimize >= 1;
 
+  if (flag_var_tracking_uninit == AUTODETECT_VALUE)
+    flag_var_tracking_uninit = flag_var_tracking;
+
   if (flag_var_tracking_assignments == AUTODETECT_VALUE)
     flag_var_tracking_assignments = flag_var_tracking
       && !(flag_selective_scheduling || flag_selective_scheduling2);
Index: common.opt
===================================================================
--- common.opt	(revision 193322)
+++ common.opt	(working copy)
@@ -2189,6 +2189,10 @@ fvar-tracking-assignments-toggle
 Common Report Var(flag_var_tracking_assignments_toggle) Optimization
 Toggle -fvar-tracking-assignments
 
+; Positive if we should track uninitialized variables, negative if
+; we should run the var-tracking pass only to discard debug
+; annotations.  When flag_var_tracking_uninit == AUTODETECT_VALUE it
+; will be set according to flag_var_tracking.
 fvar-tracking-uninit
 Common Report Var(flag_var_tracking_uninit) Optimization
 Perform variable tracking and also tag variables that are uninitialized
Index: config/darwin.c
===================================================================
--- config/darwin.c	(revision 193322)
+++ config/darwin.c	(working copy)
@@ -3038,12 +3038,12 @@ darwin_override_options (void)
       darwin_emit_branch_islands = true;
     }
 
-  if (flag_var_tracking
+  if (flag_var_tracking_uninit == 0
       && generating_for_darwin_version >= 9
       && (flag_gtoggle ? (debug_info_level == DINFO_LEVEL_NONE)
       : (debug_info_level >= DINFO_LEVEL_NORMAL))
       && write_symbols == DWARF2_DEBUG)
-    flag_var_tracking_uninit = 1;
+    flag_var_tracking_uninit = flag_var_tracking;
 
   if (MACHO_DYNAMIC_NO_PIC_P)
     {

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]