From patchwork Wed Nov 17 22:30:36 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Lance Taylor X-Patchwork-Id: 71626 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 98DF7B70DF for ; Thu, 18 Nov 2010 09:30:52 +1100 (EST) Received: (qmail 19041 invoked by alias); 17 Nov 2010 22:30:50 -0000 Received: (qmail 19031 invoked by uid 22791); 17 Nov 2010 22:30:49 -0000 X-SWARE-Spam-Status: No, hits=-4.9 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI, SPF_HELO_PASS, TW_CC, T_RP_MATCHES_RCVD, T_TVD_MIME_NO_HEADERS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.35) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 17 Nov 2010 22:30:43 +0000 Received: from hpaq5.eem.corp.google.com (hpaq5.eem.corp.google.com [172.25.149.5]) by smtp-out.google.com with ESMTP id oAHMUeC4006238 for ; Wed, 17 Nov 2010 14:30:40 -0800 Received: from qwf7 (qwf7.prod.google.com [10.241.194.71]) by hpaq5.eem.corp.google.com with ESMTP id oAHMUXEh017823 for ; Wed, 17 Nov 2010 14:30:39 -0800 Received: by qwf7 with SMTP id 7so47269qwf.34 for ; Wed, 17 Nov 2010 14:30:39 -0800 (PST) Received: by 10.229.75.76 with SMTP id x12mr7877365qcj.172.1290033038944; Wed, 17 Nov 2010 14:30:38 -0800 (PST) Received: from coign.google.com (dhcp-172-22-124-218.mtv.corp.google.com [172.22.124.218]) by mx.google.com with ESMTPS id u2sm1868026qcq.19.2010.11.17.14.30.37 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 17 Nov 2010 14:30:38 -0800 (PST) From: Ian Lance Taylor To: gcc-patches@gcc.gnu.org, gofrontend-dev@googlegroups.com Subject: [gccgo] More header file and unordered_set cleanup Date: Wed, 17 Nov 2010 14:30:36 -0800 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) MIME-Version: 1.0 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org This patch removes a more unnecessary #include <> header files from the Go frontend. It adds #include of and to go-system.h. It fixes the use of Unordered_set to actually work. Committed to gccgo branch. Ian diff -r 9322c4f59566 go/dataflow.h --- a/go/dataflow.h Wed Nov 17 14:11:36 2010 -0800 +++ b/go/dataflow.h Wed Nov 17 14:27:41 2010 -0800 @@ -7,8 +7,6 @@ #ifndef GO_DATAFLOW_H #define GO_DATAFLOW_H -#include - class Expression; class Named_object; class Statement; diff -r 9322c4f59566 go/export.h --- a/go/export.h Wed Nov 17 14:11:36 2010 -0800 +++ b/go/export.h Wed Nov 17 14:27:41 2010 -0800 @@ -4,8 +4,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -#include - #ifndef GO_EXPORT_H #define GO_EXPORT_H diff -r 9322c4f59566 go/go-dump.cc --- a/go/go-dump.cc Wed Nov 17 14:11:36 2010 -0800 +++ b/go/go-dump.cc Wed Nov 17 14:27:41 2010 -0800 @@ -6,8 +6,6 @@ #include "go-system.h" -#include - #include "go-c.h" #include "go-dump.h" diff -r 9322c4f59566 go/gogo-tree.cc --- a/go/gogo-tree.cc Wed Nov 17 14:11:36 2010 -0800 +++ b/go/gogo-tree.cc Wed Nov 17 14:27:41 2010 -0800 @@ -416,7 +416,7 @@ // A hash table we use to avoid looping. The index is the name of a // named object. We only look through objects defined in this // package. - typedef std::tr1::unordered_set Seen_objects; + typedef Unordered_set(std::string) Seen_objects; Find_var(Named_object* var, Seen_objects* seen_objects) : Traverse(traverse_expressions), diff -r 9322c4f59566 go/gogo.h --- a/go/gogo.h Wed Nov 17 14:11:36 2010 -0800 +++ b/go/gogo.h Wed Nov 17 14:27:41 2010 -0800 @@ -4,10 +4,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -#include -#include -#include - #ifndef GO_GOGO_H #define GO_GOGO_H @@ -2373,10 +2369,10 @@ type(Type*); private: - typedef std::tr1::unordered_set Types_seen; - - typedef std::tr1::unordered_set Expressions_seen; + typedef Unordered_set_hash(const Type*, Type_hash_identical, + Type_identical) Types_seen; + + typedef Unordered_set(const Expression*) Expressions_seen; // Bitmask of what sort of objects to traverse. unsigned int traverse_mask_; diff -r 9322c4f59566 go/import-archive.cc --- a/go/import-archive.cc Wed Nov 17 14:11:36 2010 -0800 +++ b/go/import-archive.cc Wed Nov 17 14:27:41 2010 -0800 @@ -6,13 +6,6 @@ #include "go-system.h" -#include -#include -#include -#include -#include -#include - #include "import.h" // Archive magic numbers. diff -r 9322c4f59566 go/import.cc --- a/go/import.cc Wed Nov 17 14:11:36 2010 -0800 +++ b/go/import.cc Wed Nov 17 14:27:41 2010 -0800 @@ -6,10 +6,6 @@ #include "go-system.h" -#include -#include -#include - #include "filenames.h" #include "simple-object.h" diff -r 9322c4f59566 go/import.h --- a/go/import.h Wed Nov 17 14:11:36 2010 -0800 +++ b/go/import.h Wed Nov 17 14:27:41 2010 -0800 @@ -7,8 +7,6 @@ #ifndef GO_IMPORT_H #define GO_IMPORT_H -#include - #include "export.h" class Gogo; diff -r 9322c4f59566 go/parse.h --- a/go/parse.h Wed Nov 17 14:11:36 2010 -0800 +++ b/go/parse.h Wed Nov 17 14:27:41 2010 -0800 @@ -7,8 +7,6 @@ #ifndef GO_PARSE_H #define GO_PARSE_H -#include - class Set_iota_traverse; class Lex; class Gogo; diff -r 9322c4f59566 go/statements.cc --- a/go/statements.cc Wed Nov 17 14:11:36 2010 -0800 +++ b/go/statements.cc Wed Nov 17 14:27:41 2010 -0800 @@ -3714,8 +3714,8 @@ void Type_case_clauses::check_duplicates() const { - typedef std::tr1::unordered_set Types_seen; + typedef Unordered_set_hash(const Type*, Type_hash_identical, + Type_identical) Types_seen; Types_seen types_seen; for (Type_clauses::const_iterator p = this->clauses_.begin(); p != this->clauses_.end(); diff -r 9322c4f59566 go/statements.h --- a/go/statements.h Wed Nov 17 14:11:36 2010 -0800 +++ b/go/statements.h Wed Nov 17 14:27:41 2010 -0800 @@ -7,8 +7,6 @@ #ifndef GO_STATEMENTS_H #define GO_STATEMENTS_H -#include - #include "operator.h" class Gogo; @@ -1139,7 +1137,7 @@ private: // For a constant tree we need to keep a record of constants we have // already seen. Note that INTEGER_CST trees are interned. - typedef std::tr1::unordered_set Case_constants; + typedef Unordered_set(tree) Case_constants; // One case clause. class Case_clause diff -r 9322c4f59566 go/types.h --- a/go/types.h Wed Nov 17 14:11:36 2010 -0800 +++ b/go/types.h Wed Nov 17 14:27:41 2010 -0800 @@ -7,9 +7,6 @@ #ifndef GO_TYPES_H #define GO_TYPES_H -#include -#include - class Gogo; class Package; class Traverse; @@ -1024,8 +1021,8 @@ build_receive_return_type(tree type); // A hash table we use to avoid infinite recursion. - typedef std::tr1::unordered_set Types_seen; + typedef Unordered_set_hash(const Named_type*, Type_hash_identical, + Type_identical) Types_seen; // Add all methods for TYPE to the list of methods for THIS. static void Index: go-system.h =================================================================== --- go-system.h (revision 166883) +++ go-system.h (working copy) @@ -27,6 +27,8 @@ #include #include #include +#include +#include #include #if defined(HAVE_UNORDERED_MAP) @@ -40,11 +42,11 @@ # define Unordered_map_hash(KEYTYPE, VALTYPE, HASHFN, EQFN) \ std::unordered_map -# define Unordered_set(KEYTYPE, VALTYPE) \ - std::unordered_set +# define Unordered_set(KEYTYPE) \ + std::unordered_set -# define Unordered_set_hash(KEYTYPE, VALTYPE, HASHFN, EQFN) \ - std::unordered_set +# define Unordered_set_hash(KEYTYPE, HASHFN, EQFN) \ + std::unordered_set #elif defined(HAVE_TR1_UNORDERED_MAP) @@ -57,11 +59,11 @@ # define Unordered_map_hash(KEYTYPE, VALTYPE, HASHFN, EQFN) \ std::tr1::unordered_map -# define Unordered_set(KEYTYPE, VALTYPE) \ - std::tr1::unordered_set +# define Unordered_set(KEYTYPE) \ + std::tr1::unordered_set -# define Unordered_set_hash(KEYTYPE, VALTYPE, HASHFN, EQFN) \ - std::tr1::unordered_set +# define Unordered_set_hash(KEYTYPE, HASHFN, EQFN) \ + std::tr1::unordered_set #elif defined(HAVE_EXT_HASH_MAP) @@ -74,11 +76,11 @@ # define Unordered_map_hash(KEYTYPE, VALTYPE, HASHFN, EQFN) \ __gnu_cxx::hash_map -# define Unordered_set(KEYTYPE, VALTYPE) \ - __gnu_cxx::hash_set +# define Unordered_set(KEYTYPE) \ + __gnu_cxx::hash_set -# define Unordered_set_hash(KEYTYPE, VALTYPE, HASHFN, EQFN) \ - __gnu_cxx::hash_set +# define Unordered_set_hash(KEYTYPE, HASHFN, EQFN) \ + __gnu_cxx::hash_set // Provide hash functions for strings and pointers. @@ -105,14 +107,11 @@ struct hash #else -# include -# include - # define Unordered_map(KEYTYPE, VALTYPE) \ std::map -# define Unordered_set(KEYTYPE, VALTYPE) \ - std::set +# define Unordered_set(KEYTYPE) \ + std::set // We could make this work by writing an adapter class which // implemented operator< in terms of the hash function.