From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16765 invoked by alias); 18 Jun 2010 13:59:41 -0000 Received: (qmail 16750 invoked by uid 22791); 18 Jun 2010 13:59:41 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 18 Jun 2010 13:59:37 +0000 Received: (qmail 26271 invoked from network); 18 Jun 2010 13:59:35 -0000 Received: from unknown (HELO ?84.152.216.85?) (bernds@127.0.0.2) by mail.codesourcery.com with ESMTPA; 18 Jun 2010 13:59:35 -0000 Message-ID: <4C1B7BC0.7010803@codesourcery.com> Date: Fri, 18 Jun 2010 14:08:00 -0000 From: Bernd Schmidt User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100425 Thunderbird/3.0.4 MIME-Version: 1.0 To: GCC Patches Subject: Patch 0/9: IRA cleanups and preparations for tracking subwords of DImode Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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 X-SW-Source: 2010-06/txt/msg01876.txt.bz2 I will post a series of patches as a followups to this message; the goal of it is to eventually enable us to accurately track lifetimes of subwords of DImode values in IRA. For an example, see PR42502. That testcase has one remaining problem: we generate unnecessary moves, since IRA thinks a hard reg conflicts with a DImode value when in fact it only conflicts with one subword. The problem goes back to http://gcc.gnu.org/ml/gcc-patches/2008-04/msg01990.html where Kenneth removed REG_NO_CONFLICT blocks, acknowledging that this would cause codegen regressions, but without providing any kind of replacement for the functionality other than a promise that Vlad would fix it in IRA. IMO that should never have been approved, but we'd probably have lost the functionality with the conversion to IRA anyway. The idea behind these patches is to create a new ira_object structure which tracks live ranges and conflicts. In a first step, there is one such object per allocno; the final patch will add two of them for suitable multiword allocnos. This patch queue is unfinished for now: the final piece, which adds ALLOCNO_NUM_OBJECTS and the possiblity of having more than one object per allocno, seems to be working, but I haven't tested it very much yet and I don't think I'll get it sufficiently cleaned up before the weekend. So I'm posting the patches that are already done for initial review now. I think the initial few cleanup patches should go in in any case so I'm asking for approval for them. The final three patches in this submission perform the conversion to use ira_objects and probably don't qualify on their own, but neither do they have any significant negative impact - only a few additional ALLOCNO_OBJECT/OBJECT_ALLOCNO conversions. It would be good to know if there are any objections in principle against the approach. None of these preliminary patches have been observed to change code generation in any way. With the whole set applied I've bootstrapped and regression tested on i686-linux. Bernd