summaryrefslogtreecommitdiff
path: root/gcc/ipa-struct-reorg.c
diff options
context:
space:
mode:
authorolga <olga@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-13 18:59:44 +0000
committerolga <olga@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-13 18:59:44 +0000
commit471df436dc53f7252a708e7d5074c0557cdd1509 (patch)
treefa6de40f7de525d6e1d8d3892bd35771817b56cf /gcc/ipa-struct-reorg.c
parent5f76c0f89783405dfce1f14155e2ebf13ec5160a (diff)
downloadgcc-471df436dc53f7252a708e7d5074c0557cdd1509.tar.gz
Fogot to commit ipa-struct-reorg.c
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130906 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa-struct-reorg.c')
-rw-r--r--gcc/ipa-struct-reorg.c92
1 files changed, 77 insertions, 15 deletions
diff --git a/gcc/ipa-struct-reorg.c b/gcc/ipa-struct-reorg.c
index 1985cec5e2a..be60a21e46f 100644
--- a/gcc/ipa-struct-reorg.c
+++ b/gcc/ipa-struct-reorg.c
@@ -2010,7 +2010,15 @@ is_candidate (tree var, tree *type_p, VEC (tree, heap) **unsuitable_types)
else
{
if (initialized && unsuitable_types && *unsuitable_types)
- add_unsuitable_type (unsuitable_types, type);
+ {
+ if (dump_file)
+ {
+ fprintf (dump_file, "The type ");
+ print_generic_expr (dump_file, type, 0);
+ fprintf (dump_file, " is initialized...Excluded.");
+ }
+ add_unsuitable_type (unsuitable_types, type);
+ }
*type_p = type;
return true;
}
@@ -2437,7 +2445,15 @@ get_stmt_accesses (tree *tp, int *walk_subtrees, void *data)
unsigned i = find_structure (type);
if (i != VEC_length (structure, structures))
- remove_structure (i);
+ {
+ if (dump_file)
+ {
+ fprintf (dump_file, "\nThe type ");
+ print_generic_expr (dump_file, type, 0);
+ fprintf (dump_file, " has bitfield.");
+ }
+ remove_structure (i);
+ }
}
break;
@@ -2476,6 +2492,15 @@ get_stmt_accesses (tree *tp, int *walk_subtrees, void *data)
we can deal with. */
if (!decompose_access (str->decl, acc))
{
+ if (dump_file)
+ {
+ fprintf (dump_file, "\nThe type ");
+ print_generic_expr (dump_file, type, 0);
+ fprintf (dump_file,
+ " has complicate access in statement ");
+ print_generic_stmt (dump_file, stmt, 0);
+ }
+
remove_structure (i);
free (acc);
}
@@ -3056,7 +3081,14 @@ safe_cond_expr_check (void **slot, void *data)
if (TREE_CODE (acc->stmt) == COND_EXPR)
{
if (!is_safe_cond_expr (acc->stmt))
- remove_structure (*(unsigned *) data);
+ {
+ if (dump_file)
+ {
+ fprintf (dump_file, "\nUnsafe conditional statement ");
+ print_generic_stmt (dump_file, acc->stmt, 0);
+ }
+ remove_structure (*(unsigned *) data);
+ }
}
return 1;
}
@@ -3469,7 +3501,15 @@ collect_alloc_sites (void)
add_alloc_site (node->decl, stmt, str);
}
else
- remove_structure (i);
+ {
+ if (dump_file)
+ {
+ fprintf (dump_file,
+ "\nUnsupported allocation function ");
+ print_generic_stmt (dump_file, stmt, 0);
+ }
+ remove_structure (i);
+ }
}
}
}
@@ -3682,8 +3722,17 @@ dump_new_types (void)
" this optimization:\n");
for (i = 0; VEC_iterate (structure, structures, i, str); i++)
- for (j = 0; VEC_iterate (tree, str->new_types, j, type); j++)
- dump_struct_type (type, 2, 0);
+ {
+ if (dump_file)
+ {
+ fprintf (dump_file, "\nFor type ");
+ dump_struct_type (str->decl, 2, 0);
+ fprintf (dump_file, "\nthe number of new types is %d\n",
+ VEC_length (tree, str->new_types));
+ }
+ for (j = 0; VEC_iterate (tree, str->new_types, j, type); j++)
+ dump_struct_type (type, 2, 0);
+ }
}
/* This function creates new types to replace old structure types. */
@@ -3743,13 +3792,6 @@ collect_structures (void)
remove_unsuitable_types (unsuitable_types);
VEC_free (tree, heap, unsuitable_types);
-
- if (!VEC_length (structure, structures))
- {
- if (dump_file)
- fprintf (dump_file, "\nNo structures to transform. Exiting...");
- return;
- }
}
/* Collect structure allocation sites. In case of arrays
@@ -3814,7 +3856,15 @@ exclude_cold_structs (void)
/* Remove cold structures from structures vector. */
for (i = 0; VEC_iterate (structure, structures, i, str); i++)
if (str->count * 100 < (hotest * STRUCT_REORG_COLD_STRUCT_RATIO))
- remove_structure (i);
+ {
+ if (dump_file)
+ {
+ fprintf (dump_file, "\nThe structure ");
+ print_generic_expr (dump_file, str->decl, 0);
+ fprintf (dump_file, " is cold.");
+ }
+ remove_structure (i);
+ }
}
/* This function decomposes original structure into substructures,
@@ -3839,7 +3889,19 @@ do_reorg (void)
{
/* Check that there is a work to do. */
if (!VEC_length (structure, structures))
- return;
+ {
+ if (dump_file)
+ fprintf (dump_file, "\nNo structures to transform. Exiting...");
+ return;
+ }
+ else
+ {
+ if (dump_file)
+ {
+ fprintf (dump_file, "\nNumber of structures to transform is %d",
+ VEC_length (structure, structures));
+ }
+ }
/* Generate new types. */
create_new_types ();