From 1f599d751ecacf9bcec4fe5ebaaaa1891d1b820e Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Tue, 28 Mar 2017 20:08:31 +0000 Subject: [PATCH] re PR go/80226 (ICE gimple-expr.c:474 on Go function returning multiple empty struct/array values) PR go/80226 * go-gcc.cc (Gcc_backend::return_statement): Check for void_type_node when checking result size. From-SVN: r246553 --- gcc/go/ChangeLog | 6 ++++++ gcc/go/go-gcc.cc | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index 8958f762fcf..55d78efd947 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,9 @@ +2017-03-28 Than McIntosh + + PR go/80226 + * go-gcc.cc (Gcc_backend::return_statement): Check for + void_type_node when checking result size. + 2017-02-20 Ian Lance Taylor PR go/79642 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(); -- 2.30.2