diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-08-04 00:10:35 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-08-04 00:10:35 +0000 |
commit | 8a14b86bcf047c938ba81db3e00efb6079d830df (patch) | |
tree | 768c2443a0cfaad5a295f4c64a5ccd42bd2aecc7 | |
parent | 2f9436e96c444070aa9ab9f00ac3a12b17ebfac9 (diff) | |
download | gcc-8a14b86bcf047c938ba81db3e00efb6079d830df.zip gcc-8a14b86bcf047c938ba81db3e00efb6079d830df.tar.gz gcc-8a14b86bcf047c938ba81db3e00efb6079d830df.tar.bz2 |
escape: Enable escape analysis in gccgo.
Off by default, enabled through -fgo-optimize-allocs.
Reviewed-on: https://go-review.googlesource.com/22378
From-SVN: r239109
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 | ||||
-rw-r--r-- | gcc/go/gofrontend/escape.cc | 9 | ||||
-rw-r--r-- | gcc/go/gofrontend/go.cc | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 58066bd..ba99743 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -3096ac81185edacbf800783f0f803d1c419dccdd +4ba387176e8a826dd5dd6cad4caa2f93434d0b14 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/escape.cc b/gcc/go/gofrontend/escape.cc index 6814c7e..dfe6eb2 100644 --- a/gcc/go/gofrontend/escape.cc +++ b/gcc/go/gofrontend/escape.cc @@ -14,6 +14,7 @@ #include "statements.h" #include "escape.h" #include "ast-dump.h" +#include "go-optimize.h" // class Node. @@ -678,11 +679,19 @@ Escape_note::parse_tag(std::string* tag) return encoding; } + +// The -fgo-optimize-alloc flag activates this escape analysis. + +Go_optimize optimize_allocation_flag("allocs"); + // Analyze the program flow for escape information. void Gogo::analyze_escape() { + if (!optimize_allocation_flag.is_enabled() || saw_errors()) + return; + // Discover strongly connected groups of functions to analyze for escape // information in this package. this->discover_analysis_sets(); diff --git a/gcc/go/gofrontend/go.cc b/gcc/go/gofrontend/go.cc index a0c7422..a0df2b8 100644 --- a/gcc/go/gofrontend/go.cc +++ b/gcc/go/gofrontend/go.cc @@ -112,6 +112,8 @@ go_parse_input_files(const char** filenames, unsigned int filename_count, if (only_check_syntax) return; + ::gogo->analyze_escape(); + // Export global identifiers as appropriate. ::gogo->do_exports(); |