From: Ian Lance Taylor Date: Thu, 12 Dec 2013 18:45:24 +0000 (+0000) Subject: compiler: Don't compare structs with blank non-comparable fields. X-Git-Tag: releases/gcc-4.9.0~2115 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=10d91e57986941516dc7c0d1c6ec0915d68f614e;p=thirdparty%2Fgcc.git compiler: Don't compare structs with blank non-comparable fields. From-SVN: r205937 --- diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index 33c23e56092b..d079565d18bc 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -575,9 +575,6 @@ Type::are_compatible_for_comparison(bool is_equality_op, const Type *t1, p != fields->end(); ++p) { - if (Gogo::is_sink_name(p->field_name())) - continue; - if (!p->type()->is_comparable()) { if (reason != NULL) diff --git a/gcc/testsuite/go.test/test/cmp.go b/gcc/testsuite/go.test/test/cmp.go index 5be64561d597..73de502f39fc 100644 --- a/gcc/testsuite/go.test/test/cmp.go +++ b/gcc/testsuite/go.test/test/cmp.go @@ -43,8 +43,8 @@ func main() { var d string = "hel" // try to get different pointer d = d + "lo" - // exp/ssa/interp can't handle unsafe.Pointer. - if os.Getenv("GOSSAINTERP") != "" { + // go.tools/ssa/interp can't handle unsafe.Pointer. + if os.Getenv("GOSSAINTERP") == "" { if stringptr(c) == stringptr(d) { panic("compiler too smart -- got same string") } @@ -296,7 +296,7 @@ func main() { { var x = struct { x int - _ []int + _ string y float64 _ float64 z int diff --git a/gcc/testsuite/go.test/test/cmp6.go b/gcc/testsuite/go.test/test/cmp6.go index 7d99aae18b32..839c274bccae 100644 --- a/gcc/testsuite/go.test/test/cmp6.go +++ b/gcc/testsuite/go.test/test/cmp6.go @@ -53,7 +53,7 @@ func main() { // Comparison of structs should have a good message use(t3 == t3) // ERROR "struct|expected" - use(t4 == t4) // ok; the []int is a blank field + use(t4 == t4) // ERROR "cannot be compared|non-comparable" // Slices, functions, and maps too. var x []int