From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by sourceware.org (Postfix) with ESMTPS id 043003858418 for ; Mon, 14 Mar 2022 07:47:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 043003858418 Received: by mail-ed1-x529.google.com with SMTP id b24so18509038edu.10 for ; Mon, 14 Mar 2022 00:47:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=3xSfhjw0onNLwG/OsYGjEb0LKSQum9aLK6myCgLeAR4=; b=G3ea0jTaucktoEiFAi3uR/AskvB1BMqRBoZ87pQudx16WsVZBvvhjZmIir0U6/qI/B PaQuHyxYCvFc3ysQdVik34IMy2BJ4yT7IuKbLU5frux0969VBi4LKUdEJVGg4lFcFiHZ XUE6s5Y/k8qmFVZ/JqJZaGroTamtRcNbQIObqFylz26v0TVqxqYx4tjBmSifLbDTGcRm iMHfgnMBQbXab8zTJ9PMX43QZCeyXxTzfxFxACa2F1XLuw5GwAWIFhHSZhoGPPYz7BXF YP1LmdyfqBTcPR7k26Nptb32o5N7u6rIWmxEvVluCdfTaBEL4qxTK59FpHvXNz3PoRK/ eDPQ== X-Gm-Message-State: AOAM532SYW9hqSunR12I+ABZ+Bkv8EkkDfy2OZh+G3aPTGmB9iMYpvPK u0mrHSJ2RmpFhIEf1ezq2LP+Gve069JePOXnpAE= X-Google-Smtp-Source: ABdhPJwZmLju9kHIKzd98djGKwX8XoTduYJj06eeXmv1xe6mNn+6HQ9rjsVuf9ON31jYBE578FF1qLRNF0o2CPxK73M= X-Received: by 2002:aa7:d543:0:b0:416:13eb:6fec with SMTP id u3-20020aa7d543000000b0041613eb6fecmr19603796edr.348.1647244022682; Mon, 14 Mar 2022 00:47:02 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Richard Biener Date: Mon, 14 Mar 2022 08:46:51 +0100 Message-ID: Subject: Re: [PATCH][Middle-end][Backport to GCC11][PR100775]Updating the reg use in exit block for -fzero-call-used-regs To: Qing Zhao Cc: richard Sandiford , gcc-patches Paul A Clarke via Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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-List-Received-Date: Mon, 14 Mar 2022 07:47:05 -0000 On Fri, Mar 11, 2022 at 5:31 PM Qing Zhao via Gcc-patches wrote: > > > Hi, > > I plan to backport the patch to fix PR100775: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100775 > > To gcc11 since this is a general bug to -fzero-call-used-regs. And should be fixed in gcc11 as well. > > I have tested the patch with gcc11 release branch on both x86 and aarch64, no regression. > > Okay for commit? OK > thanks. > > Qing. > > ================================================== > > > From 737a0ccccb0824111f46da44c5578b9769070c52 Mon Sep 17 00:00:00 2001 > From: Qing Zhao > Date: Thu, 10 Mar 2022 23:22:29 +0000 > Subject: [PATCH] middle-end: updating the reg use in exit block for > -fzero-call-used-regs [PR100775] GCC11 backport. > > In the pass_zero_call_used_regs, when updating dataflow info after adding > the register zeroing sequence in the epilogue of the function, we should > call "df_update_exit_block_uses" to update the register use information in > the exit block to include all the registers that have been zeroed. > > gcc/ChangeLog: > > PR middle-end/100775 > * function.c (gen_call_used_regs_seq): Call > df_update_exit_block_uses when updating df. > > gcc/testsuite/ChangeLog: > > PR middle-end/100775 > * gcc.target/arm/pr100775.c: New test. > --- > gcc/function.c | 2 +- > gcc/testsuite/gcc.target/arm/pr100775.c | 9 +++++++++ > 2 files changed, 10 insertions(+), 1 deletion(-) > create mode 100644 gcc/testsuite/gcc.target/arm/pr100775.c > > diff --git a/gcc/function.c b/gcc/function.c > index fc7b147b5f1..0495e9f1b81 100644 > --- a/gcc/function.c > +++ b/gcc/function.c > @@ -5922,7 +5922,7 @@ gen_call_used_regs_seq (rtx_insn *ret, unsigned int zero_regs_type) > > /* Update the data flow information. */ > crtl->must_be_zero_on_return |= zeroed_hardregs; > - df_set_bb_dirty (EXIT_BLOCK_PTR_FOR_FN (cfun)); > + df_update_exit_block_uses (); > } > } > > diff --git a/gcc/testsuite/gcc.target/arm/pr100775.c b/gcc/testsuite/gcc.target/arm/pr100775.c > new file mode 100644 > index 00000000000..c648cd5e8f7 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/arm/pr100775.c > @@ -0,0 +1,9 @@ > +/* { dg-do compile } */ > +/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */ > +/* { dg-options "-mthumb -fzero-call-used-regs=used" } */ > + > +int > +foo (int x) > +{ > + return x; > +} > -- > 2.27.0 > >