--- /dev/null
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.9
+
+// This file contains a copy of the implementation of types.SizesFor
+// since this function is not available in go/types before Go 1.9.
+
+package main
+
+import "go/types"
+
+const defaultCompiler = "gc"
+
+var gcArchSizes = map[string]*types.StdSizes{
+ "386": {4, 4},
+ "arm": {4, 4},
+ "arm64": {8, 8},
+ "amd64": {8, 8},
+ "amd64p32": {4, 8},
+ "mips": {4, 4},
+ "mipsle": {4, 4},
+ "mips64": {8, 8},
+ "mips64le": {8, 8},
+ "ppc64": {8, 8},
+ "ppc64le": {8, 8},
+ "s390x": {8, 8},
+}
+
+func SizesFor(compiler, arch string) types.Sizes {
+ if compiler != "gc" {
+ return nil
+ }
+ s, ok := gcArchSizes[arch]
+ if !ok {
+ return nil
+ }
+ return s
+}