cmd/gc: implement latest rules for checking make sizes

Fixes #4085.

R=ken2
CC=golang-dev
https://golang.org/cl/7277047
diff --git a/test/fixedbugs/issue4085a.go b/test/fixedbugs/issue4085a.go
new file mode 100644
index 0000000..8a52b26
--- /dev/null
+++ b/test/fixedbugs/issue4085a.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2013 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.
+
+package main
+
+type T []int
+
+func main() {
+	_ = make(T, -1)       // ERROR "negative"
+	_ = make(T, 0.5)       // ERROR "constant 0.5 truncated to integer"
+	_ = make(T, 1.0)       // ok
+	_ = make(T, 1<<63)  // ERROR "len argument too large"
+	_ = make(T, 0, -1)    // ERROR "negative cap"
+	_ = make(T, 10, 0) // ERROR "len larger than cap"
+}