From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 62300 invoked by alias); 7 Jul 2015 13:40:07 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 62288 invoked by uid 89); 7 Jul 2015 13:40:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_40,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Tue, 07 Jul 2015 13:40:06 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (Postfix) with ESMTPS id B8115558DE for ; Tue, 7 Jul 2015 13:40:04 +0000 (UTC) Received: from [10.10.63.37] (vpn-63-37.rdu2.redhat.com [10.10.63.37]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t67De3W7009686 for ; Tue, 7 Jul 2015 09:40:04 -0400 Message-ID: <559BD6B3.2080207@redhat.com> Date: Tue, 07 Jul 2015 13:40:00 -0000 From: Andrew MacLeod User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: gcc-patches Subject: [patch 0/9] Flattening and initial module rebuilding Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2015-07/txt/msg00501.txt.bz2 This is a series of 9 patches which does some flattening, some module building, and some basic cleanups. I am presenting them as 9 patches for easier review. The latter couple of patches affect a lot of the same files that follow on patches then adjust, I've decided NOT to put the automated changes in with each of those patches. There are 8 patches showing the key changes, and then the 9th patch is an aggregate of the first 8 key changes, plus the final result of the impact on all the source files. This is the only patch I'd like to commit. The automated tools which generate the source changes have been significantly enhanced. When a header is flattened, the source file is checked for the existence of the headers which need moving, and any which are already present are left if they are in the right order. Any duplicate are also removed. A similar process is used when an aggregation file like backend.h or ssa.h is processed. Any occurrences of the aggregated headers are removed from the source file so there are no duplicates. The aggregated headers are typically only placed in a source file if 3 or more of the headers would be replaced. (ie, if only bitmap.h is included, I don't just blindly put backend.h in the file.) This number came from analysis of a fully flattened and include-reduced tree, and seemed to be the sweet spot. With the aggregation and flattening, the order of some includes can get shifted around with other files in between, so the tools also ensure there is a "blessed" order which will make sure than any pre-reqs are always available. Right now, its primarily: config.h system.h coretypes.h backend.h tree.h gimple.h rtl.h df.h ssa.h And if any of the aggregators are not present, then any headers which make up the aggregator are in the same relative position. The tools actually produced all these patches with no tweaking to solve compilation failures.. which was very helpful. The old ones needed some guidance and were a bit finicky. I can adjust any of this quite easily, or present them in a different way if you don't like it this way. Again, my goal is to check in just the final patch which does all the work of first 8 patches. It would be a lot less turmoil on the branch. I can do it in smaller chunks if need be. Andrew