From 1d9fec7937f45dde5e04cac966a2d9a12f2fc15a Mon Sep 17 00:00:00 2001 From: Yiran Wang Date: Tue, 23 Jun 2015 15:33:17 -0700 Subject: Synchronize with google/gcc-4_9 to r224707 (from r214835) Change-Id: I3d6f06fc613c8f8b6a82143dc44b7338483aac5d --- gcc-4.9/gcc/go/ChangeLog | 4 ++++ gcc-4.9/gcc/go/gofrontend/expressions.cc | 7 +++++-- gcc-4.9/gcc/go/gofrontend/gogo.cc | 5 +---- gcc-4.9/gcc/go/gofrontend/import-archive.cc | 9 +++++++++ 4 files changed, 19 insertions(+), 6 deletions(-) (limited to 'gcc-4.9/gcc/go') diff --git a/gcc-4.9/gcc/go/ChangeLog b/gcc-4.9/gcc/go/ChangeLog index 1af11e486..cb51027f3 100644 --- a/gcc-4.9/gcc/go/ChangeLog +++ b/gcc-4.9/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2014-10-30 Release Manager + + * GCC 4.9.2 released. + 2014-07-16 Release Manager * GCC 4.9.1 released. diff --git a/gcc-4.9/gcc/go/gofrontend/expressions.cc b/gcc-4.9/gcc/go/gofrontend/expressions.cc index f45b4a227..b0b8e39e9 100644 --- a/gcc-4.9/gcc/go/gofrontend/expressions.cc +++ b/gcc-4.9/gcc/go/gofrontend/expressions.cc @@ -5341,10 +5341,13 @@ Binary_expression::do_lower(Gogo* gogo, Named_object*, // Lower struct, array, and some interface comparisons. if (op == OPERATOR_EQEQ || op == OPERATOR_NOTEQ) { - if (left->type()->struct_type() != NULL) + if (left->type()->struct_type() != NULL + && right->type()->struct_type() != NULL) return this->lower_struct_comparison(gogo, inserter); else if (left->type()->array_type() != NULL - && !left->type()->is_slice_type()) + && !left->type()->is_slice_type() + && right->type()->array_type() != NULL + && !right->type()->is_slice_type()) return this->lower_array_comparison(gogo, inserter); else if ((left->type()->interface_type() != NULL && right->type()->interface_type() == NULL) diff --git a/gcc-4.9/gcc/go/gofrontend/gogo.cc b/gcc-4.9/gcc/go/gofrontend/gogo.cc index 9739f289f..f042f64d4 100644 --- a/gcc-4.9/gcc/go/gofrontend/gogo.cc +++ b/gcc-4.9/gcc/go/gofrontend/gogo.cc @@ -255,10 +255,7 @@ Gogo::pkgpath_for_symbol(const std::string& pkgpath) char c = s[i]; if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') - || (c >= '0' && c <= '9') - || c == '_' - || c == '.' - || c == '$') + || (c >= '0' && c <= '9')) ; else s[i] = '_'; diff --git a/gcc-4.9/gcc/go/gofrontend/import-archive.cc b/gcc-4.9/gcc/go/gofrontend/import-archive.cc index 34fb528ab..a902cfaaf 100644 --- a/gcc-4.9/gcc/go/gofrontend/import-archive.cc +++ b/gcc-4.9/gcc/go/gofrontend/import-archive.cc @@ -295,6 +295,15 @@ Archive_file::interpret_header(const Archive_header* hdr, off_t off, // This is the symbol table. pname->clear(); } + else if (hdr->ar_name[1] == 'S' && hdr->ar_name[2] == 'Y' + && hdr->ar_name[3] == 'M' && hdr->ar_name[4] == '6' + && hdr->ar_name[5] == '4' && hdr->ar_name[6] == '/' + && hdr->ar_name[7] == ' ' + ) + { + // 64-bit symbol table. + pname->clear(); + } else if (hdr->ar_name[1] == '/') { // This is the extended name table. -- cgit v1.2.3