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