[Bug go/80226] ICE gimple-expr.c:474 on Go function returning multiple empty struct/array values
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80226 Ian Lance Taylor changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED --- Comment #3 from Ian Lance Taylor --- Fixed. Thanks.
[Bug go/80226] ICE gimple-expr.c:474 on Go function returning multiple empty struct/array values
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80226 --- Comment #2 from ian at gcc dot gnu.org --- Author: ian Date: Tue Mar 28 20:08:31 2017 New Revision: 246553 URL: https://gcc.gnu.org/viewcvs?rev=246553=gcc=rev Log: PR go/80226 * go-gcc.cc (Gcc_backend::return_statement): Check for void_type_node when checking result size. Modified: trunk/gcc/go/ChangeLog trunk/gcc/go/go-gcc.cc
[Bug go/80226] ICE gimple-expr.c:474 on Go function returning multiple empty struct/array values
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80226 --- Comment #1 from Than McIntosh --- This seems to do the trick: diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc index ed6fc2c6105..62baa91fab8 100644 --- a/gcc/go/go-gcc.cc +++ b/gcc/go/go-gcc.cc @@ -2081,7 +2081,8 @@ Gcc_backend::return_statement(Bfunction* bfunction, // If the result size is zero bytes, we have set the function type // to have a result type of void, so don't return anything. // See the function_type method. - if (int_size_in_bytes(TREE_TYPE(result)) == 0) + tree res_type = TREE_TYPE(result); + if (res_type == void_type_node || int_size_in_bytes(res_type) == 0) { tree stmt_list = NULL_TREE; for (std::vector::const_iterator p = vals.begin();