* except.c (dump_eh_tree): Dump all datastructures.

From-SVN: r145231
This commit is contained in:
Jan Hubicka 2009-03-29 15:18:48 +02:00 committed by Jan Hubicka
parent e38cf7336b
commit 13a9fa4483
2 changed files with 70 additions and 14 deletions

View File

@ -1,3 +1,7 @@
2009-03-29 Jan Hubicka <jh@suse.cz>
* except.c (dump_eh_tree): Dump all datastructures.
2009-03-29 Jan Hubicka <jh@suse.cz>
* except.c (duplicate_eh_regions_0): Handle AKA bitmap.

View File

@ -3860,6 +3860,7 @@ get_eh_throw_stmt_table (struct function *fun)
}
/* Dump EH information to OUT. */
void
dump_eh_tree (FILE * out, struct function *fun)
{
@ -3867,7 +3868,8 @@ dump_eh_tree (FILE *out, struct function *fun)
int depth = 0;
static const char *const type_name[] = { "unknown", "cleanup", "try", "catch",
"allowed_exceptions", "must_not_throw",
"throw"};
"throw"
};
i = fun->eh->region_tree;
if (!i)
@ -3883,6 +3885,54 @@ dump_eh_tree (FILE *out, struct function *fun)
fprintf (out, " tree_label:");
print_generic_expr (out, i->tree_label, 0);
}
switch (i->type)
{
case ERT_CLEANUP:
if (i->u.cleanup.prev_try)
fprintf (out, " prev try:%i",
i->u.cleanup.prev_try->region_number);
break;
case ERT_TRY:
{
struct eh_region *c;
fprintf (out, " catch regions:");
for (c = i->u.eh_try.eh_catch; c; c = c->u.eh_catch.next_catch)
fprintf (out, " %i", c->region_number);
}
break;
case ERT_CATCH:
if (i->u.eh_catch.prev_catch)
fprintf (out, " prev: %i",
i->u.eh_catch.prev_catch->region_number);
if (i->u.eh_catch.next_catch)
fprintf (out, " next %i",
i->u.eh_catch.next_catch->region_number);
break;
case ERT_ALLOWED_EXCEPTIONS:
fprintf (out, "filter :%i types:", i->u.allowed.filter);
print_generic_expr (out, i->u.allowed.type_list, 0);
break;
case ERT_THROW:
fprintf (out, "type:");
print_generic_expr (out, i->u.eh_throw.type, 0);
break;
case ERT_MUST_NOT_THROW:
break;
case ERT_UNKNOWN:
break;
}
if (i->aka)
{
fprintf (out, " also known as:");
dump_bitmap (out, i->aka);
}
else
fprintf (out, "\n");
/* If there are sub-regions, process them. */
if (i->inner)
@ -3893,12 +3943,14 @@ dump_eh_tree (FILE *out, struct function *fun)
/* Otherwise, step back up the tree to the next peer. */
else
{
do {
do
{
i = i->outer;
depth--;
if (i == NULL)
return;
} while (i->next_peer == NULL);
}
while (i->next_peer == NULL);
i = i->next_peer;
}
}