Bound_method_expression needs a closure. Stack allocate the
closure when it does not escape.
Reviewed-on: https://go-review.googlesource.com/85638
From-SVN: r256407
-584fdecefce831c3471dbd4857ba0ce0be2b5212
+d5774539b17112d9ce709a1fe722daf68eb8594f
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
Expression* ret = Expression::make_struct_composite_literal(st, vals, loc);
if (!gogo->compiling_runtime() || gogo->package_name() != "runtime")
- ret = Expression::make_heap_expression(ret, loc);
+ {
+ ret = Expression::make_heap_expression(ret, loc);
+ Node* n = Node::make_node(this);
+ if ((n->encoding() & ESCAPE_MASK) == Node::ESCAPE_NONE)
+ ret->heap_expression()->set_allocate_on_stack();
+ }
else
{
// When compiling the runtime, method closures do not escape.