[PATCH] Fix verify_node_sharing
Richard Biener
rguenther@suse.de
Fri Jan 11 13:56:00 GMT 2013
For PHIs we call walk_tree with a function that expects to be
called from walk_gimple_op ...
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.
Richard.
2013-01-11 Richard Biener <rguenther@suse.de>
* tree-cfg.c (verify_node_sharing_1): Split out from ...
(verify_node_sharing): ... here.
(verify_gimple_in_cfg): Use verify_node_sharing_1 for walk_tree.
Index: gcc/tree-cfg.c
===================================================================
*** gcc/tree-cfg.c (revision 195103)
--- gcc/tree-cfg.c (working copy)
*************** tree_node_can_be_shared (tree t)
*** 4462,4474 ****
return false;
}
! /* Called via walk_gimple_stmt. Verify tree sharing. */
static tree
! verify_node_sharing (tree *tp, int *walk_subtrees, void *data)
{
! struct walk_stmt_info *wi = (struct walk_stmt_info *) data;
! struct pointer_set_t *visited = (struct pointer_set_t *) wi->info;
if (tree_node_can_be_shared (*tp))
{
--- 4482,4493 ----
return false;
}
! /* Called via walk_tree. Verify tree sharing. */
static tree
! verify_node_sharing_1 (tree *tp, int *walk_subtrees, void *data)
{
! struct pointer_set_t *visited = (struct pointer_set_t *) data;
if (tree_node_can_be_shared (*tp))
{
*************** verify_node_sharing (tree *tp, int *walk
*** 4482,4487 ****
--- 4501,4515 ----
return NULL;
}
+ /* Called via walk_gimple_stmt. Verify tree sharing. */
+
+ static tree
+ verify_node_sharing (tree *tp, int *walk_subtrees, void *data)
+ {
+ struct walk_stmt_info *wi = (struct walk_stmt_info *) data;
+ return verify_node_sharing_1 (tp, walk_subtrees, wi->info);
+ }
+
static bool eh_error_found;
static int
verify_eh_throw_stmt_node (void **slot, void *data)
*************** verify_gimple_in_cfg (struct function *f
*** 4534,4540 ****
for (i = 0; i < gimple_phi_num_args (phi); i++)
{
tree arg = gimple_phi_arg_def (phi, i);
! tree addr = walk_tree (&arg, verify_node_sharing, visited, NULL);
if (addr)
{
error ("incorrect sharing of tree nodes");
--- 4562,4569 ----
for (i = 0; i < gimple_phi_num_args (phi); i++)
{
tree arg = gimple_phi_arg_def (phi, i);
! tree addr = walk_tree (&arg, verify_node_sharing_1,
! visited, NULL);
if (addr)
{
error ("incorrect sharing of tree nodes");
More information about the Gcc-patches
mailing list