On 11/1/07, Jan Hubicka <[EMAIL PROTECTED]> wrote: > Just go ahead and kill it. I would preffer to remove the whole hook, > but we still keep some non-GIMPLE expressions in static initializers :(
Yeah, that's too bad. Attached is the patch I committed, tested on x86_64. This fixes the latent bug in calls to analyze_expr that were being called with a cgraph node instead of a decl. Tested on x86_64. Diego.
2007-11-02 Diego Novillo <[EMAIL PROTECTED]> * langhooks.h (struct lang_hooks_for_callgraph): Remove third argument from function pointer ANALYZE_EXPR. Update all users. * cgraph.c (debug_cgraph_node): New. (debug_cgraph): New. Index: cgraphbuild.c =================================================================== --- cgraphbuild.c (revision 129823) +++ cgraphbuild.c (working copy) @@ -35,7 +35,7 @@ along with GCC; see the file COPYING3. Called via walk_tree: TP is pointer to tree to be examined. */ static tree -record_reference (tree *tp, int *walk_subtrees, void *data) +record_reference (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) { tree t = *tp; @@ -46,8 +46,7 @@ record_reference (tree *tp, int *walk_su { varpool_mark_needed_node (varpool_node (t)); if (lang_hooks.callgraph.analyze_expr) - return lang_hooks.callgraph.analyze_expr (tp, walk_subtrees, - data); + return lang_hooks.callgraph.analyze_expr (tp, walk_subtrees); } break; @@ -73,7 +72,7 @@ record_reference (tree *tp, int *walk_su } if ((unsigned int) TREE_CODE (t) >= LAST_AND_UNUSED_TREE_CODE) - return lang_hooks.callgraph.analyze_expr (tp, walk_subtrees, data); + return lang_hooks.callgraph.analyze_expr (tp, walk_subtrees); break; } Index: cgraph.c =================================================================== --- cgraph.c (revision 129823) +++ cgraph.c (working copy) @@ -657,7 +657,9 @@ cgraph_node_name (struct cgraph_node *no const char * const cgraph_availability_names[] = {"unset", "not_available", "overwrittable", "available", "local"}; -/* Dump given cgraph node. */ + +/* Dump call graph node NODE to file F. */ + void dump_cgraph_node (FILE *f, struct cgraph_node *node) { @@ -742,7 +744,17 @@ dump_cgraph_node (FILE *f, struct cgraph fprintf (f, "\n"); } -/* Dump the callgraph. */ + +/* Dump call graph node NODE to stderr. */ + +void +debug_cgraph_node (struct cgraph_node *node) +{ + dump_cgraph_node (stderr, node); +} + + +/* Dump the callgraph to file F. */ void dump_cgraph (FILE *f) @@ -754,7 +766,18 @@ dump_cgraph (FILE *f) dump_cgraph_node (f, node); } + +/* Dump the call graph to stderr. */ + +void +debug_cgraph (void) +{ + dump_cgraph (stderr); +} + + /* Set the DECL_ASSEMBLER_NAME and update cgraph hashtables. */ + void change_decl_assembler_name (tree decl, tree name) { Index: cgraph.h =================================================================== --- cgraph.h (revision 129823) +++ cgraph.h (working copy) @@ -288,7 +288,9 @@ extern GTY(()) int cgraph_order; /* In cgraph.c */ void dump_cgraph (FILE *); +void debug_cgraph (void); void dump_cgraph_node (FILE *, struct cgraph_node *); +void debug_cgraph_node (struct cgraph_node *); void cgraph_insert_node_to_hashtable (struct cgraph_node *node); void cgraph_remove_edge (struct cgraph_edge *); void cgraph_remove_node (struct cgraph_node *); Index: cp/cp-tree.h =================================================================== --- cp/cp-tree.h (revision 129823) +++ cp/cp-tree.h (working copy) @@ -4303,7 +4303,7 @@ extern tree cp_build_parm_decl (tree, extern tree get_guard (tree); extern tree get_guard_cond (tree); extern tree set_guard (tree); -extern tree cxx_callgraph_analyze_expr (tree *, int *, tree); +extern tree cxx_callgraph_analyze_expr (tree *, int *); extern void mark_needed (tree); extern bool decl_needed_p (tree); extern void note_vague_linkage_fn (tree); Index: cp/decl2.c =================================================================== --- cp/decl2.c (revision 129823) +++ cp/decl2.c (working copy) @@ -3026,8 +3026,7 @@ generate_ctor_and_dtor_functions_for_pri Here we must deal with member pointers. */ tree -cxx_callgraph_analyze_expr (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED, - tree from ATTRIBUTE_UNUSED) +cxx_callgraph_analyze_expr (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED) { tree t = *tp; Index: langhooks.c =================================================================== --- langhooks.c (revision 129823) +++ langhooks.c (working copy) @@ -486,8 +486,7 @@ lhd_print_error_function (diagnostic_con tree lhd_callgraph_analyze_expr (tree *tp ATTRIBUTE_UNUSED, - int *walk_subtrees ATTRIBUTE_UNUSED, - tree decl ATTRIBUTE_UNUSED) + int *walk_subtrees ATTRIBUTE_UNUSED) { return NULL; } Index: langhooks.h =================================================================== --- langhooks.h (revision 129823) +++ langhooks.h (working copy) @@ -43,9 +43,9 @@ struct lang_hooks_for_callgraph { /* The node passed is a language-specific tree node. If its contents are relevant to use of other declarations, mark them. */ - tree (*analyze_expr) (tree *, int *, tree); + tree (*analyze_expr) (tree *, int *); - /* Emmit thunks associated to function. */ + /* Emit thunks associated to function. */ void (*emit_associated_thunks) (tree); }; Index: langhooks-def.h =================================================================== --- langhooks-def.h (revision 129823) +++ langhooks-def.h (working copy) @@ -69,7 +69,7 @@ extern tree lhd_builtin_function (tree d /* Declarations of default tree inlining hooks. */ extern void lhd_initialize_diagnostics (struct diagnostic_context *); -extern tree lhd_callgraph_analyze_expr (tree *, int *, tree); +extern tree lhd_callgraph_analyze_expr (tree *, int *); /* Declarations for tree gimplification hooks. */