diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2019-09-10 02:48:24 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2019-09-10 02:48:24 +0000 |
commit | c96fc0812393c3e2744232c1f6e248776628397f (patch) | |
tree | 50a15ac8527d9faca731fd6589e21f35c950b300 | |
parent | 5447e8e2e249a12b0f22ccfb171ccc8fff9fcadc (diff) | |
download | gcc-c96fc0812393c3e2744232c1f6e248776628397f.zip gcc-c96fc0812393c3e2744232c1f6e248776628397f.tar.gz gcc-c96fc0812393c3e2744232c1f6e248776628397f.tar.bz2 |
cmd/go: look for tool build ID before hashing entire file
Also fix the key used to store the ID.
This is a significant speedup in cmd/go run time.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/194257
From-SVN: r275559
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 | ||||
-rw-r--r-- | libgo/go/cmd/go/internal/work/buildid.go | 13 |
2 files changed, 10 insertions, 5 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index a762d6b..183dac5 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -5c3f52ffbae7a9bb59bce63cd2cffdd8af8f4a92 +68038b4fdf1456482af986cb05dcf3121bd43ffc The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/go/cmd/go/internal/work/buildid.go b/libgo/go/cmd/go/internal/work/buildid.go index 1f6d1e8..5ff9337 100644 --- a/libgo/go/cmd/go/internal/work/buildid.go +++ b/libgo/go/cmd/go/internal/work/buildid.go @@ -291,14 +291,19 @@ func (b *Builder) gccgoToolID(name, language string) (string, error) { exe = lp } } - if _, err := os.Stat(exe); err != nil { - return "", fmt.Errorf("%s: can not find compiler %q: %v; output %q", name, exe, err, out) + id, err = buildid.ReadFile(exe) + if err != nil { + return "", err + } + + // If we can't find a build ID, use a hash. + if id == "" { + id = b.fileHash(exe) } - id = b.fileHash(exe) } b.id.Lock() - b.toolIDCache[name] = id + b.toolIDCache[key] = id b.id.Unlock() return id, nil |