diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index 9ad1464fe57b482c3c7a79de1048c7ec43ab1888..8032c4c6435185e5e39443dc8eed7700e340a25c 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-21cf8069ceb078de54cc43ac25c9c89bd15cba56
+5d0c788cd6099c2bb28bb0ff6a04d94006fbfca8
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc
index a5a0e5620d31da10c3be45a347e282b5d834103c..e4bd39d70423aa4f29fbcc14c69f1f04c8a91d85 100644
--- a/gcc/go/gofrontend/gogo.cc
+++ b/gcc/go/gofrontend/gogo.cc
@@ -5487,7 +5487,7 @@ Function::export_func(Export* exp, const std::string& name) const
   Block* block = NULL;
   if (this->export_for_inlining())
     block = this->block_;
-  Function::export_func_with_type(exp, name, this->type_,
+  Function::export_func_with_type(exp, name, this->type_, this->results_,
 				  this->is_method() && this->nointerface(),
 				  block, this->location_);
 }
@@ -5496,8 +5496,9 @@ Function::export_func(Export* exp, const std::string& name) const
 
 void
 Function::export_func_with_type(Export* exp, const std::string& name,
-				const Function_type* fntype, bool nointerface,
-				Block* block, Location loc)
+				const Function_type* fntype,
+				Function::Results* result_vars,
+				bool nointerface, Block* block, Location loc)
 {
   exp->write_c_string("func ");
 
@@ -5549,31 +5550,45 @@ Function::export_func_with_type(Export* exp, const std::string& name,
     }
   exp->write_c_string(")");
 
-  const Typed_identifier_list* results = fntype->results();
-  if (results != NULL)
+  const Typed_identifier_list* result_decls = fntype->results();
+  if (result_decls != NULL)
     {
-      if (results->size() == 1 && results->begin()->name().empty())
+      if (result_decls->size() == 1
+	  && result_decls->begin()->name().empty()
+	  && block == NULL)
 	{
 	  exp->write_c_string(" ");
-	  exp->write_type(results->begin()->type());
+	  exp->write_type(result_decls->begin()->type());
 	}
       else
 	{
 	  exp->write_c_string(" (");
 	  bool first = true;
-	  for (Typed_identifier_list::const_iterator p = results->begin();
-	       p != results->end();
-	       ++p)
+	  Results::const_iterator pr;
+	  if (result_vars != NULL)
+	    pr = result_vars->begin();
+	  for (Typed_identifier_list::const_iterator pd = result_decls->begin();
+	       pd != result_decls->end();
+	       ++pd)
 	    {
 	      if (first)
 		first = false;
 	      else
 		exp->write_c_string(", ");
-	      exp->write_name(p->name());
-	      exp->write_escape(p->note());
+	      // We only use pr->name, which may be artificial, if
+	      // need it for inlining.
+	      if (block == NULL || result_vars == NULL)
+		exp->write_name(pd->name());
+	      else
+		exp->write_name((*pr)->name());
+	      exp->write_escape(pd->note());
 	      exp->write_c_string(" ");
-	      exp->write_type(p->type());
+	      exp->write_type(pd->type());
+	      if (result_vars != NULL)
+		++pr;
 	    }
+	  if (result_vars != NULL)
+	    go_assert(pr == result_vars->end());
 	  exp->write_c_string(")");
 	}
     }
diff --git a/gcc/go/gofrontend/gogo.h b/gcc/go/gofrontend/gogo.h
index 854d37a6333391e70e203a49a8c45111e870ce78..0331ccacee33a327e8ec01ac16ab7541ed705da9 100644
--- a/gcc/go/gofrontend/gogo.h
+++ b/gcc/go/gofrontend/gogo.h
@@ -1513,8 +1513,8 @@ class Function
   // Export a function with a type.
   static void
   export_func_with_type(Export*, const std::string& name,
-			const Function_type*, bool nointerface, Block* block,
-			Location);
+			const Function_type*, Results*, bool nointerface,
+			Block* block, Location);
 
   // Import a function.
   static void
@@ -1740,7 +1740,7 @@ class Function_declaration
   void
   export_func(Export* exp, const std::string& name) const
   {
-    Function::export_func_with_type(exp, name, this->fntype_,
+    Function::export_func_with_type(exp, name, this->fntype_, NULL,
 				    this->is_method() && this->nointerface(),
 				    NULL, this->location_);
   }