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

Reply via email to