mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-23 18:11:15 +08:00
cgraph.h (FOR_EACH_STATIC_VARIABLE, [...]): New macros.
* cgraph.h (FOR_EACH_STATIC_VARIABLE, FOR_EACH_STATIC_INITIALIZER): New macros. (varpool_first_static_initializer, varpol_next_static_initializer): New inline functions. * ipa-reference.c (analyze_variable): Simplify. (static_execute): Use FOR_EACH_STATIC_INITIALIZER. * ipa-type-escape.c (type_escape_execute): Use FOR_EACH_STATIC_VARIABLE. From-SVN: r120070
This commit is contained in:
parent
7954dc2121
commit
68e56cc4a2
@ -1,3 +1,13 @@
|
||||
2006-12-19 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* cgraph.h (FOR_EACH_STATIC_VARIABLE, FOR_EACH_STATIC_INITIALIZER): New
|
||||
macros.
|
||||
(varpool_first_static_initializer, varpol_next_static_initializer): New
|
||||
inline functions.
|
||||
* ipa-reference.c (analyze_variable): Simplify.
|
||||
(static_execute): Use FOR_EACH_STATIC_INITIALIZER.
|
||||
* ipa-type-escape.c (type_escape_execute): Use FOR_EACH_STATIC_VARIABLE.
|
||||
|
||||
2006-12-19 Andrew Pinski <pinskia@gmail.com>
|
||||
|
||||
PR tree-opt/30045
|
||||
|
36
gcc/cgraph.h
36
gcc/cgraph.h
@ -342,6 +342,42 @@ bool varpool_analyze_pending_decls (void);
|
||||
void varpool_output_debug_info (void);
|
||||
void varpool_remove_unreferenced_decls (void);
|
||||
|
||||
/* Walk all reachable static variables. */
|
||||
#define FOR_EACH_STATIC_VARIABLE(node) \
|
||||
for ((node) = varpool_nodes_queue; (node); (node) = (node)->next_needed)
|
||||
|
||||
/* Return first reachable static variable with initializer. */
|
||||
static inline struct varpool_node *
|
||||
varpool_first_static_initializer (void)
|
||||
{
|
||||
struct varpool_node *node;
|
||||
for (node = varpool_nodes_queue; node; node = node->next_needed)
|
||||
{
|
||||
gcc_assert (TREE_CODE (node->decl) == VAR_DECL);
|
||||
if (DECL_INITIAL (node->decl))
|
||||
return node;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Return next reachable static variable with initializer after NODE. */
|
||||
static inline struct varpool_node *
|
||||
varpool_next_static_initializer (struct varpool_node *node)
|
||||
{
|
||||
for (node = node->next_needed; node; node = node->next_needed)
|
||||
{
|
||||
gcc_assert (TREE_CODE (node->decl) == VAR_DECL);
|
||||
if (DECL_INITIAL (node->decl))
|
||||
return node;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Walk all static variables with initializer set. */
|
||||
#define FOR_EACH_STATIC_INITIALIZER(node) \
|
||||
for ((node) = varpool_first_static_initializer (); (node); \
|
||||
(node) = varpool_next_static_initializer (node))
|
||||
|
||||
/* In ipa-inline.c */
|
||||
bool cgraph_decide_inlining_incrementally (struct cgraph_node *, bool);
|
||||
void cgraph_clone_inlined_nodes (struct cgraph_edge *, bool, bool);
|
||||
|
@ -774,13 +774,8 @@ static void
|
||||
analyze_variable (struct varpool_node *vnode)
|
||||
{
|
||||
tree global = vnode->decl;
|
||||
if (TREE_CODE (global) == VAR_DECL)
|
||||
{
|
||||
if (DECL_INITIAL (global))
|
||||
walk_tree (&DECL_INITIAL (global), scan_for_static_refs,
|
||||
NULL, visited_nodes);
|
||||
}
|
||||
else gcc_unreachable ();
|
||||
walk_tree (&DECL_INITIAL (global), scan_for_static_refs,
|
||||
NULL, visited_nodes);
|
||||
}
|
||||
|
||||
/* This is the main routine for finding the reference patterns for
|
||||
@ -903,7 +898,7 @@ static_execute (void)
|
||||
ipa_init ();
|
||||
|
||||
/* Process all of the variables first. */
|
||||
for (vnode = varpool_nodes_queue; vnode; vnode = vnode->next_needed)
|
||||
FOR_EACH_STATIC_INITIALIZER (vnode)
|
||||
analyze_variable (vnode);
|
||||
|
||||
/* Process all of the functions next.
|
||||
|
@ -1682,7 +1682,7 @@ type_escape_execute (void)
|
||||
ipa_init ();
|
||||
|
||||
/* Process all of the variables first. */
|
||||
for (vnode = varpool_nodes_queue; vnode; vnode = vnode->next_needed)
|
||||
FOR_EACH_STATIC_VARIABLE (vnode)
|
||||
analyze_variable (vnode);
|
||||
|
||||
/* Process all of the functions. next
|
||||
|
Loading…
x
Reference in New Issue
Block a user