I noticed that the function decls for builtin functions were all being
marked as varargs.  This perplexing problem turned out to be due to
void_list_node not being initialized when the builtin functions were
declared.  Why the frontend needs to initialize void_list_node is beyond
me, but I'm not going to change that today.  This patch fixes the
problem.  Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu.
Committed to mainline.

Ian


2012-01-11  Ian Lance Taylor  <i...@google.com>

        * go-lang.c (go_langhook_init): Initialize void_list_node before
        calling go_create_gogo.


Index: go-lang.c
===================================================================
--- go-lang.c	(revision 183096)
+++ go-lang.c	(working copy)
@@ -88,6 +88,9 @@ go_langhook_init (void)
 {
   build_common_tree_nodes (false, false);
 
+  /* I don't know why this has to be done explicitly.  */
+  void_list_node = build_tree_list (NULL_TREE, void_type_node);
+
   /* We must create the gogo IR after calling build_common_tree_nodes
      (because Gogo::define_builtin_function_trees refers indirectly
      to, e.g., unsigned_char_type_node) but before calling
@@ -97,9 +100,6 @@ go_langhook_init (void)
 
   build_common_builtin_nodes ();
 
-  /* I don't know why this is not done by any of the above.  */
-  void_list_node = build_tree_list (NULL_TREE, void_type_node);
-
   /* The default precision for floating point numbers.  This is used
      for floating point constants with abstract type.  This may
      eventually be controllable by a command line option.  */

Reply via email to