Patchwork Go patch committed: Fix named results and recover

login
register
mail settings
Submitter Ian Taylor
Date Dec. 22, 2010, 1:23 a.m.
Message ID <mcr7hf2k3d7.fsf@google.com>
Download mbox | patch
Permalink /patch/76352/
State New
Headers show

Comments

Ian Taylor - Dec. 22, 2010, 1:23 a.m.
The code which handled functions with named results which called recover
was buggy.  It assumed that the named results for the cloned function
would be the same, but in fact each function has its own individual list
of result variables.  This patch fixes the problem.  Bootstrapped and
ran Go testsuite on x86_64-unknown-linux-gnu.  Committed to mainline.

Ian

Patch

diff -r 686314607209 go/gogo.cc
--- a/go/gogo.cc	Tue Dec 21 17:13:42 2010 -0800
+++ b/go/gogo.cc	Tue Dec 21 17:19:03 2010 -0800
@@ -2628,7 +2628,7 @@ 
 Function::swap_for_recover(Function *x)
 {
   gcc_assert(this->enclosing_ == x->enclosing_);
-  gcc_assert(this->named_results_ == x->named_results_);
+  std::swap(this->named_results_, x->named_results_);
   std::swap(this->closure_var_, x->closure_var_);
   std::swap(this->block_, x->block_);
   gcc_assert(this->location_ == x->location_);