From: Ian Lance Taylor Date: Thu, 30 Apr 2015 17:21:29 +0000 (+0000) Subject: compiler: Mark non-escaping variables that aren't addressed. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=66286a53d5f325b1b396d0d590dfa1c6aa51cbca;p=gcc.git compiler: Mark non-escaping variables that aren't addressed. When optimizing allocations, only variables that had their address taken somewhere in the program were marked as non-escaping. There are several cases where non-addressed variables might cause extra allocations. From-SVN: r222640 --- diff --git a/gcc/go/gofrontend/escape.cc b/gcc/go/gofrontend/escape.cc index 1acd29cd70a..80f6ef6dd83 100644 --- a/gcc/go/gofrontend/escape.cc +++ b/gcc/go/gofrontend/escape.cc @@ -1560,8 +1560,7 @@ Optimize_allocations::variable(Named_object* var) if (var->is_variable()) { - if (var->var_value()->is_address_taken()) - var->var_value()->set_does_not_escape(); + var->var_value()->set_does_not_escape(); if (var->var_value()->init() != NULL && var->var_value()->init()->allocation_expression() != NULL) { @@ -1570,9 +1569,6 @@ Optimize_allocations::variable(Named_object* var) alloc->set_allocate_on_stack(); } } - else if (var->is_result_variable() - && var->result_var_value()->is_address_taken()) - var->result_var_value()->set_does_not_escape(); return TRAVERSE_CONTINUE; }