Commit bb0a4525 by Per Bothner Committed by Per Bothner

tree-ssa.c (execute_early_warn_uninitialized): Pass context node to talk_tree as…

tree-ssa.c (execute_early_warn_uninitialized): Pass context node to talk_tree as 'data' parameter, rather than EXPR_LOCUS.


	* 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.

From-SVN: r97644
parent 3d3c0aea
2005-04-05 Per Bothner <per@bothner.com> 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 * c-decl.c (finish_function): If USE_MAPPED_LOCATION set the location
of the artification 'return 0' in main() to BUILTINS_LOCATION. of the artification 'return 0' in main() to BUILTINS_LOCATION.
* tree-cfg.c (remove_bb): Check that location isn't BUILTINS_LOCATION * tree-cfg.c (remove_bb): Check that location isn't BUILTINS_LOCATION
......
...@@ -1337,10 +1337,12 @@ struct tree_opt_pass pass_redundant_phi = ...@@ -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. */ warning text is in MSGID and LOCUS may contain a location or be null. */
static void 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 var = SSA_NAME_VAR (t);
tree def = SSA_NAME_DEF_STMT (t); tree def = SSA_NAME_DEF_STMT (t);
tree context = (tree) data;
location_t * locus;
/* Default uses (indicated by an empty definition statement), /* Default uses (indicated by an empty definition statement),
are uninitialized. */ are uninitialized. */
...@@ -1360,8 +1362,9 @@ warn_uninit (tree t, const char *msgid, location_t *locus) ...@@ -1360,8 +1362,9 @@ warn_uninit (tree t, const char *msgid, location_t *locus)
if (TREE_NO_WARNING (var)) if (TREE_NO_WARNING (var))
return; return;
if (!locus) locus = (context != NULL && EXPR_HAS_LOCATION (context)
locus = &DECL_SOURCE_LOCATION (var); ? EXPR_LOCUS (context)
: &DECL_SOURCE_LOCATION (var));
warning (msgid, locus, var); warning (msgid, locus, var);
TREE_NO_WARNING (var) = 1; TREE_NO_WARNING (var) = 1;
} }
...@@ -1372,13 +1375,12 @@ warn_uninit (tree t, const char *msgid, location_t *locus) ...@@ -1372,13 +1375,12 @@ warn_uninit (tree t, const char *msgid, location_t *locus)
static tree static tree
warn_uninitialized_var (tree *tp, int *walk_subtrees, void *data) warn_uninitialized_var (tree *tp, int *walk_subtrees, void *data)
{ {
location_t *locus = data;
tree t = *tp; tree t = *tp;
/* We only do data flow with SSA_NAMEs, so that's all we can warn about. */ /* We only do data flow with SSA_NAMEs, so that's all we can warn about. */
if (TREE_CODE (t) == SSA_NAME) 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; *walk_subtrees = 0;
} }
else if (IS_TYPE_OR_DECL_P (t)) else if (IS_TYPE_OR_DECL_P (t))
...@@ -1416,8 +1418,11 @@ execute_early_warn_uninitialized (void) ...@@ -1416,8 +1418,11 @@ execute_early_warn_uninitialized (void)
FOR_EACH_BB (bb) FOR_EACH_BB (bb)
for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi)) 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 static void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment