This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Go patch committed: Fix inconsistent check for == as memcmp


The Go frontend was inconsistent in determining whether a struct could
use memcmp for the == operator.  This could cause one package to decide
that it could use == and a package importing that one to determine that
it could not.  The effect was an undefined symbol at link time.  This
patch fixes the problem.  I've added a test case (bug479) to the master
testsuite, which will be brought over to the gccgo testsuite in due
course.  Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu.
Committed to mainline and 4.8 branch.

Ian

diff -r 2b23d9831cf7 go/expressions.cc
--- a/go/expressions.cc	Wed Sep 18 16:26:07 2013 -0700
+++ b/go/expressions.cc	Thu Sep 19 10:28:24 2013 -0700
@@ -7752,8 +7752,6 @@
 	return false;
       if (arg_type->is_abstract())
 	return false;
-      if (arg_type->named_type() != NULL)
-	arg_type->named_type()->convert(this->gogo_);
 
       unsigned int ret;
       if (this->code_ == BUILTIN_SIZEOF)
diff -r 2b23d9831cf7 go/types.cc
--- a/go/types.cc	Wed Sep 18 16:26:07 2013 -0700
+++ b/go/types.cc	Thu Sep 19 10:28:24 2013 -0700
@@ -2288,9 +2288,7 @@
       }
 
     case TYPE_NAMED:
-      // Begin converting this type to the backend representation.
-      // This will create a placeholder if necessary.
-      this->get_backend(gogo);
+      this->named_type()->convert(gogo);
       return this->named_type()->is_named_backend_type_size_known();
 
     case TYPE_FORWARD:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]