Commit aa4d56e2 by Ian Lance Taylor

compiler: don't export bodies for functions marked "go:noinline"

    
    The current Mark_inline_candidates helper looks only at budget when
    deciding to mark a function or method as inline (with the proviso that
    IR constructs not yet supported by the inliner are given artificially
    high cost). This patch changes the helper to also look at whether a
    function has the "go:noinline" pragma; if it does have the pragma
    there is no point putting it into the export data (it will just make
    the export data bigger).
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/186923

From-SVN: r273611
parent c3550462
4df7c8d7af894ee93f50c3a50debdcf4e369a2c6 e242929304e7a524ced56dc94605bbf6d83e6489
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.
...@@ -5109,6 +5109,8 @@ int ...@@ -5109,6 +5109,8 @@ int
Mark_inline_candidates::function(Named_object* no) Mark_inline_candidates::function(Named_object* no)
{ {
Function* func = no->func_value(); Function* func = no->func_value();
if ((func->pragmas() & GOPRAGMA_NOINLINE) != 0)
return TRAVERSE_CONTINUE;
int budget = budget_heuristic; int budget = budget_heuristic;
Inline_within_budget iwb(&budget); Inline_within_budget iwb(&budget);
func->block()->traverse(&iwb); func->block()->traverse(&iwb);
...@@ -5138,6 +5140,8 @@ Mark_inline_candidates::type(Type* t) ...@@ -5138,6 +5140,8 @@ Mark_inline_candidates::type(Type* t)
Named_object* no = *p; Named_object* no = *p;
go_assert(no->is_function()); go_assert(no->is_function());
Function *func = no->func_value(); Function *func = no->func_value();
if ((func->pragmas() & GOPRAGMA_NOINLINE) != 0)
continue;
int budget = budget_heuristic; int budget = budget_heuristic;
Inline_within_budget iwb(&budget); Inline_within_budget iwb(&budget);
func->block()->traverse(&iwb); func->block()->traverse(&iwb);
......
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