dashboard, cmd/release: remove what's unused as of Go 1.16 release

We can drop the 32-bit and 10.11 macOS builders, they're unused.

Remove FreeBSD 11.1 builder, it's unused.
Update freebsd-amd64-race to use the latest available FreeBSD builder.

Simplify build policy and comments, removing anything that mentioned
Go version 1.14 or older, since they're not relevant anymore.

Drop Go 1.14 support from minSupportedMacOSVersion, and add support
for the future Go 1.17 release, which will increase minimum macOS
version requirement to macOS 10.13.

Fixes golang/go#40562.

Change-Id: I7beeec0952a516afe99a5154b22c7f25ceeb3da1
Reviewed-on: https://go-review.googlesource.com/c/build/+/293771
Trust: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Alexander Rakoczy <alex@golang.org>
diff --git a/cmd/release/release.go b/cmd/release/release.go
index 7680406..bf28b68 100644
--- a/cmd/release/release.go
+++ b/cmd/release/release.go
@@ -260,19 +260,6 @@
 		Arch:    "arm64",
 		Builder: "linux-arm64-packet",
 	},
-	{
-		GoQuery: "< go1.15",
-		OS:      "freebsd",
-		Arch:    "386",
-		Builder: "freebsd-386-11_1",
-	},
-	{
-		GoQuery: "< go1.15",
-		OS:      "freebsd",
-		Arch:    "amd64",
-		Race:    true,
-		Builder: "freebsd-amd64-11_1",
-	},
 
 	// Test-only builds.
 	{
@@ -864,7 +851,7 @@
 }
 
 // checkRelocations runs readelf on pkg/linux_amd64/runtime/cgo.a and makes sure
-// we don't see R_X86_64_REX_GOTPCRELX in new Go 1.15 and Go 1.14 minor releases.
+// we don't see R_X86_64_REX_GOTPCRELX in new Go 1.15 minor releases.
 // See golang.org/issue/31293 and golang.org/issue/40561#issuecomment-731482962.
 func (b *Build) checkRelocations(client *buildlet.Client) error {
 	if b.OS != "linux" || b.Arch != "amd64" || b.TestOnly {
@@ -895,8 +882,7 @@
 		if !strings.Contains(got, "R_X86_64_REX_GOTPCRELX") {
 			return fmt.Errorf("%s did not contain a R_X86_64_REX_GOTPCRELX relocation; remoteErr=%v, %s", file, remoteErr, got)
 		}
-	case strings.HasPrefix(*version, "go1.15"),
-		strings.HasPrefix(*version, "go1.14"):
+	case strings.HasPrefix(*version, "go1.15"):
 		if strings.Contains(got, "R_X86_64_REX_GOTPCRELX") {
 			return fmt.Errorf("%s contained a R_X86_64_REX_GOTPCRELX relocation", file)
 		}
@@ -1012,12 +998,12 @@
 	// TODO(amedee,dmitshur,golang.org/issue/40558): Use a version package to compare versions of Go.
 
 	// The minimum supported version of macOS with each version of go:
-	// go1.14 - macOS 10.11
 	// go1.15 - macOS 10.12
 	// go1.16 - macOS 10.12
-	minMacVersion := "10.12"
-	if match("< go1.15", goVer) {
-		minMacVersion = "10.11"
+	// go1.17 - macOS 10.13
+	minMacVersion := "10.13"
+	if match("< go1.17beta1", goVer) {
+		minMacVersion = "10.12"
 		return minMacVersion
 	}
 	return minMacVersion
@@ -1031,18 +1017,17 @@
 	switch query {
 	case "": // A special case to make the zero Build.GoQuery value useful.
 		return true
+	case "< go1.17beta1":
+		return strings.HasPrefix(goVer, "go1.16") || strings.HasPrefix(goVer, "go1.15")
 	case ">= go1.16beta1":
-		return !strings.HasPrefix(goVer, "go1.15") && !strings.HasPrefix(goVer, "go1.14")
+		return !strings.HasPrefix(goVer, "go1.15")
 	case "< go1.16beta1":
-		return strings.HasPrefix(goVer, "go1.15") || strings.HasPrefix(goVer, "go1.14")
+		return strings.HasPrefix(goVer, "go1.15")
 	case ">= go1.15rc2":
 		// By the time this code is added, Go 1.15 RC 1 has already been released and
 		// won't be modified, that's why we only care about matching RC 2 and onwards.
 		// (We could've just done ">= go1.15", but that could be misleading in future.)
-		return goVer != "go1.15rc1" && !strings.HasPrefix(goVer, "go1.15beta") &&
-			!strings.HasPrefix(goVer, "go1.14")
-	case "< go1.15":
-		return strings.HasPrefix(goVer, "go1.14")
+		return goVer != "go1.15rc1" && !strings.HasPrefix(goVer, "go1.15beta")
 	default:
 		panic(fmt.Errorf("match: query %q is not supported", query))
 	}
diff --git a/cmd/release/release_test.go b/cmd/release/release_test.go
index a980221..4c87bf1 100644
--- a/cmd/release/release_test.go
+++ b/cmd/release/release_test.go
@@ -27,7 +27,7 @@
 					t.Errorf("build %v uses an unsupported version query:\n%v", b, err)
 				}
 			}()
-			match(b.GoQuery, "go1.14.6") // Shouldn't panic for any b.GoQuery.
+			match(b.GoQuery, "go1.15.6") // Shouldn't panic for any b.GoQuery.
 		})
 	}
 }
@@ -45,14 +45,16 @@
 		goVer     string
 		wantMacOS string
 	}{
-		{"go1.14", "10.11"},
-		{"go1.14.14", "10.11"},
 		{"go1.15", "10.12"},
 		{"go1.15.7", "10.12"},
 		{"go1.16beta1", "10.12"},
 		{"go1.16rc1", "10.12"},
 		{"go1.16", "10.12"},
 		{"go1.16.1", "10.12"},
+		{"go1.17beta1", "10.13"},
+		{"go1.17rc1", "10.13"},
+		{"go1.17", "10.13"},
+		{"go1.17.2", "10.13"},
 	}
 	for _, tc := range testCases {
 		t.Run(tc.goVer, func(t *testing.T) {
@@ -80,23 +82,18 @@
 		target      string
 		wantBuilder string
 	}{
-		// Go 1.15.x and 1.14.x still use the Jessie builders.
-		{"go1.14.55", "linux-amd64", "linux-amd64-jessie"},
+		// Go 1.15.x still uses the Jessie builders.
 		{"go1.15.55", "linux-386", "linux-386-jessie"},
 		// Go 1.16 starts to use the the Stretch builders.
 		{"go1.16", "linux-amd64", "linux-amd64-stretch"},
 		{"go1.16", "linux-386", "linux-386-stretch"},
 
-		// Go 1.15.x and 1.14.x still use the Packet and Scaleway builders.
-		{"go1.14.55", "linux-arm64", "linux-arm64-packet"},
+		// Go 1.15.x still uses the Packet and Scaleway builders.
 		{"go1.15.55", "linux-armv6l", "linux-arm"},
 		// Go 1.16 starts to use the the AWS builders.
 		{"go1.16", "linux-arm64", "linux-arm64-aws"},
 		{"go1.16", "linux-armv6l", "linux-arm-aws"},
 
-		// Go 1.14.x still use the FreeBSD 11.1 builder.
-		{"go1.14.55", "freebsd-amd64", "freebsd-amd64-11_1"},
-		{"go1.14.55", "freebsd-386", "freebsd-386-11_1"},
 		// Go 1.15 RC 2+ starts to use the the FreeBSD 11.2 builder.
 		{"go1.15rc2", "freebsd-amd64", "freebsd-amd64-11_2"},
 		{"go1.15rc2", "freebsd-386", "freebsd-386-11_2"},
diff --git a/dashboard/builders.go b/dashboard/builders.go
index bd0f943..d99c814 100644
--- a/dashboard/builders.go
+++ b/dashboard/builders.go
@@ -25,7 +25,6 @@
 // syntax entirely. This is a first draft.
 var slowBotAliases = map[string]string{
 	// Known missing builders:
-	"darwin-arm":    "", // TODO(golang.org/issue/37611): Remove once port is removed.
 	"ios-amd64":     "", // There is no builder for the iOS Simulator. See issues 42100 and 42177.
 	"windows-arm64": "", // TODO(golang.org/issue/42604): Add builder for windows/arm64.
 
@@ -40,7 +39,6 @@
 	"arm":            "linux-arm",
 	"arm64":          "linux-arm64-packet",
 	"darwin":         "darwin-amd64-10_14",
-	"darwin-386":     "darwin-386-10_14", // TODO(golang.org/issue/37610): Remove when Go 1.14 is no longer supported.
 	"darwin-amd64":   "darwin-amd64-10_14",
 	"darwin-arm64":   "darwin-arm64-11_0-toothrot",
 	"ios-arm64":      "ios-arm64-corellium",
@@ -298,24 +296,6 @@
 		env:         []string{"GOROOT_BOOTSTRAP=/usr/local/go"},
 		OwnerGithub: "4a6f656c",
 	},
-	"host-freebsd-11_1": &HostConfig{
-		VMImage:            "freebsd-amd64-111-b",
-		Notes:              "FreeBSD 11.1; GCE VM is built from script in build/env/freebsd-amd64",
-		machineType:        "n1-highcpu-4",
-		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.freebsd-amd64",
-		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-freebsd-amd64.tar.gz",
-		env:                []string{"CC=clang"},
-		SSHUsername:        "gopher",
-	},
-	"host-freebsd-11_1-big": &HostConfig{
-		VMImage:            "freebsd-amd64-111-b",
-		Notes:              "Same as host-freebsd-11_1, but on n1-highcpu-16",
-		machineType:        "n1-highcpu-16", // 16 vCPUs, 14.4 GB mem
-		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.freebsd-amd64",
-		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-freebsd-amd64.tar.gz",
-		env:                []string{"CC=clang"},
-		SSHUsername:        "gopher",
-	},
 	"host-freebsd-11_2": &HostConfig{
 		VMImage:            "freebsd-amd64-112",
 		Notes:              "FreeBSD 11.2; GCE VM is built from script in build/env/freebsd-amd64",
@@ -332,6 +312,14 @@
 		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-freebsd-amd64.tar.gz",
 		SSHUsername:        "gopher",
 	},
+	"host-freebsd-12_0-big": &HostConfig{
+		VMImage:            "freebsd-amd64-120-v1",
+		Notes:              "Same as host-freebsd-12_0, but on n1-highcpu-16",
+		machineType:        "n1-highcpu-16", // 16 vCPUs, 14.4 GB mem
+		buildletURLTmpl:    "https://storage.googleapis.com/$BUCKET/buildlet.freebsd-amd64",
+		goBootstrapURLTmpl: "https://storage.googleapis.com/$BUCKET/go1.4-freebsd-amd64.tar.gz",
+		SSHUsername:        "gopher",
+	},
 	"host-netbsd-amd64-9_0": &HostConfig{
 		VMImage:            "netbsd-amd64-9-0-2019q4",
 		Notes:              "NetBSD 9.0; GCE VM is built from script in build/env/netbsd-amd64",
@@ -472,19 +460,9 @@
 		OwnerGithub: "zx2c4",
 		env:         []string{"GOROOT_BOOTSTRAP=C:\\Program Files (Arm)\\Go"},
 	},
-	"host-darwin-10_11": &HostConfig{
-		IsReverse: true,
-		ExpectNum: 3,
-		Notes:     "MacStadium OS X 10.11 VM under VMWare ESXi",
-		env: []string{
-			"GOROOT_BOOTSTRAP=/Users/gopher/go1.4",
-		},
-		SSHUsername:     "gopher",
-		HermeticReverse: false, // TODO: make it so, like 10.12
-	},
 	"host-darwin-10_12": &HostConfig{
 		IsReverse: true,
-		ExpectNum: 4,
+		ExpectNum: 5,
 		Notes:     "MacStadium OS X 10.12 VM under VMWare ESXi",
 		env: []string{
 			"GOROOT_BOOTSTRAP=/Users/gopher/go1.4",
@@ -494,7 +472,7 @@
 	},
 	"host-darwin-10_14": &HostConfig{
 		IsReverse: true,
-		ExpectNum: 6,
+		ExpectNum: 7,
 		Notes:     "MacStadium macOS Mojave (10.14) VM under VMWare ESXi",
 		env: []string{
 			"GOROOT_BOOTSTRAP=/Users/gopher/goboot", // Go 1.12.1
@@ -504,7 +482,7 @@
 	},
 	"host-darwin-10_15": &HostConfig{
 		IsReverse: true,
-		ExpectNum: 6,
+		ExpectNum: 7,
 		Notes:     "MacStadium macOS Catalina (10.15) VM under VMWare ESXi",
 		env: []string{
 			"GOROOT_BOOTSTRAP=/Users/gopher/goboot", // Go 1.12.1
@@ -1489,19 +1467,6 @@
 
 func init() {
 	addBuilder(BuildConfig{
-		Name:     "freebsd-amd64-11_1",
-		HostType: "host-freebsd-11_1",
-		tryBot:   nil,
-		buildsRepo: func(repo, branch, goBranch string) bool {
-			// This builder is unfortunately still used by Go 1.14 and 1.13,
-			// so keep it around a bit longer. See golang.org/issue/40563.
-			// Test relevant Go versions so that we're better informed.
-			return atMostGo1(goBranch, 14) && buildRepoByDefault(repo)
-		},
-		distTestAdjust:    fasterTrybots,
-		numTryTestHelpers: 4,
-	})
-	addBuilder(BuildConfig{
 		Name:              "freebsd-amd64-11_2",
 		HostType:          "host-freebsd-11_2",
 		tryBot:            explicitTrySet("sys"),
@@ -1526,19 +1491,7 @@
 	})
 	addBuilder(BuildConfig{
 		Name:     "freebsd-amd64-race",
-		HostType: "host-freebsd-11_1-big", // TODO(golang.org/issue/40562): Update to newer FreeBSD.
-	})
-	addBuilder(BuildConfig{
-		Name:           "freebsd-386-11_1",
-		HostType:       "host-freebsd-11_1",
-		distTestAdjust: noTestDirAndNoReboot,
-		buildsRepo: func(repo, branch, goBranch string) bool {
-			// This builder is unfortunately still used by Go 1.14 and 1.13,
-			// so keep it around a bit longer. See golang.org/issue/40563.
-			// Test relevant Go versions so that we're better informed.
-			return atMostGo1(goBranch, 14) && buildRepoByDefault(repo)
-		},
-		env: []string{"GOARCH=386", "GOHOSTARCH=386"},
+		HostType: "host-freebsd-12_0-big",
 	})
 	addBuilder(BuildConfig{
 		Name:           "freebsd-386-11_2",
@@ -1578,7 +1531,7 @@
 		Notes: "GO386=387",
 		buildsRepo: func(repo, branch, goBranch string) bool {
 			// GO386=387 is removed in Go 1.16 (golang.org/issue/40255).
-			// It's still supported in Go 1.15 and 1.14.
+			// It's still supported in Go 1.15.
 			return atMostGo1(goBranch, 15) && (repo == "go" || repo == "crypto")
 		},
 		HostType: "host-linux-jessie",
@@ -1645,7 +1598,7 @@
 	addMiscCompile := func(suffix, rx string) { addMiscCompileGo1(0, suffix, rx) }
 
 	addMiscCompile("-linuxarm", "^linux-arm")                // 2: arm, arm64
-	addMiscCompile("-darwin", "^darwin-(386|amd64)$")        // 1: amd64 (in Go 1.14: 386, amd64)
+	addMiscCompile("-darwin", "^darwin-(386|amd64)$")        // 1: amd64
 	addMiscCompileGo1(16, "-darwinarm64", "^darwin-arm64$")  // 1: arm64 (for Go 1.16 and newer)
 	addMiscCompile("-mips", "^linux-mips")                   // 4: mips, mipsle, mips64, mips64le
 	addMiscCompile("-ppc", "^(linux-ppc64|aix-)")            // 3: linux-ppc64{,le}, aix-ppc64
@@ -2014,7 +1967,7 @@
 		HostType:       "host-openbsd-386-62",
 		distTestAdjust: noTestDirAndNoReboot,
 		buildsRepo: func(repo, branch, goBranch string) bool {
-			// This builder is unfortunately still used by Go 1.15 and 1.14,
+			// This builder is unfortunately still used by Go 1.15,
 			// so keep it around a bit longer. See golang.org/issue/42426.
 			return atMostGo1(goBranch, 15) && buildRepoByDefault(repo)
 		},
@@ -2031,7 +1984,7 @@
 		HostType:       "host-openbsd-amd64-62",
 		distTestAdjust: noTestDirAndNoReboot,
 		buildsRepo: func(repo, branch, goBranch string) bool {
-			// This builder is unfortunately still used by Go 1.15 and 1.14,
+			// This builder is unfortunately still used by Go 1.15,
 			// so keep it around a bit longer. See golang.org/issue/42426.
 			return atMostGo1(goBranch, 15) && buildRepoByDefault(repo)
 		},
@@ -2266,29 +2219,6 @@
 			"GO_TEST_TIMEOUT_SCALE=3"},
 	})
 	addBuilder(BuildConfig{
-		Name:     "darwin-amd64-10_11",
-		HostType: "host-darwin-10_11",
-		tryBot:   nil, // disabled until Macs fixed; https://golang.org/issue/23859
-		buildsRepo: func(repo, branch, goBranch string) bool {
-			// Go 1.14 is the last release that will run on macOS 10.11 El Capitan.
-			// (See https://golang.org/doc/go1.14#darwin.)
-			return repo == "go" && atMostGo1(branch, 14)
-		},
-		distTestAdjust:    macTestPolicy,
-		numTryTestHelpers: 3,
-	})
-	addBuilder(BuildConfig{
-		Name:           "darwin-386-10_14",
-		HostType:       "host-darwin-10_14",
-		distTestAdjust: macTestPolicy,
-		buildsRepo: func(repo, branch, goBranch string) bool {
-			// Go 1.14 is the last release that will support 32-bit binaries on macOS (darwin/386).
-			// (See https://golang.org/doc/go1.14#darwin.)
-			return repo == "go" && atMostGo1(branch, 14)
-		},
-		env: []string{"GOARCH=386", "GOHOSTARCH=386"},
-	})
-	addBuilder(BuildConfig{
 		Name:           "darwin-amd64-10_12",
 		HostType:       "host-darwin-10_12",
 		distTestAdjust: macTestPolicy,
@@ -2664,10 +2594,6 @@
 		},
 		buildsRepo: func(repo, branch, goBranch string) bool {
 			switch repo {
-			case "net":
-				// The x/net package wasn't working in Go 1.12; AIX folk plan to have
-				// it ready by Go 1.13. See https://golang.org/issue/31564#issuecomment-484786144
-				return atLeastGo1(branch, 13) && atLeastGo1(goBranch, 13)
 			case "tools", "tour", "website":
 				// The PATH on this builder is misconfigured in a way that causes
 				// any test that executes a 'go' command as a subprocess to fail.
@@ -2675,7 +2601,7 @@
 				// Skip affected repos until the builder is fixed.
 				return false
 			}
-			return atLeastGo1(branch, 12) && atLeastGo1(goBranch, 12) && buildRepoByDefault(repo)
+			return buildRepoByDefault(repo)
 		},
 	})
 	addBuilder(BuildConfig{
diff --git a/dashboard/builders_test.go b/dashboard/builders_test.go
index ed11532..9ac9560 100644
--- a/dashboard/builders_test.go
+++ b/dashboard/builders_test.go
@@ -172,7 +172,7 @@
 		},
 		{
 			repo:   "go",
-			branch: "release-branch.go1.14",
+			branch: "release-branch.go1.15",
 			want: []string{
 				"android-amd64-emu",
 				"freebsd-amd64-12_0",
@@ -362,7 +362,6 @@
 		{b("android-amd64-emu@go1.12", "mobile"), none},
 		{b("android-amd64-emu@go1.13", "mobile"), both},
 		{b("android-amd64-emu", "mobile@1.13"), both},
-		{b("freebsd-386-11_1@go1.14", "mobile"), none}, // See golang.org/issue/36506.
 
 		{b("android-amd64-emu", "go"), both},
 		{b("android-amd64-emu", "crypto"), both},
@@ -407,19 +406,6 @@
 		{b("openbsd-amd64-62@go1.15", "go"), onlyPost},
 		{b("openbsd-amd64-62@go1.14", "go"), onlyPost},
 
-		// go1.12.html: "Go 1.12 is the last release that is
-		// supported on FreeBSD 10.x [... and 11.1]"
-		// But golang.org/issue/40563 happened.
-		{b("freebsd-amd64-11_1", "go"), none},
-		{b("freebsd-amd64-11_1", "net"), none},
-		{b("freebsd-amd64-11_1", "mobile"), none},
-		{b("freebsd-amd64-11_1@go1.14", "go"), isBuilder},
-		{b("freebsd-amd64-11_1@go1.14", "net"), isBuilder},
-		{b("freebsd-amd64-11_1@go1.14", "mobile"), none},
-		{b("freebsd-amd64-11_1@go1.13", "go"), isBuilder},
-		{b("freebsd-amd64-11_1@go1.13", "net"), isBuilder},
-		{b("freebsd-amd64-11_1@go1.13", "mobile"), none},
-
 		// FreeBSD 12.0
 		{b("freebsd-amd64-12_0", "go"), both},
 		{b("freebsd-amd64-12_0", "net"), both},
@@ -441,11 +427,11 @@
 		{b("aix-ppc64", "mobile"), none},
 		{b("aix-ppc64", "exp"), none},
 		{b("aix-ppc64", "term"), onlyPost},
-		{b("aix-ppc64@go1.12", "go"), onlyPost},
-		{b("aix-ppc64@go1.12", "net"), none},
-		{b("aix-ppc64@go1.12", "mobile"), none},
-		{b("aix-ppc64@go1.13", "net"), onlyPost},
-		{b("aix-ppc64@go1.13", "mobile"), none},
+		{b("aix-ppc64@go1.15", "go"), onlyPost},
+		{b("aix-ppc64@go1.15", "net"), onlyPost},
+		{b("aix-ppc64@go1.15", "mobile"), none},
+		{b("aix-ppc64@go1.16", "net"), onlyPost},
+		{b("aix-ppc64@go1.16", "mobile"), none},
 		{b("aix-ppc64@dev.link", "go"), onlyPost},
 
 		{b("linux-amd64-nocgo", "mobile"), none},
@@ -520,10 +506,8 @@
 		{b("darwin-amd64-10_15", "exp"), onlyPost},
 		// ... but not on most others:
 		{b("darwin-amd64-10_12", "exp"), none},
-		{b("freebsd-386-11_1@go1.14", "exp"), none},
 		{b("freebsd-386-11_2", "exp"), none},
 		{b("freebsd-386-12_0", "exp"), none},
-		{b("freebsd-amd64-11_1@go1.14", "exp"), none},
 		{b("freebsd-amd64-11_2", "exp"), none},
 		{b("freebsd-amd64-12_0", "exp"), none},
 		{b("openbsd-amd64-64", "exp"), none},
@@ -548,26 +532,16 @@
 		{b("linux-amd64-sid", "build"), none},
 		{b("linux-amd64-nocgo", "build"), none},
 		{b("linux-386-longtest", "build"), none},
-		{b("freebsd-386-11_1", "build"), none},
 		{b("js-wasm", "build"), none},
 		{b("android-386-emu", "build"), none},
 		{b("android-amd64-emu", "build"), none},
 
 		// Only use latest macOS for subrepos, and only amd64:
 		{b("darwin-amd64-10_12", "net"), onlyPost},
-		{b("darwin-amd64-10_11", "net"), none},
-		{b("darwin-amd64-10_11@go1.12", "net"), none},
 
 		{b("darwin-amd64-10_15", "go"), onlyPost},
 		{b("darwin-amd64-10_14", "go"), onlyPost},
 		{b("darwin-amd64-10_12", "go"), onlyPost},
-		{b("darwin-amd64-10_11", "go"), none},
-		{b("darwin-amd64-10_11@go1.14", "go"), onlyPost}, // Go 1.14 is the last release that will run on macOS 10.11 El Capitan.
-		{b("darwin-amd64-10_11@go1.15", "go"), none},     // Go 1.15 will require macOS 10.12 Sierra or later.
-		{b("darwin-386-10_14", "go"), none},
-		{b("darwin-386-10_14@go1.13", "go"), onlyPost},
-		{b("darwin-386-10_14@go1.14", "go"), onlyPost}, // Go 1.14 is the last release that supports 32-bit on macOS.
-		{b("darwin-386-10_14@go1.15", "go"), none},
 
 		// plan9 only lived at master. We didn't support any past releases.
 		// But it's off for now as it's always failing.
@@ -690,7 +664,6 @@
 		{"linux-amd64", "reboot", tryMode, true},
 		{"linux-amd64-race", "reboot", tryMode, false},
 
-		{"darwin-amd64-10_11", "test:foo", postSubmit, false},
 		{"darwin-amd64-10_12", "test:foo", postSubmit, false},
 		{"darwin-amd64-10_14", "test:foo", postSubmit, false},
 		{"darwin-amd64-10_14", "reboot", postSubmit, false},
@@ -830,7 +803,6 @@
 	ports := strings.Fields(string(out))
 
 	done := map[string]bool{}
-	done["darwin-arm"] = true    // TODO: Remove when Go 1.16 is out and Go 1.14 becomes unsupported.
 	done["darwin-arm64"] = true  // TODO(golang.org/issue/39782): Add builder for darwin/arm64.
 	done["windows-arm64"] = true // TODO(golang.org/issue/42604): Add builder for windows/arm64.
 	check := func(goos, goarch string) {