From patchwork Fri Aug 4 13:16:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Vladimir Makarov X-Patchwork-Id: 131170 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:44a:b0:3f2:4152:657d with SMTP id ez10csp255732vqb; Fri, 4 Aug 2023 06:17:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFOE1EPyrLCSUdYppQ+5Ny/P5rQjQfd/puSQC5wvIkmcVrY8yK5rsUmKP1c9lHAV8m7kvyM X-Received: by 2002:aa7:d611:0:b0:521:d2ab:e4df with SMTP id c17-20020aa7d611000000b00521d2abe4dfmr2164598edr.19.1691155040628; Fri, 04 Aug 2023 06:17:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691155040; cv=none; d=google.com; s=arc-20160816; b=z/4eaXulcRja7JndwgroLRec/Q4QN04jRyqEJnx2IxMhwBWyGBKvwea9wa5sV+75q+ HcohkEwL5yHWxusG9FJacWfwWGgKDV90oYJNwKSLa+Xapb8j9SY1cF/5HOqrSi1TpfX8 cNP5vzEocMAZJBHIkPN6yQnmNdIVW4oA06UF/W5Yf3qd3DGS8bYsk9PEVs9WwBGm22od bYUBZ56+LGJcvaZYHQOKwXAGJdtL7FLma1IJtByFMdAzKJIMF/m4q3vPLnc8heWabRl7 oVZ10RZ/cwwFx2vF6QkNP5UKJslIVmi3Ngd7SA56wsLukTaLX9HTXLkgRE0dy5ZciVh2 15hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:content-language :subject:to:user-agent:mime-version:date:message-id:dmarc-filter :delivered-to:dkim-signature:dkim-filter; bh=0QkL/8+ToFb8ZSgYDuaCz8XiGD/+ynSPwencTP1ioRA=; fh=h0vFqS7cujiRJerHy6AGSU55RdXS18Wx8Z1jE0P/K4U=; b=jAKuCaTCEB21WBlF7/H+dESJGoN9gCc903PYx9nsFroeTq2p2+Q2Lm31WiebrzOjHx S59hPZ9DMlCOlph+k3e1oZbFgAJ/jdnQAihIWPIYGdiuhbiGj+w0OqFYW7onkQtDfaaj AxfOp59pZrT9BFk21CpuZ9Spw5gD05Udy1sTegV9XhRcLBOgGbGAS7TtN0tOme7RwbLW wrwlniLIq8Q74Uvcgme6Xrw6xw5PrM31b9DNgCJQvkyeUmtuNNOYe4wbjs6+jeyCMrw8 seZ9/JhwCMs424yww8wY3OB7EZ1hFoVlBGkwCWjYs0ApWGn/Yg2chp2+8Qx0ueFXOJok Cg6w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=gLKj5nHQ; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id x15-20020aa7dacf000000b005224f3f470bsi1596117eds.137.2023.08.04.06.17.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 06:17:20 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=gLKj5nHQ; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 87E623857732 for ; Fri, 4 Aug 2023 13:17:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 87E623857732 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1691155039; bh=0QkL/8+ToFb8ZSgYDuaCz8XiGD/+ynSPwencTP1ioRA=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=gLKj5nHQe4JERKFV4+T5yXXM2ZL47TstNBuvGuE0+kjs5Z4oyUUOoyMPBtbpk8eSq Y/px3rjgzfiYcmC6cD7D6Fv/pJMyi+I2o+BApckr3v9GSNsuVARHZg/gER5pUBSoc9 Y1N15LB2h/CvfhRpHOFjwl9xS53rWMBavmZmJErc= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 81A4F3858C5F for ; Fri, 4 Aug 2023 13:16:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 81A4F3858C5F Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-297-mUrAIXJ4MiaDrq_xT0zn3g-1; Fri, 04 Aug 2023 09:16:33 -0400 X-MC-Unique: mUrAIXJ4MiaDrq_xT0zn3g-1 Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-63d10c323c3so22240196d6.0 for ; Fri, 04 Aug 2023 06:16:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691154992; x=1691759792; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=J2TEXbWSw6iUT16iNlePNv4OMgwbtctpsDSrGB61Cmg=; b=YWh4JdzsLZrs8aCChLL43mAMIAeUSfFdWR9LO7g4hTOTjDdkUYz689gpk8j0gEeJs4 u8tdttwIDQK6mfn7zbpw5uySuH2NVCBYNtjXWWiI1RENu4UcXYA2GopFYMe7HOydHcpP m4TQtdQhulIDHUsCk07fHNBQ/u7WRqBn2tSOhfWMSLOwg5YhLSCTK6NnHAoZTHGWT0Ov WvQ+FcpasMxe1E7Sv0hi6RogYEtHiW9Sv74nhMZchkGAyqjDzWegm29/jPMBvvRyzuVv nWT9iDvyKidB5Ez0rQe1cK3PRWo6wtuWJgE/yZ2VvyQMIzWBGwq1Wc/eTLcV9ihmK6p7 KNdw== X-Gm-Message-State: AOJu0Yw514CEqygRPNK4GbexCXfzJGf9lFT/99TaYopyDcqHbbQkIEa5 feXwkGa5DDA1rqXI26JOHxw3EEMZNIDrPNN8+nB580eJfyLtb3fxxEvuUdI2F0nEYWuR1QWuTGH YGYaEQF5xsIiWbDXBaB+KxfWumDHPcDU4UnOVvRT11WEwU49v4e+sIF8dbstO0l1IrlshM1D5hy iHPg== X-Received: by 2002:a0c:dc08:0:b0:63c:fc23:be8b with SMTP id s8-20020a0cdc08000000b0063cfc23be8bmr1721179qvk.3.1691154992390; Fri, 04 Aug 2023 06:16:32 -0700 (PDT) X-Received: by 2002:a0c:dc08:0:b0:63c:fc23:be8b with SMTP id s8-20020a0cdc08000000b0063cfc23be8bmr1721153qvk.3.1691154992021; Fri, 04 Aug 2023 06:16:32 -0700 (PDT) Received: from [192.168.1.88] (192-0-143-139.cpe.teksavvy.com. [192.0.143.139]) by smtp.gmail.com with ESMTPSA id e29-20020a0cb45d000000b00632266b569esm657927qvf.87.2023.08.04.06.16.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 04 Aug 2023 06:16:31 -0700 (PDT) Message-ID: <1a178e39-3da5-320a-b2ce-281ce2d70b7f@redhat.com> Date: Fri, 4 Aug 2023 09:16:30 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 To: "gcc-patches@gcc.gnu.org" , SenthilKumar.Selvaraj@microchip.com Subject: [pushed][LRA] Check input insn pattern hard regs against early clobber hard regs for live info X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Vladimir Makarov via Gcc-patches From: Vladimir Makarov Reply-To: Vladimir Makarov Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773304588027875954 X-GMAIL-MSGID: 1773304588027875954 The following patch fixes a problem found by LRA port for avr target.  The problem description is in the commit message. The patch was successfully bootstrapped and tested on x86-64 and aarch64. commit abf953042ace471720c1dc284b5f38e546fc0595 Author: Vladimir N. Makarov Date: Fri Aug 4 08:04:44 2023 -0400 LRA: Check input insn pattern hard regs against early clobber hard regs for live info For the test case LRA generates wrong code for AVR cpymem_qi insn: (insn 16 15 17 3 (parallel [ (set (mem:BLK (reg:HI 26 r26) [0 A8]) (mem:BLK (reg:HI 30 r30) [0 A8])) (unspec [ (const_int 0 [0]) ] UNSPEC_CPYMEM) (use (reg:QI 52)) (clobber (reg:HI 26 r26)) (clobber (reg:HI 30 r30)) (clobber (reg:QI 0 r0)) (clobber (reg:QI 52)) ]) "t.c":16:22 132 {cpymem_qi} The insn gets the same value in r26 and r30. The culprit is clobbering r30 and using r30 as input. For such situation LRA wrongly assumes that r30 does not live before the insn. The patch is fixing it. gcc/ChangeLog: * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs against early clobber hard regs. gcc/testsuite/ChangeLog: * gcc.target/avr/lra-cpymem_qi.c: New. diff --git a/gcc/lra-lives.cc b/gcc/lra-lives.cc index f7a3ba8d76a..f60e564da82 100644 --- a/gcc/lra-lives.cc +++ b/gcc/lra-lives.cc @@ -989,7 +989,7 @@ process_bb_lives (basic_block bb, int &curr_point, bool dead_insn_p) /* We can have early clobbered non-operand hard reg and the same hard reg as an insn input. Don't make hard reg dead before the insns. */ - for (reg2 = curr_id->regs; reg2 != NULL; reg2 = reg2->next) + for (reg2 = curr_static_id->hard_regs; reg2 != NULL; reg2 = reg2->next) if (reg2->type != OP_OUT && reg2->regno == reg->regno) break; if (reg2 == NULL) diff --git a/gcc/testsuite/gcc.target/avr/lra-cpymem_qi.c b/gcc/testsuite/gcc.target/avr/lra-cpymem_qi.c new file mode 100644 index 00000000000..fdffb445b45 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/lra-cpymem_qi.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-mmcu=avr51 -Os" } */ + +#include + +struct A +{ + unsigned int a; + unsigned char c1, c2; + bool b1 : 1; +}; + +void +foo (const struct A *x, int y) +{ + int s = 0, i; + for (i = 0; i < y; ++i) + { + const struct A a = x[i]; + s += a.b1 ? 1 : 0; + } + if (s != 0) + __builtin_abort (); +} + +/* { dg-final { scan-assembler-not "movw\[^\n\r]*r26,r30" } } */