From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17301 invoked by alias); 17 Jan 2004 00:19:06 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 17293 invoked from network); 17 Jan 2004 00:19:04 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 17 Jan 2004 00:19:04 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id i0H0J4g30584 for ; Fri, 16 Jan 2004 19:19:04 -0500 Received: from pobox.toronto.redhat.com (pobox.toronto.redhat.com [172.16.14.4]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id i0H0J4E31048 for ; Fri, 16 Jan 2004 19:19:04 -0500 Received: from dnovillo.cipe.redhat.com (dnovillo.cipe.redhat.com [10.0.0.106]) by pobox.toronto.redhat.com (8.12.8/8.12.8) with ESMTP id i0H0J2Xd020750 for ; Fri, 16 Jan 2004 19:19:02 -0500 Subject: [RFC] Contributing tree-ssa to mainline From: Diego Novillo To: "gcc@gcc.gnu.org" Content-Type: text/plain Organization: Red Hat Canada Message-Id: <1074298740.3147.79.camel@frodo.toronto.redhat.com> Mime-Version: 1.0 Date: Sat, 17 Jan 2004 00:19:00 -0000 Content-Transfer-Encoding: 7bit X-SW-Source: 2004-01/txt/msg00981.txt.bz2 Now that we are about to enter Stage 1 of 3.5, I wanted to solicit feedback regarding the merge of the tree-ssa branch into mainline. First and foremost is the obvious question of whether people think that the whole infrastructure is worth adding to GCC at all. From what we've discussed in the past few months, the consensus seems to be that it is. But I think it's important to find out if folks think otherwise. If we decide to add SSA for 3.5, then we need to determine exactly how we are going to go about it. I will try to summarize the more important points to get the discussion going. In the following I assume that we have decided to add tree-ssa to GCC: 1- The changes in tree-ssa are pretty big. A quick diff against the 3.4 branchpoint in the gcc directory shows 11558 files changed, 161996 insertions(+), 14697 deletions(-), 30494 modifications(!) Some of that is due to the drift since the latest merge, but that should give you an idea. That doesn't include changes to ../lib*. 2- Ada and g77 do not work anymore. The new Fortran 95 front end replaces g77, though I'm not sure what's the compatibility situation. There is no replacement for Ada. As it is today, it is impossible to build an Ada compiler with the branch. 3- There are several bug reports opened against the branch (92 as of today). 4- The branch lags in performance wrt mainline by about 3% in SPECint and is about 4% faster in SPECfp (take these numbers with a grain of salt, this is from my daily SPEC runs). So, there clearly is much work to be done yet. A very conservative view would be to declare the branch still not ripe for inclusion and wait for GCC 3.6. Pros Mainline is not disrupted with such major changes. We avoid a possibly lengthy 3.5 cycle. Other major work can go in without worrying about the new infrastructure. Cons The SSA bits stay secluded without the benefits of the widespread testing done on mainline. Other major changes may interfere with tree-ssa, slowing down progress in the branch. Benefits given by the new infrastructure cannot be used for new work. Another thing to consider is that we need to have peer review for all the changes done in the branch. The implementation and/or design will need to be reviewed and may require extensive changes. If we are going to merge during Stage1, we could either phase in all the changes separately or just drop the whole thing at once. For reviewing purposes, we probably want to phase-in. Though, we could do the review separately and then drop the whole thing. The are few independent chunks in the branch (listed in precedence order): 1. Folder changes. 2. GENERIC/GIMPLE. 3. tree->rtl expanders. 4. g95. 5. SSA infrastructure A. operand discovery. B. alias analysis. C. pass manager. D. individual passes. 2 and 3 need to go in together and are the ones that prevent Ada and g77 from working. So, once those are in, we can't go back. I may be forgetting a bunch of stuff. I would like to reach a consensus soonish so that we can plan accordingly. Thanks. Diego.