OSDN Git Service

* toplev.c (process_options): Move setter of flag_var_tracking
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Sep 2009 18:55:45 +0000 (18:55 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Sep 2009 18:55:45 +0000 (18:55 +0000)
before other tests that depend on it.  Move down setter of
flag_rename_registers.  Don't enable var-tracking-assignments
by default if selective scheduling is enabled.  Warn if both
are enabled.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151433 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/toplev.c

index ceafb45..e88346b 100644 (file)
@@ -1,5 +1,13 @@
 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
 
+       * toplev.c (process_options): Move setter of flag_var_tracking
+       before other tests that depend on it.  Move down setter of
+       flag_rename_registers.  Don't enable var-tracking-assignments
+       by default if selective scheduling is enabled.  Warn if both
+       are enabled.
+
+2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
+
        * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
        comment.  Use switch statement to catch overlaps between rtx
        and tree codes.  Accept FUNCTION_DECLs in addition to those in...
index 1d69bb9..c18965a 100644 (file)
@@ -1982,15 +1982,18 @@ process_options (void)
       flag_var_tracking_uninit = 0;
     }
 
-  if (flag_rename_registers == AUTODETECT_VALUE)
-    flag_rename_registers = default_debug_hooks->var_location
-                           != do_nothing_debug_hooks.var_location;
+  /* 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)
+    flag_var_tracking = 1;
 
   if (flag_var_tracking == AUTODETECT_VALUE)
     flag_var_tracking = optimize >= 1;
 
   if (flag_var_tracking_assignments == AUTODETECT_VALUE)
-    flag_var_tracking_assignments = flag_var_tracking;
+    flag_var_tracking_assignments = flag_var_tracking
+      && !(flag_selective_scheduling || flag_selective_scheduling2);
 
   if (flag_var_tracking_assignments_toggle)
     flag_var_tracking_assignments = !flag_var_tracking_assignments;
@@ -1998,6 +2001,14 @@ process_options (void)
   if (flag_var_tracking_assignments && !flag_var_tracking)
     flag_var_tracking = flag_var_tracking_assignments = -1;
 
+  if (flag_var_tracking_assignments
+      && (flag_selective_scheduling || flag_selective_scheduling2))
+    warning (0, "var-tracking-assignments changes selective scheduling");
+
+  if (flag_rename_registers == AUTODETECT_VALUE)
+    flag_rename_registers = default_debug_hooks->var_location
+                           != do_nothing_debug_hooks.var_location;
+
   if (flag_tree_cselim == AUTODETECT_VALUE)
 #ifdef HAVE_conditional_move
     flag_tree_cselim = 1;
@@ -2005,12 +2016,6 @@ process_options (void)
     flag_tree_cselim = 0;
 #endif
 
-  /* 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)
-    flag_var_tracking = 1;
-
   /* If auxiliary info generation is desired, open the output file.
      This goes in the same directory as the source file--unlike
      all the other output files.  */