Commit e7c8f755 by Ian Lance Taylor

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
parent d24c41ef
2444eb1e8c697531f8beb403679e4ab00b16dbf5 80403eb9e95c9642ebabb4d7c43deedaa763211f
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -7948,7 +7948,9 @@ Bound_method_expression::do_flatten(Gogo* gogo, Named_object*, ...@@ -7948,7 +7948,9 @@ Bound_method_expression::do_flatten(Gogo* gogo, Named_object*,
Node* n = Node::make_node(this); Node* n = Node::make_node(this);
if ((n->encoding() & ESCAPE_MASK) == Node::ESCAPE_NONE) if ((n->encoding() & ESCAPE_MASK) == Node::ESCAPE_NONE)
ret->heap_expression()->set_allocate_on_stack(); 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", go_error_at(loc, "%s escapes to heap, not allowed in runtime",
n->ast_format(gogo).c_str()); n->ast_format(gogo).c_str());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment