This patch by Cherry Zhang disables escape analysis when compiling the
runtime package.  Currently the runtime is hard-coded to non-escape in
various places anyhow, and the compiler's escape analysis breaks this.
Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.  Committed
to mainline.

Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE     (revision 254475)
+++ gcc/go/gofrontend/MERGE     (working copy)
@@ -1,4 +1,4 @@
-b9885a251ae2c43252926dbe1960df5640aa469b
+1427cedcb0faa627fd89a75e009f7898c25aa86c
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: gcc/go/gofrontend/escape.cc
===================================================================
--- gcc/go/gofrontend/escape.cc (revision 254090)
+++ gcc/go/gofrontend/escape.cc (working copy)
@@ -692,6 +692,12 @@ Gogo::analyze_escape()
   if (!optimize_allocation_flag.is_enabled() || saw_errors())
     return;
 
+  // Currently runtime is hard-coded to non-escape in various places.
+  // Don't run escape analysis for runtime.
+  // TODO: remove this once it works for runtime.
+  if (this->compiling_runtime() && this->package_name() == "runtime")
+    return;
+
   // Discover strongly connected groups of functions to analyze for escape
   // information in this package.
   this->discover_analysis_sets();

Reply via email to