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. */