OSDN Git Service

* tree-ssa.c (execute_early_warn_uninitialized): Pass context node
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Apr 2005 18:24:32 +0000 (18:24 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Apr 2005 18:24:32 +0000 (18:24 +0000)
to talk_tree as 'data' parameter, rather than EXPR_LOCUS.
(warn_uninit): Get EXPR_LOCUS from context now instead.
This fixes a USE_MAPPED_LOCATION testsuite failure.

* tree-ssa.c (warn_uninitialized_var): Remove useless local.

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

gcc/ChangeLog
gcc/tree-ssa.c

index 47ff292..79ae89c 100644 (file)
@@ -1,5 +1,14 @@
 2005-04-05  Per Bothner  <per@bothner.com>
 
+       * tree-ssa.c (execute_early_warn_uninitialized): Pass context node
+       to talk_tree as 'data' parameter, rather than EXPR_LOCUS.
+       (warn_uninit): Get EXPR_LOCUS from context now instead.
+       This fixes a USE_MAPPED_LOCATION testsuite failure.
+
+       * tree-ssa.c (warn_uninitialized_var): Remove useless local.
+
+2005-04-05  Per Bothner  <per@bothner.com>
+
        * c-decl.c (finish_function): If USE_MAPPED_LOCATION set the location
        of the artification 'return 0' in main() to BUILTINS_LOCATION.
        * tree-cfg.c (remove_bb): Check that location isn't BUILTINS_LOCATION
index 899594d..a9564b8 100644 (file)
@@ -1337,10 +1337,12 @@ struct tree_opt_pass pass_redundant_phi =
    warning text is in MSGID and LOCUS may contain a location or be null.  */
 
 static void
-warn_uninit (tree t, const char *msgid, location_t *locus)
+warn_uninit (tree t, const char *msgid, void *data)
 {
   tree var = SSA_NAME_VAR (t);
   tree def = SSA_NAME_DEF_STMT (t);
+  tree context = (tree) data;
+  location_t * locus;
 
   /* Default uses (indicated by an empty definition statement),
      are uninitialized.  */
@@ -1360,8 +1362,9 @@ warn_uninit (tree t, const char *msgid, location_t *locus)
   if (TREE_NO_WARNING (var))
     return;
 
-  if (!locus)
-    locus = &DECL_SOURCE_LOCATION (var);
+  locus = (context != NULL && EXPR_HAS_LOCATION (context)
+          ? EXPR_LOCUS (context)
+          : &DECL_SOURCE_LOCATION (var));
   warning (msgid, locus, var);
   TREE_NO_WARNING (var) = 1;
 }
@@ -1372,13 +1375,12 @@ warn_uninit (tree t, const char *msgid, location_t *locus)
 static tree
 warn_uninitialized_var (tree *tp, int *walk_subtrees, void *data)
 {
-  location_t *locus = data;
   tree t = *tp;
 
   /* We only do data flow with SSA_NAMEs, so that's all we can warn about.  */
   if (TREE_CODE (t) == SSA_NAME)
     {
-      warn_uninit (t, "%H%qD is used uninitialized in this function", locus);
+      warn_uninit (t, "%H%qD is used uninitialized in this function", data);
       *walk_subtrees = 0;
     }
   else if (IS_TYPE_OR_DECL_P (t))
@@ -1416,8 +1418,11 @@ execute_early_warn_uninitialized (void)
 
   FOR_EACH_BB (bb)
     for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
-      walk_tree (bsi_stmt_ptr (bsi), warn_uninitialized_var,
-                EXPR_LOCUS (bsi_stmt (bsi)), NULL);
+      {
+       tree context = bsi_stmt (bsi);
+       walk_tree (bsi_stmt_ptr (bsi), warn_uninitialized_var,
+                  context, NULL);
+      }
 }
 
 static void