diff --git a/src/cmd/api/goapi.go b/src/cmd/api/goapi.go
index b9460772764c4c7f935b819c6220f85fdb7a5ce8..982c40b08597330fc7dddded73cfa6c324333956 100644
--- a/src/cmd/api/goapi.go
+++ b/src/cmd/api/goapi.go
@@ -368,15 +368,6 @@ func (w *Walker) parseFile(dir, file string) (*ast.File, error) {
 	return f, nil
 }
 
-func contains(list []string, s string) bool {
-	for _, t := range list {
-		if t == s {
-			return true
-		}
-	}
-	return false
-}
-
 // The package cache doesn't operate correctly in rare (so far artificial)
 // circumstances (issue 8425). Disable before debugging non-obvious errors
 // from the type-checker.
diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go
index b2835a495fb848f0ee5ac1ead536311f40cdabe3..84cd2e816a1644ef5e571b4b024087e14dcc517c 100644
--- a/src/cmd/cgo/gcc.go
+++ b/src/cmd/cgo/gcc.go
@@ -1282,8 +1282,7 @@ func runGcc(stdin []byte, args []string) (string, string) {
 // with equivalent memory layout.
 type typeConv struct {
 	// Cache of already-translated or in-progress types.
-	m       map[dwarf.Type]*Type
-	typedef map[string]ast.Expr
+	m map[dwarf.Type]*Type
 
 	// Map from types to incomplete pointers to those types.
 	ptrs map[dwarf.Type][]*Type
diff --git a/src/cmd/dist/util.go b/src/cmd/dist/util.go
index 57b1d2dd8421ea84075a0ebbfcdd3b33365bc1c2..34f7372de8b093b3769a753d0ecdc94d056cb797 100644
--- a/src/cmd/dist/util.go
+++ b/src/cmd/dist/util.go
@@ -131,7 +131,6 @@ var maxbg = 4 /* maximum number of jobs to run at once */
 
 var (
 	bgwork = make(chan func(), 1e5)
-	bgdone = make(chan struct{}, 1e5)
 
 	bghelpers sync.WaitGroup
 
diff --git a/src/cmd/doc/pkg.go b/src/cmd/doc/pkg.go
index a14ccdb59b549f73c0108b6a87671bc5b5c1e0f0..d0983d447d5dd1c6964d818199fc489b4addfb25 100644
--- a/src/cmd/doc/pkg.go
+++ b/src/cmd/doc/pkg.go
@@ -29,17 +29,15 @@ const (
 )
 
 type Package struct {
-	writer     io.Writer // Destination for output.
-	name       string    // Package name, json for encoding/json.
-	userPath   string    // String the user used to find this package.
-	unexported bool
-	matchCase  bool
-	pkg        *ast.Package // Parsed package.
-	file       *ast.File    // Merged from all files in the package
-	doc        *doc.Package
-	build      *build.Package
-	fs         *token.FileSet // Needed for printing.
-	buf        bytes.Buffer
+	writer   io.Writer    // Destination for output.
+	name     string       // Package name, json for encoding/json.
+	userPath string       // String the user used to find this package.
+	pkg      *ast.Package // Parsed package.
+	file     *ast.File    // Merged from all files in the package
+	doc      *doc.Package
+	build    *build.Package
+	fs       *token.FileSet // Needed for printing.
+	buf      bytes.Buffer
 }
 
 type PackageError string // type returned by pkg.Fatalf.
diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go
index b63c195f78203826fd8a96715094d665b6e85cd2..08062ea9a536171da2c12a725a3bf9588eeecf50 100644
--- a/src/cmd/go/build.go
+++ b/src/cmd/go/build.go
@@ -1312,16 +1312,6 @@ func (b *builder) do(root *action) {
 	wg.Wait()
 }
 
-// hasString reports whether s appears in the list of strings.
-func hasString(strings []string, s string) bool {
-	for _, t := range strings {
-		if s == t {
-			return true
-		}
-	}
-	return false
-}
-
 // build is the action for building a single package or command.
 func (b *builder) build(a *action) (err error) {
 	// Return an error if the package has CXX files but it's not using
diff --git a/src/cmd/go/generate.go b/src/cmd/go/generate.go
index cbedacb34d6166dbc6610c0fc837811d1df8033a..749e28c24d3f6df06880e5cd057592bf81b9ab43 100644
--- a/src/cmd/go/generate.go
+++ b/src/cmd/go/generate.go
@@ -17,7 +17,6 @@ import (
 	"runtime"
 	"strconv"
 	"strings"
-	"unicode"
 )
 
 var cmdGenerate = &Command{
@@ -371,17 +370,6 @@ func (g *Generator) expandVar(word string) string {
 	return os.Getenv(word)
 }
 
-// identLength returns the length of the identifier beginning the string.
-func (g *Generator) identLength(word string) int {
-	for i, r := range word {
-		if r == '_' || unicode.IsLetter(r) || unicode.IsDigit(r) {
-			continue
-		}
-		return i
-	}
-	return len(word)
-}
-
 // setShorthand installs a new shorthand as defined by a -command directive.
 func (g *Generator) setShorthand(words []string) {
 	// Create command shorthand.
diff --git a/src/cmd/go/main.go b/src/cmd/go/main.go
index 65cbab2b0db5ad135d13ca5e83d5a1a8756ed580..4e0987d69e6bf4da05205c799f9aa8e5d71dc4c0 100644
--- a/src/cmd/go/main.go
+++ b/src/cmd/go/main.go
@@ -403,8 +403,6 @@ func errorf(format string, args ...interface{}) {
 	setExitStatus(1)
 }
 
-var logf = log.Printf
-
 func exitIfErrors() {
 	if exitStatus != 0 {
 		exit()
@@ -428,19 +426,6 @@ func run(cmdargs ...interface{}) {
 	}
 }
 
-func runOut(dir string, cmdargs ...interface{}) []byte {
-	cmdline := stringList(cmdargs...)
-	cmd := exec.Command(cmdline[0], cmdline[1:]...)
-	cmd.Dir = dir
-	out, err := cmd.CombinedOutput()
-	if err != nil {
-		os.Stderr.Write(out)
-		errorf("%v", err)
-		out = nil
-	}
-	return out
-}
-
 // envForDir returns a copy of the environment
 // suitable for running in the given directory.
 // The environment is the current process's environment
diff --git a/src/cmd/go/pkg.go b/src/cmd/go/pkg.go
index 927d68d1c60d5b76d9dd735e2d0e8f76e957d457..fa923c88737d38b4702b55945853698a1a511585 100644
--- a/src/cmd/go/pkg.go
+++ b/src/cmd/go/pkg.go
@@ -90,7 +90,6 @@ type Package struct {
 	target       string               // installed file for this package (may be executable)
 	fake         bool                 // synthesized package
 	external     bool                 // synthesized external test package
-	forceBuild   bool                 // this package must be rebuilt
 	forceLibrary bool                 // this package is a library (even if named "main")
 	cmdline      bool                 // defined by files listed on command line
 	local        bool                 // imported via local path (./ or ../)
diff --git a/src/cmd/pprof/internal/report/report.go b/src/cmd/pprof/internal/report/report.go
index b2b07b24f989a1275542bb9f3d1754939481152a..86bd4a280b2ea5ac285a982e220ab50431d38a42 100644
--- a/src/cmd/pprof/internal/report/report.go
+++ b/src/cmd/pprof/internal/report/report.go
@@ -10,7 +10,6 @@ import (
 	"fmt"
 	"io"
 	"math"
-	"os"
 	"path/filepath"
 	"regexp"
 	"sort"
@@ -248,14 +247,6 @@ func valueOrDot(value int64, rpt *Report) string {
 	return rpt.formatValue(value)
 }
 
-// canAccessFile determines if the filename can be opened for reading.
-func canAccessFile(path string) bool {
-	if fi, err := os.Stat(path); err == nil {
-		return fi.Mode().Perm()&0400 != 0
-	}
-	return false
-}
-
 // printTags collects all tags referenced in the profile and prints
 // them in a sorted table.
 func printTags(w io.Writer, rpt *Report) error {
@@ -764,14 +755,6 @@ type node struct {
 	tags tagMap
 }
 
-func (ts tags) string() string {
-	var ret string
-	for _, s := range ts {
-		ret = ret + fmt.Sprintf("%s %s %d %d\n", s.name, s.unit, s.value, s.weight)
-	}
-	return ret
-}
-
 type nodeInfo struct {
 	name              string
 	origName          string
@@ -1697,22 +1680,3 @@ type Report struct {
 	sampleValue func(*profile.Sample) int64
 	formatValue func(int64) string
 }
-
-func (rpt *Report) formatTags(s *profile.Sample) (string, bool) {
-	var labels []string
-	for key, vals := range s.Label {
-		for _, v := range vals {
-			labels = append(labels, key+":"+v)
-		}
-	}
-	for key, nvals := range s.NumLabel {
-		for _, v := range nvals {
-			labels = append(labels, scaledValueLabel(v, key, "auto"))
-		}
-	}
-	if len(labels) == 0 {
-		return "", false
-	}
-	sort.Strings(labels)
-	return strings.Join(labels, `\n`), true
-}
diff --git a/src/cmd/yacc/yacc.go b/src/cmd/yacc/yacc.go
index 4f9d13c5453f5c69a6c40122fc3e4d12c953c07c..cce330793d5ced4e2af464aa8216b962b2e3b1c2 100644
--- a/src/cmd/yacc/yacc.go
+++ b/src/cmd/yacc/yacc.go
@@ -237,7 +237,6 @@ var defact = make([]int, NSTATES)  // default actions of states
 
 // lookahead set information
 
-var lkst []Lkset
 var nolook = 0  // flag to turn off lookahead computations
 var tbitset = 0 // size of lookahead sets
 var clset Lkset // temporary storage for lookahead computations
@@ -3185,8 +3184,6 @@ func isword(c rune) bool {
 	return c >= 0xa0 || c == '_' || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
 }
 
-func mktemp(t string) string { return t }
-
 //
 // return 1 if 2 arrays are equal
 // return 0 if not equal
@@ -3204,13 +3201,6 @@ func aryeq(a []int, b []int) int {
 	return 1
 }
 
-func putrune(f *bufio.Writer, c int) {
-	s := string(c)
-	for i := 0; i < len(s); i++ {
-		f.WriteByte(s[i])
-	}
-}
-
 func getrune(f *bufio.Reader) rune {
 	var r rune
 
diff --git a/src/compress/bzip2/bzip2.go b/src/compress/bzip2/bzip2.go
index 71e5372972a19c40c9d0286f6b67bd32b199a397..90e9aebab6236d71dc9b9b3b57077b861a352475 100644
--- a/src/compress/bzip2/bzip2.go
+++ b/src/compress/bzip2/bzip2.go
@@ -29,7 +29,6 @@ type reader struct {
 	setupDone    bool // true if we have parsed the bzip2 header.
 	blockSize    int  // blockSize in bytes, i.e. 900 * 1000.
 	eof          bool
-	buf          []byte    // stores Burrows-Wheeler transformed data.
 	c            [256]uint // the `C' array for the inverse BWT.
 	tt           []uint32  // mirrors the `tt' array in the bzip2 source and contains the P array in the upper 24 bits.
 	tPos         uint32    // Index of the next output byte in tt.
diff --git a/src/compress/flate/token.go b/src/compress/flate/token.go
index c485939d3453b54f5a79c8f7ffa8255973e79ce9..ae01391f9cfc3d7b8c4f8623fed3472776b7801b 100644
--- a/src/compress/flate/token.go
+++ b/src/compress/flate/token.go
@@ -75,9 +75,6 @@ func matchToken(xlength uint32, xoffset uint32) token {
 	return token(matchType + xlength<<lengthShift + xoffset)
 }
 
-// Returns the type of a token
-func (t token) typ() uint32 { return uint32(t) & typeMask }
-
 // Returns the literal of a literal token
 func (t token) literal() uint32 { return uint32(t - literalType) }
 
diff --git a/src/crypto/tls/common.go b/src/crypto/tls/common.go
index 28971ce078f649066d485b9f467392b120f5d6d0..572266bc8f5e5b985981aef5c2b4411b4b776b07 100644
--- a/src/crypto/tls/common.go
+++ b/src/crypto/tls/common.go
@@ -590,13 +590,6 @@ type Certificate struct {
 	Leaf *x509.Certificate
 }
 
-// A TLS record.
-type record struct {
-	contentType  recordType
-	major, minor uint8
-	payload      []byte
-}
-
 type handshakeMessage interface {
 	marshal() []byte
 	unmarshal([]byte) bool
diff --git a/src/crypto/tls/conn.go b/src/crypto/tls/conn.go
index e0dab08ddccd1c90190b5164a13a090d341e9051..2b1875d903b3e4e315d1895263813dec365ec717 100644
--- a/src/crypto/tls/conn.go
+++ b/src/crypto/tls/conn.go
@@ -174,13 +174,6 @@ func (hc *halfConn) incSeq() {
 	panic("TLS: sequence number wraparound")
 }
 
-// resetSeq resets the sequence number to zero.
-func (hc *halfConn) resetSeq() {
-	for i := range hc.seq {
-		hc.seq[i] = 0
-	}
-}
-
 // removePadding returns an unpadded slice, in constant time, which is a prefix
 // of the input. It also returns a byte which is equal to 255 if the padding
 // was valid and 0 otherwise. See RFC 2246, section 6.2.3.2
diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go
index 7ba7ce5c905ca53e5336e6d5b2790f5fd0aa9bbc..e7482a8e2f2ac61ec7003d4a3e42b8b72d48a59c 100644
--- a/src/database/sql/sql.go
+++ b/src/database/sql/sql.go
@@ -838,11 +838,6 @@ func (db *DB) conn(strategy connReuseStrategy) (*driverConn, error) {
 	return dc, nil
 }
 
-var (
-	errConnClosed = errors.New("database/sql: internal sentinel error: conn is closed")
-	errConnBusy   = errors.New("database/sql: internal sentinel error: conn is busy")
-)
-
 // putConnHook is a hook for testing.
 var putConnHook func(*DB, *driverConn)
 
diff --git a/src/debug/macho/macho.go b/src/debug/macho/macho.go
index 7b614286648f383cea864d41a3ef131368013b1f..31647536ac5e6732aacede56a7ba01a3a18e8c51 100644
--- a/src/debug/macho/macho.go
+++ b/src/debug/macho/macho.go
@@ -291,26 +291,3 @@ func stringName(i uint32, names []intName, goSyntax bool) string {
 	}
 	return strconv.FormatUint(uint64(i), 10)
 }
-
-func flagName(i uint32, names []intName, goSyntax bool) string {
-	s := ""
-	for _, n := range names {
-		if n.i&i == n.i {
-			if len(s) > 0 {
-				s += "+"
-			}
-			if goSyntax {
-				s += "macho."
-			}
-			s += n.s
-			i -= n.i
-		}
-	}
-	if len(s) == 0 {
-		return "0x" + strconv.FormatUint(uint64(i), 16)
-	}
-	if i != 0 {
-		s += "+0x" + strconv.FormatUint(uint64(i), 16)
-	}
-	return s
-}
diff --git a/src/encoding/xml/marshal.go b/src/encoding/xml/marshal.go
index b9f5a39fde537ab873a7493b7fc3e0821e5ccfe6..ec4822b5c141567d22b73dc949a33568d7205720 100644
--- a/src/encoding/xml/marshal.go
+++ b/src/encoding/xml/marshal.go
@@ -175,10 +175,9 @@ func (enc *Encoder) EncodeElement(v interface{}, start StartElement) error {
 }
 
 var (
-	begComment   = []byte("<!--")
-	endComment   = []byte("-->")
-	endProcInst  = []byte("?>")
-	endDirective = []byte(">")
+	begComment  = []byte("<!--")
+	endComment  = []byte("-->")
+	endProcInst = []byte("?>")
 )
 
 // EncodeToken writes the given XML token to the stream.
diff --git a/src/html/escape.go b/src/html/escape.go
index ab6fd1c7b4b3460d29d2a47a693463c2666b1e25..71906ac5863c313782d3690aa984259b4518eb75 100644
--- a/src/html/escape.go
+++ b/src/html/escape.go
@@ -10,10 +10,6 @@ import (
 	"unicode/utf8"
 )
 
-type writer interface {
-	WriteString(string) (int, error)
-}
-
 // These replacements permit compatibility with old numeric entities that
 // assumed Windows-1252 encoding.
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference
diff --git a/src/io/pipe.go b/src/io/pipe.go
index 179515e78d3a03866bfcaaf7800bf670b48a14e1..7e98cd2eb788a7be13b8a92d38efd3bf95c7b7af 100644
--- a/src/io/pipe.go
+++ b/src/io/pipe.go
@@ -15,11 +15,6 @@ import (
 // ErrClosedPipe is the error used for read or write operations on a closed pipe.
 var ErrClosedPipe = errors.New("io: read/write on closed pipe")
 
-type pipeResult struct {
-	n   int
-	err error
-}
-
 // A pipe is the shared pipe structure underlying PipeReader and PipeWriter.
 type pipe struct {
 	rl    sync.Mutex // gates readers one at a time
diff --git a/src/net/http/fcgi/fcgi.go b/src/net/http/fcgi/fcgi.go
index 06bba0488a20f897936a2489dfef46ff8fbba72c..337484139d3dd04a2ab73cd409bd2fc98e7eee91 100644
--- a/src/net/http/fcgi/fcgi.go
+++ b/src/net/http/fcgi/fcgi.go
@@ -58,8 +58,6 @@ const (
 	statusUnknownRole
 )
 
-const headerLen = 8
-
 type header struct {
 	Version       uint8
 	Type          recType
@@ -158,11 +156,6 @@ func (c *conn) writeRecord(recType recType, reqId uint16, b []byte) error {
 	return err
 }
 
-func (c *conn) writeBeginRequest(reqId uint16, role uint16, flags uint8) error {
-	b := [8]byte{byte(role >> 8), byte(role), flags}
-	return c.writeRecord(typeBeginRequest, reqId, b[:])
-}
-
 func (c *conn) writeEndRequest(reqId uint16, appStatus int, protocolStatus uint8) error {
 	b := make([]byte, 8)
 	binary.BigEndian.PutUint32(b, uint32(appStatus))
diff --git a/src/net/http/httputil/dump.go b/src/net/http/httputil/dump.go
index 3af53958980dc049d32fbde52cbbe2f7541569f0..ddde11a0e403c60be090be382b0764a5abb73d54 100644
--- a/src/net/http/httputil/dump.go
+++ b/src/net/http/httputil/dump.go
@@ -168,13 +168,6 @@ var reqWriteExcludeHeaderDump = map[string]bool{
 	"Trailer":           true,
 }
 
-// dumpAsReceived writes req to w in the form as it was received, or
-// at least as accurately as possible from the information retained in
-// the request.
-func dumpAsReceived(req *http.Request, w io.Writer) error {
-	return nil
-}
-
 // DumpRequest returns the given request in its HTTP/1.x wire
 // representation. It should only be used by servers to debug client
 // requests. The returned representation is an approximation only;
diff --git a/src/net/http/transport.go b/src/net/http/transport.go
index d6cd9a1cb39abfee951bd44ec7c9d4f666d14358..386971d9282a0dbcbdc26d7bef8a51242df92e99 100644
--- a/src/net/http/transport.go
+++ b/src/net/http/transport.go
@@ -1371,7 +1371,6 @@ func (e *httpError) Timeout() bool   { return e.timeout }
 func (e *httpError) Temporary() bool { return true }
 
 var errTimeout error = &httpError{err: "net/http: timeout awaiting response headers", timeout: true}
-var errClosed error = &httpError{err: "net/http: server closed connection before response was received"}
 var errRequestCanceled = errors.New("net/http: request canceled")
 var errRequestCanceledConn = errors.New("net/http: request canceled while waiting for connection") // TODO: unify?
 
@@ -1697,17 +1696,6 @@ type fakeLocker struct{}
 func (fakeLocker) Lock()   {}
 func (fakeLocker) Unlock() {}
 
-func isNetWriteError(err error) bool {
-	switch e := err.(type) {
-	case *url.Error:
-		return isNetWriteError(e.Err)
-	case *net.OpError:
-		return e.Op == "write"
-	default:
-		return false
-	}
-}
-
 // cloneTLSConfig returns a shallow clone of the exported
 // fields of cfg, ignoring the unexported sync.Once, which
 // contains a mutex and must not be copied.
diff --git a/src/reflect/value.go b/src/reflect/value.go
index 1305bbfff41d6a5d8865b01a94005f103b7fa00c..262545d973ccc4570beeee8a8d6617defc06ed29 100644
--- a/src/reflect/value.go
+++ b/src/reflect/value.go
@@ -11,7 +11,6 @@ import (
 )
 
 const ptrSize = 4 << (^uintptr(0) >> 63) // unsafe.Sizeof(uintptr(0)) but an ideal const
-const cannotSet = "cannot set value obtained from unexported struct field"
 
 // Value is the reflection interface to a Go value.
 //
diff --git a/src/regexp/backtrack.go b/src/regexp/backtrack.go
index 93334c3aff3c04594dd96c7cd15713d20ed2e267..29f624b54c7da8e37e0f7b06ae058bb02d64c552 100644
--- a/src/regexp/backtrack.go
+++ b/src/regexp/backtrack.go
@@ -36,7 +36,6 @@ type bitState struct {
 
 	end     int
 	cap     []int
-	input   input
 	jobs    []job
 	visited []uint32
 }
diff --git a/src/regexp/exec.go b/src/regexp/exec.go
index 6c6329e0b0f3a0617d562945ffda6723fa1f5788..4fd61b5d8d1a8977f79a5ffdd3c58366fb62bcfb 100644
--- a/src/regexp/exec.go
+++ b/src/regexp/exec.go
@@ -107,14 +107,6 @@ func (m *machine) alloc(i *syntax.Inst) *thread {
 	return t
 }
 
-// free returns t to the free pool.
-func (m *machine) free(t *thread) {
-	m.inputBytes.str = nil
-	m.inputString.str = ""
-	m.inputReader.r = nil
-	m.pool = append(m.pool, t)
-}
-
 // match runs the machine over the input starting at pos.
 // It reports whether a match was found.
 // If so, m.matchcap holds the submatch information.
@@ -192,7 +184,6 @@ func (m *machine) match(i input, pos int) bool {
 func (m *machine) clear(q *queue) {
 	for _, d := range q.dense {
 		if d.t != nil {
-			// m.free(d.t)
 			m.pool = append(m.pool, d.t)
 		}
 	}
@@ -213,7 +204,6 @@ func (m *machine) step(runq, nextq *queue, pos, nextPos int, c rune, nextCond sy
 			continue
 		}
 		if longest && m.matched && len(t.cap) > 0 && m.matchcap[0] < t.cap[0] {
-			// m.free(t)
 			m.pool = append(m.pool, t)
 			continue
 		}
@@ -232,7 +222,6 @@ func (m *machine) step(runq, nextq *queue, pos, nextPos int, c rune, nextCond sy
 				// First-match mode: cut off all lower-priority threads.
 				for _, d := range runq.dense[j+1:] {
 					if d.t != nil {
-						// m.free(d.t)
 						m.pool = append(m.pool, d.t)
 					}
 				}
@@ -253,7 +242,6 @@ func (m *machine) step(runq, nextq *queue, pos, nextPos int, c rune, nextCond sy
 			t = m.add(nextq, i.Out, nextPos, t.cap, nextCond, t)
 		}
 		if t != nil {
-			// m.free(t)
 			m.pool = append(m.pool, t)
 		}
 	}
diff --git a/src/regexp/regexp.go b/src/regexp/regexp.go
index 92af6bb45bfb8d74c949b49d82d5437b40799c21..fe3db9f78b0f505943890a7c7d14f94d2860fb8d 100644
--- a/src/regexp/regexp.go
+++ b/src/regexp/regexp.go
@@ -75,8 +75,6 @@ import (
 	"unicode/utf8"
 )
 
-var debug = false
-
 // Regexp is the representation of a compiled regular expression.
 // A Regexp is safe for concurrent use by multiple goroutines.
 type Regexp struct {
diff --git a/src/sort/sort.go b/src/sort/sort.go
index b322c0eddffd059c7318ee5eca2001bdbc4f53da..d07a0c27b84e84078ea6da7c85b386e705725a8f 100644
--- a/src/sort/sort.go
+++ b/src/sort/sort.go
@@ -19,13 +19,6 @@ type Interface interface {
 	Swap(i, j int)
 }
 
-func min(a, b int) int {
-	if a < b {
-		return a
-	}
-	return b
-}
-
 // Insertion sort
 func insertionSort(data Interface, a, b int) {
 	for i := a + 1; i < b; i++ {
diff --git a/src/text/template/funcs.go b/src/text/template/funcs.go
index 0bfcffa795d595a8ef7b3bab222077b93fe8a27b..cd0b82b243d592620a7ba960c3dcbf2c03303850 100644
--- a/src/text/template/funcs.go
+++ b/src/text/template/funcs.go
@@ -322,7 +322,6 @@ const (
 	complexKind
 	intKind
 	floatKind
-	integerKind
 	stringKind
 	uintKind
 )
diff --git a/src/time/time.go b/src/time/time.go
index 9693286fd5e31d0559a8d40cef23e4b548360084..4b9a0db7302cf15264acf5310160595c6921612f 100644
--- a/src/time/time.go
+++ b/src/time/time.go
@@ -225,9 +225,6 @@ const (
 	// Assumed by the unixToInternal computation below.
 	internalYear = 1
 
-	// The year of the zero Unix time.
-	unixYear = 1970
-
 	// Offsets to convert between internal and absolute or Unix times.
 	absoluteToInternal int64 = (absoluteZeroYear - internalYear) * 365.2425 * secondsPerDay
 	internalToAbsolute       = -absoluteToInternal