From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 41384 invoked by alias); 9 Jul 2015 17:06:15 -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 41368 invoked by uid 89); 9 Jul 2015 17:06:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_50,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; Thu, 09 Jul 2015 17:06:13 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (Postfix) with ESMTPS id 9041E2D44E2 for ; Thu, 9 Jul 2015 17:06:12 +0000 (UTC) Received: from [10.10.58.54] (vpn-58-54.rdu2.redhat.com [10.10.58.54]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t69H6BO2024491; Thu, 9 Jul 2015 13:06:11 -0400 Message-ID: <559EAA03.9030506@redhat.com> Date: Thu, 09 Jul 2015 17:06: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: Jeff Law , gcc-patches Subject: Re: [patch 0/9] Flattening and initial module rebuilding References: <559BD6B3.2080207@redhat.com> <559C50F0.9090807@redhat.com> <559C668C.4050600@redhat.com> <559DA7A5.2050109@redhat.com> <559DDFAA.50400@redhat.com> In-Reply-To: <559DDFAA.50400@redhat.com> Content-Type: multipart/mixed; boundary="------------050702040202080807000903" X-IsSubscribed: yes X-SW-Source: 2015-07/txt/msg00790.txt.bz2 This is a multi-part message in MIME format. --------------050702040202080807000903 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 3932 On 07/08/2015 10:42 PM, Andrew MacLeod wrote: > On 07/08/2015 06:43 PM, Jeff Law wrote: >>> predict.h is actually required by gimple.h for a few reasons, enum >>> be_predictor is used in parameter lists and a few inlines use the >>> TAKEN, >>> NOT_TAKEN macros >>> Its also needed by cfghooks.h, and betwen those 2 files, its just >>> needed >>> by a very good chunk of the backend. .. 219 of the 263 files which >>> include backend.h need it. >>> We could move the 2 enums and TAKEN/NOT_TAKEN to coretypes or something >>> like that and it would probably cut the requirements for it by a *lot*. >> Might be something for a follow-up (moving the enums). >> >> > blah, not so trivial. One of the primary things predict.h does is > create enum br_predictor by including predict,def.. so moving that > enum doesnt really make sense. > > Fixing gimple,h isn't too bad, I could split the prediction stuff out > into gimple-predict.h and include it in the 4 places its needed (as > you might be able to tell, Ive tried this :-) > > However, it doesn't do much good. cfghooks.h is included by > basic-block.h.. which is needed virtually everywhere :-P > > There are just 2 entries in the hooks table which require 'enum > br_predictor', but I dont think it makes sense to move things out of > the cfghook structure.. I suppose once could create a prediction_hooks > structure.. and put it in predict_hooks.h... but I think thats > probably going to far to avoid including a file which makes some > logical sense.. > > The other option is to pull cfghooks.h out of basic-block.h and > include it seperately on its own.. What is the reason its in there > now? It appears to not have a cyclic dependency which is the usual > reason to have an include in the middle of a file. Or perhaps the > reason no longer exists? There is a comment at the top of cfghooks.h : > /* Only basic-block.h includes this. */ > but no rationale. > > I moved it to the very bottom of the file and everything still seems > to compile fine I can try flattening it out of basic-block.h and > only including it in places that need it... that should eliminate the > need to put predict.h in a lot of places I would think. > ok, so the results are in. a bit painful to unravel :-) these are the steps - Splitting the prediction bits of gimple.h out to gimple-predict.h and putting that file where it matters (5 files as it turns out) - Next split cfghooks.h out from basic-block.h and put it in the files that it is needed in. - then I moved predict.h out of backend.h I added it as an include to cfghooks.h and gimple-predict.h and adjusted source files accordingly.. - Finally, try to remove the extraneous cfghooks.h and predict.h files. caveat, I did no reductions on config/* files nor on languages beyond stage1 builds... havent gotten to enhancing to tool to deal with that yet.. its coming as a part of the general include reduction.. so I'll havdle these bits then. . Then result using numbers which exclude those caveat files: predict.h ends up in 68 files out of the original 179 it was in by itself. . ( ie excluding files with cfghooks.h or gimple-predict.h) cfghooks.h ends up in 89 of the original 268 that basic-block was present in. The total result affect 227 files. Now, predict.h is *still* more pervasive than it needs to be, but thats a different patch :-). There are a set of routines in there like optimize_{fucntion,loop,edge,bb}_for{speed,size}_p() that are the reason half the files need it. those should probably be moved somewhere else since they aren't really prediction related :-P Maybe a better spot will show up when the rest of the include reductions are done. I've attached a patch. It bootstraps on x86_64-unknown-linux-gnu, and I'm running regressions. To be safe, I'll run config-list.mk overnight to be sure. assuming its all fine, OK for trunk then? Andrew --------------050702040202080807000903 Content-Type: application/x-compress; name="predict.patch.Z" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="predict.patch.Z" Content-length: 28740 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 C4NjxftsWP3ZZOcsjjSrzlS+CiLkulYZag5trgPhBjA+HCD/tqmibUR57sXS 1TLLRImqBbWxqzPHHsYdWyupqgWVsLWzY1hYOwv27qeo3bMstM96i65SWc+q oEWPI7bK3tDKiWUR7VvtstxTtA7YPFpdzeyMdaqoMsGqWejHZqOqmz2kfxWe 5s2qWlLHBZEltVgoDI6L9SpJXei0BbQH9bjSV+VqaDkr5nSucBW0StddCzr1 qK+9q6i1lSpV7bpguWubdbCnE8L+RlC7N6eKeYW2XUiR2VtqW0b3Lba1pFPW NCZXnEprW6OtDa24tjaO2zFLYM1tpT2z6lavKth72FdXJ6e9l8k2wi7bCdsv 2QUKGbX4djv+QY9rVH2rZG1jJPddwFdXO0O3LcFtqwcXoopbiSppi2BdlbHo lsauTkybPisuCM24KhPsANsweWzrn7yosyE3347ca7tkf+tmPLqtNtC23Fgr Ta1swb2c1tMV2YCwCDK37oqdqzaX0ipRiHtp1+3ExVGa9lVKVQ96M5Gtp61/ 9gJzEIhni28VWdzFFya3wz6zu2sU/2e2ZYou1+rC3G87EEjdqfOp27PpraTP 800ZLq+VoDj3wEZc1Xp2SWex9auelolCVSZaL+GupmAKhoLuQlu7+3m/B7/t s/0C9Ebdv8soA++sHbxZVwb0VB+KKYUqdYW851byll2JO2xPYNoluvDW7ebS jet5GQLIDbmk1/ii2n8KXAXG6gW42pbqDlzBy1wJ762Nq2LWgt7c3ItXJ6+w zbQ+l4Ou3QspUh+seN2bBqNViF5Sq8jSL8I4vcDV/T7fEBt9qWzVfb3VN+vy 1zsnFrfp/oV/thfGOtyx+2uxa5pVopfX4o7f8Jp5NW4W5RoOo6TN3aTrhdov w4jAX0TJ+lMmG38vMEbZOVHWuAJe6Vto7avBtb404FLSgEzpfy+lAQrAk3YA e0myW2PNbu9lnXfx3cbOtot5H7DFWIH3lgJH2z+YAsvf8uXAm7EIA+EQfFnn KwnWrG+01lrfRqYfuyJ0VUlgUb/C4LArgwkkDd65NhgBu1tjG3x7sOukt4nU DHAVcBGEhbAYIsJrmFbA3yQch+evlK2/ArcER+ETHHu7Zde8wnO0h4JdHLV9 H24BRrNsE/y2zngLdIejhIWnO4ROysKRcSeZrZ8reCSjDpiM/OeGtZChExmZ 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 yXXwdwXjtTSH7EwVrhMAuPD43ucVlKcOyUG+t/M//+amXIKr7218Zbtxfn1/ jfYKr+A7F2kd+Q+Uk5I4S9nyMrw6Ny8YJuaVXJaSYUw+E84lMu/nyngKRQ/p kDmkg3N4JNQ8oFvzgb46WDoS2xyPRJtPuJWOOW76S/fhzhqcp1Vx/nLzrwK9 aLtbkW/dcjyIB7UV7+jx/KPP85DuUTmvFyeT+Fwv6vMnOsY57iWOHufD+OEN pFvDBXrkWB1hnc+4Fp1uO2h6isgpo0OtW+OgntDjYDd7CylJBAwBERDWZPcj E6Xfkgb89Ubezqv4Oz+dHv1+h2GqPsJx1MWFi1n9MJ50wOjVVbpbZx2uI0RU DxQkUj058p3pZ713tI7XsdkjHSku32Ddd2R22CE7Ih1dj+B2PZ7l9b3e18tQ ytGPiNe/0qHbvoJhOSQPkVFdsYP0LV7PR/o9z+QWdLL788s+k3aHaAfouNWs qw6F0NydD+tY4JsRmmcW5uPcrztCh+1DfaET8oZezsuQOkfnV/i8s3Pum24t aGI3n4uduIt0q17CV+cJz5lb/Zai9GcePa4HG3iMNdyGP47L7t+LB1vX7gUe iaPtMnTXh5Re5+tvyq/fOVss0Qe7/MbotFyjV2L3Htzh+3BnqsFYAdd3tovc hXF+J8b7vbK39dDePR6LdGgeQDimR3fQPt1b/PJ48dxlCf/wVMvAo0fycPE6 Icez8UAecFH5+ibvhty8c0qOLK5Vkgqe4oX9kT/1oIujEXEGBfHG3J6/2cj+ A5V7Sl/xNV6ZKISCiT08uzO+4T5+eox561HmD3yapx5k/r8r+Bna4Gc7hM+v YPEyS/Q8b64tuoP87U+1w2fU+I7lizt95+gkvqSb302eSLXHLgck30PGM1ZF 5uj3uPcwFGy90kN6TF/KwTtmJerUt4l7Y8dn0frvFY4BpJ6RSb2mPr+7sGHX vfKcksv3qv6/z/DGleUZ3U6GkywaPsYHdJ/0f7DXW+y9XEaF/ZzHmp413ALi hat96beUP+yT/BfP+sYeN0e8bJXHh5Ee+7nzkT4M4a/fqoqM268J9YHd2564 bx3e/rsncVgr3sd5BU/y1/N9Z/D4zepjOVSv8ln8ysNM/b1przpkL/G1nozL D/hh5vdxGRr4cnjHM9/NiPCPfZHPpOP96sL7RfZ5Tl3CfWafZ8uqZ/ldG5xv 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 LzRWh9wB --------------050702040202080807000903--