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 <[email protected]>
* 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. */