* except.c (dump_eh_tree): Dump all datastructures.
From-SVN: r145231
This commit is contained in:
parent
e38cf7336b
commit
13a9fa4483
@ -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.
|
||||
|
58
gcc/except.c
58
gcc/except.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user