compiler: don't report runtime escapes if we've seen errors
authorIan Lance Taylor <ian@gcc.gnu.org>
Sat, 31 Aug 2019 02:56:55 +0000 (02:56 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Sat, 31 Aug 2019 02:56:55 +0000 (02:56 +0000)
    If we get errors during compilation, we skip the escape analysis pass.
    If we are compiling the runtime package, we report an error if a bound
    method expression escapes.  The effect is that if we get an error
    while compiling the runtime package, we would report confusing and
    meaningless errors about bound method expressions escaping.

    This CL stops doing that.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192720

From-SVN: r275238

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc

index c8605ec685d9c08d4b4035e11aad7a4e8c044c46..888e96d1911aec68d9e20070a3958d2f930d665d 100644 (file)
@@ -1,4 +1,4 @@
-2444eb1e8c697531f8beb403679e4ab00b16dbf5
+80403eb9e95c9642ebabb4d7c43deedaa763211f
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 939a5f7f3748a5da54d5217108dc4a2cfadec0fd..4db4e4a59bfd73bb591970915fc12cb49e0c9651 100644 (file)
@@ -7948,7 +7948,9 @@ Bound_method_expression::do_flatten(Gogo* gogo, Named_object*,
   Node* n = Node::make_node(this);
   if ((n->encoding() & ESCAPE_MASK) == Node::ESCAPE_NONE)
     ret->heap_expression()->set_allocate_on_stack();
-  else if (gogo->compiling_runtime() && gogo->package_name() == "runtime")
+  else if (gogo->compiling_runtime()
+          && gogo->package_name() == "runtime"
+          && !saw_errors())
     go_error_at(loc, "%s escapes to heap, not allowed in runtime",
                 n->ast_format(gogo).c_str());