Go patch committed: Look for tool build ID before hashing entire file
diff mbox series

Message ID CAOyqgcWU0Y2pyKvf2jE_8sEMHg5FsxJjpemN0MUys7MC8S5new@mail.gmail.com
State New
Headers show
Series
  • Go patch committed: Look for tool build ID before hashing entire file
Related show

Commit Message

Ian Lance Taylor Sept. 10, 2019, 2:48 a.m. UTC
This libgo patch changes the go tool to look for a tool build ID
before hashing the entire file  It also fixes the key used to store
the ID.  This is a significant speedup in go tool run time.
Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.  Committed
to mainline.

Ian

Patch
diff mbox series

Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE	(revision 275558)
+++ gcc/go/gofrontend/MERGE	(working copy)
@@ -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.
Index: libgo/go/cmd/go/internal/work/buildid.go
===================================================================
--- libgo/go/cmd/go/internal/work/buildid.go	(revision 275473)
+++ libgo/go/cmd/go/internal/work/buildid.go	(working copy)
@@ -291,14 +291,19 @@  func (b *Builder) gccgoToolID(name, lang
 				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