/* Type based alias analysis.
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
Contributed by Kenneth Zadeck <zadeck@naturalbridge.com>
This file is part of GCC.
static tree
discover_unique_type (tree type)
{
- struct type_brand_s * brand = xmalloc (sizeof (struct type_brand_s));
+ struct type_brand_s * brand = XNEW (struct type_brand_s);
int i = 0;
splay_tree_node result;
switch (TREE_CODE (type))
{
case BOOLEAN_TYPE:
- case CHAR_TYPE:
case COMPLEX_TYPE:
case ENUMERAL_TYPE:
case INTEGER_TYPE:
get_canon_type_uid (type, true, false));
}
-/* Return true a modification to a field of type FIELD_TYPE cannot
+/* Return true if a modification to a field of type FIELD_TYPE cannot
clobber a record of RECORD_TYPE. */
bool
if (vnode->externally_visible)
mark_interesting_type (type, FULL_ESCAPE);
- if (TREE_CODE (global) == VAR_DECL)
- {
- if (DECL_INITIAL (global))
- walk_tree (&DECL_INITIAL (global), scan_for_refs,
- NULL, visited_nodes);
- }
- else abort();
+ gcc_assert (TREE_CODE (global) == VAR_DECL);
+
+ if (DECL_INITIAL (global))
+ walk_tree (&DECL_INITIAL (global), scan_for_refs, NULL, visited_nodes);
}
/* This is the main routine for finding the reference patterns for
\f
/* The main entry point for type escape analysis. */
-static void
+static unsigned int
type_escape_execute (void)
{
struct cgraph_node *node;
result = splay_tree_successor (all_canon_types, (splay_tree_key) key);
}
-/* { */
-/* FILE * tmp = dump_file; */
-/* dump_file = stderr; */
if (dump_file)
{
EXECUTE_IF_SET_IN_BITMAP (global_types_seen, 0, i, bi)
fprintf(dump_file, " contained\n");
}
}
-/* dump_file = tmp; */
-/* } */
/* Get rid of uid_to_addressof_up_map and its bitmaps. */
result = splay_tree_min (uid_to_addressof_up_map);
BITMAP_FREE (been_there_done_that);
BITMAP_FREE (bitmap_tmp);
BITMAP_FREE (results_of_malloc);
+ return 0;
}
static bool