From patchwork Thu Sep 22 13:26:07 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kyrill Tkachov X-Patchwork-Id: 673388 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]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3sfy210D6cz9srZ for ; Thu, 22 Sep 2016 23:26:32 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=spqC8nar; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; q=dns; s=default; b=AnnPoJy8CK+WPBcGWTXmuPzvqCIQeFSwrqMK+XK4Wec Ix8XQMceV5vK+AxnApIAJEDi03IJxUOs83RK/1UpW8qW30r3vUlutao0E5u6cAgS gtNQyNIcvIIpFWsC3bn7tQE38ehk/bB+e32h8hNsGbRqrYVS+HDgzTgrTq1IvLzk = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; s=default; bh=gUh5Eaf1SfW/MYpICQeM9JFMDiE=; b=spqC8nar6rR/s7bOF PXaaml/m4MLk2GHpn6VK9wvPTnK1344herZ9G2rambkQ9JEN/0CbVstl7chw6xzQ +dEe9fWdKjSPZ2mLG0mJwSyqo5EcJ3FRuFoKNJqiBoK9/ztjDoyYvmiyr5/O1ksO yFLsJ1wepZkD3wsJGbs9B+g4xc= Received: (qmail 52954 invoked by alias); 22 Sep 2016 13:26:22 -0000 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 Received: (qmail 52483 invoked by uid 89); 22 Sep 2016 13:26:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.0 required=5.0 tests=BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=sk:bschmid, U*bschmidt, bschmidt@redhat.com, bschmidtredhatcom X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 22 Sep 2016 13:26:11 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id F2607687; Thu, 22 Sep 2016 06:26:09 -0700 (PDT) Received: from [10.2.207.77] (e100706-lin.cambridge.arm.com [10.2.207.77]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5DDEC3F251; Thu, 22 Sep 2016 06:26:09 -0700 (PDT) Message-ID: <57E3DBEF.4090700@foss.arm.com> Date: Thu, 22 Sep 2016 14:26:07 +0100 From: Kyrill Tkachov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: GCC Patches CC: Bernd Schmidt , Bernd Edlinger Subject: [PATCH][RFC][regrename][sel-sched] Fix arm bootstrap Hi all, In the the interest of fixing arm bootstrap here are the two blocking issues and the changes proposed for them. I'm not familiar enough with regrename or sel-sched to make a call on whether these are right or not, I just want to keep the ball rolling so we can fix arm bootstrap. These changes allowed arm bootstrap to complete. Are they the right way to go? If so, I'll do a full bootstrap and test run on aarch64 and x86_64. Thanks, Kyrill 2016-09-22 Kyrylo Tkachov Bernd Edlinger Bernd Schmidt * regrename.c (rename_chains): Avoid using HARD_FRAME_POINTER_REGNUM in a boolean context. * sel-sched.c (mark_unavailable_hard_regs): Likewise. diff --git a/gcc/regrename.c b/gcc/regrename.c index 54c7768efa226139c340868e42b784fb011a19b9..a7339db441012e338de5697015f04c1fdb970164 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -464,8 +464,7 @@ rename_chains (void) if (frame_pointer_needed) { add_to_hard_reg_set (&unavailable, Pmode, FRAME_POINTER_REGNUM); - if (!HARD_FRAME_POINTER_IS_FRAME_POINTER) - add_to_hard_reg_set (&unavailable, Pmode, HARD_FRAME_POINTER_REGNUM); + add_to_hard_reg_set (&unavailable, Pmode, HARD_FRAME_POINTER_REGNUM); } FOR_EACH_VEC_ELT (id_to_chain, i, this_head) @@ -479,10 +478,9 @@ rename_chains (void) continue; if (fixed_regs[reg] || global_regs[reg] - || (!HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed - && reg == HARD_FRAME_POINTER_REGNUM) - || (HARD_FRAME_POINTER_REGNUM && frame_pointer_needed - && reg == FRAME_POINTER_REGNUM)) + || (frame_pointer_needed + && (reg == HARD_FRAME_POINTER_REGNUM + || reg == FRAME_POINTER_REGNUM))) continue; COPY_HARD_REG_SET (this_unavailable, unavailable); diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 25a100ee34f6ceaceda2814ae281cadf8b29e688..4a2679c6701c256c5559fa1e9c156bdaad1c2891 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -1183,10 +1183,8 @@ mark_unavailable_hard_regs (def_t def, struct reg_rename *reg_rename_p, frame pointer, or we could not discover its class. */ if (fixed_regs[regno] || global_regs[regno] - || (!HARD_FRAME_POINTER_IS_FRAME_POINTER && frame_pointer_needed + || (frame_pointer_needed && regno == HARD_FRAME_POINTER_REGNUM) - || (HARD_FRAME_POINTER_REGNUM && frame_pointer_needed - && regno == FRAME_POINTER_REGNUM) || (reload_completed && cl == NO_REGS)) { SET_HARD_REG_SET (reg_rename_p->unavailable_hard_regs);