From: Ian Lance Taylor Date: Sat, 31 Aug 2019 02:56:55 +0000 (+0000) Subject: compiler: don't report runtime escapes if we've seen errors X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e7c8f75569e792f81a4f4ceee4e1b20f2544e7a4;p=gcc.git compiler: don't report runtime escapes if we've seen errors 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 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index c8605ec685d..888e96d1911 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -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. diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 939a5f7f374..4db4e4a59bf 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -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());