From patchwork Thu Feb 16 20:22:57 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Makarov X-Patchwork-Id: 141683 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 7AA6FB6F9C for ; Fri, 17 Feb 2012 07:23:24 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1330028605; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=EhbO1KN GWc7fyFJnMuDMxlN05QA=; b=ZJ1KAypqoaYgyI1wG3oj16WXIqJ4XDP2rILJ/lw tcJXETIZ0yoiQBvAek/166rBHR1y9P46b8wkkvAtwuDSIb0kP417naKhS2+H2O4e W+GBnjC8HpwDt/Gpy9i+QNIOqmltJPMJmBIAXBscVnHdAczblu+KJl3g4g3oDyT7 uMoI= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=mtuE2MaMM7EZG/66AJCKJniMacxEf6RMOUQDog8DBq6k12j1EyJA8pGpIM0zDJ CeHfwGMBOl7WNzHDjxgpVILGfAdniPYKnhNVXHE2keoxFrs5mFEzDcqlht4l9C/a KzN39usRGMXvqE61K4yStaH7qvQnOj0aJO61ZTcyFCx3A=; Received: (qmail 20331 invoked by alias); 16 Feb 2012 20:23:16 -0000 Received: (qmail 20318 invoked by uid 22791); 16 Feb 2012 20:23:15 -0000 X-SWARE-Spam-Status: No, hits=-6.5 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_HI, SPF_HELO_PASS, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 16 Feb 2012 20:22:59 +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 (8.14.4/8.14.4) with ESMTP id q1GKMwbC030278 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 16 Feb 2012 15:22:58 -0500 Received: from toll.yyz.redhat.com (unused [10.15.16.165] (may be forged)) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q1GKMwtw018763 for ; Thu, 16 Feb 2012 15:22:58 -0500 Message-ID: <4F3D65A1.6000203@redhat.com> Date: Thu, 16 Feb 2012 15:22:57 -0500 From: Vladimir Makarov User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111108 Fedora/3.1.16-1.fc14 Thunderbird/3.1.16 MIME-Version: 1.0 To: gcc-patches Subject: [lra] add most common case to choose reg class for split pseudo 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 I found there are too many rejecting pseudo splits because I excluded most common case of choosing register class for split pseudo. The following patch fixes this. Committed as rev. 184315. 2012-02-16 Vladimir Makarov * lra-constraints.c (choose_split_class): Check allocno_class too. (split_pseudo): Print more debug info about split rejecting because of reg class. Index: lra-constraints.c =================================================================== --- lra-constraints.c (revision 184215) +++ lra-constraints.c (working copy) @@ -3810,6 +3810,9 @@ choose_split_class (enum reg_class alloc enum reg_class cl, best_cl = NO_REGS; enum reg_class hard_reg_class = REGNO_REG_CLASS (hard_regno); + if (! SECONDARY_MEMORY_NEEDED (allocno_class, allocno_class, mode) + && TEST_HARD_REG_BIT (reg_class_contents[allocno_class], hard_regno)) + return allocno_class; for (i = 0; (cl = reg_class_subclasses[allocno_class][i]) != LIM_REG_CLASSES; i++) @@ -3881,8 +3884,13 @@ split_pseudo (bool before_p, int origina if (lra_dump_file != NULL) { fprintf (lra_dump_file, - " Rejecting split of %d: no good reg class\n", - original_regno); + " Rejecting split of %d(%s): " + "no good reg class for %d(%s)\n", + original_regno, + reg_class_names[lra_get_allocno_class (original_regno)], + reg_renumber[original_regno], + reg_class_names[REGNO_REG_CLASS + (reg_renumber[original_regno])]); fprintf (lra_dump_file, " ))))))))))))))))))))))))))))))))))))))))))))))))\n"); }