cmd/gc: do not consider length zero arrays as comparable.

Array values are comparable if values of the array element type
are comparable.

Fixes #6526.

LGTM=khr
R=rsc, bradfitz, khr
CC=golang-codereviews
https://golang.org/cl/58580043
diff --git a/test/cmp6.go b/test/cmp6.go
index 839c274..7cf7604 100644
--- a/test/cmp6.go
+++ b/test/cmp6.go
@@ -18,7 +18,10 @@
 
 var t3 T3
 
-type T4 struct { _ []int; a float64 }
+type T4 struct {
+	_ []int
+	a float64
+}
 
 var t4 T4
 
@@ -51,6 +54,14 @@
 	use(p3 == p1)
 	use(p3 == p2)
 
+	// Arrays are comparable if and only if their element type is comparable.
+	var a1 [1]int
+	var a2 [1]func()
+	var a3 [0]func()
+	use(a1 == a1)
+	use(a2 == a2) // ERROR "invalid operation|invalid comparison"
+	use(a3 == a3) // ERROR "invalid operation|invalid comparison"
+
 	// Comparison of structs should have a good message
 	use(t3 == t3) // ERROR "struct|expected"
 	use(t4 == t4) // ERROR "cannot be compared|non-comparable"