From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id A6BFA3858D28 for ; Tue, 29 Aug 2023 01:00:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A6BFA3858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=loongson.cn Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qan5v-0003JZ-Gu for gcc-patches@gcc.gnu.org; Mon, 28 Aug 2023 21:00:40 -0400 Received: from loongson.cn (unknown [10.20.4.107]) by gateway (Coremail) with SMTP id _____8AxTesqQ+1kWZ8cAA--.53066S3; Tue, 29 Aug 2023 09:00:27 +0800 (CST) Received: from [10.20.4.107] (unknown [10.20.4.107]) by localhost.localdomain (Coremail) with SMTP id AQAAf8BxXSMpQ+1k4htmAA--.32014S3; Tue, 29 Aug 2023 09:00:25 +0800 (CST) Subject: Re: [pushed][PATCH v2] LoongArch: Enable '-free' starting at -O2. To: Xi Ruoyao , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn References: <20230828034652.22768-1-chenglulu@loongson.cn> <15f4707d1be50cef5e41a0015a38829b1a1fe202.camel@xry111.site> From: chenglulu Message-ID: <935c1a83-d9f6-2d2c-5106-dd76cc34d5f6@loongson.cn> Date: Tue, 29 Aug 2023 09:00:25 +0800 User-Agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <15f4707d1be50cef5e41a0015a38829b1a1fe202.camel@xry111.site> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID:AQAAf8BxXSMpQ+1k4htmAA--.32014S3 X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBj93XoWxZF4fWr1Dtr1rJF15Ww4kuFX_yoW5KF1Dpr 1kAF1aqFW8Grn7Wr1jg348Xr95Jr4xG3WUuF45KFyUAr17Xry2qF1FqrZF9F1UJr48Jryx Zr10va47Z3Wjg3cCm3ZEXasCq-sJn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUv2b4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Jr0_JF4l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AK xVW8Jr0_Cr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r106r15McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07 AlzVAYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02 F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw 1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7Cj xVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r 1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU1wL 05UUUUU== Received-SPF: pass client-ip=114.242.206.163; envelope-from=chenglulu@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9,NICE_REPLY_A=-2.169,SPF_HELO_NONE=0.001,SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Status: No, score=-14.1 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_SHORT,NICE_REPLY_A,SPF_FAIL,SPF_HELO_PASS,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 List-Id: Pushed to r14-3533. 在 2023/8/28 下午5:21, Xi Ruoyao 写道: > On Mon, 2023-08-28 at 11:46 +0800, Lulu Cheng wrote: >> v1 -> v2: >>         1. Modify Changelog information format. >> >> gcc/ChangeLog: >> >>         * common/config/loongarch/loongarch-common.cc: >>         Enable '-free' on O2 and above. >>         * doc/invoke.texi: Modify the description information >>         of the '-free' compilation option and add the LoongArch >>         description. >> >> gcc/testsuite/ChangeLog: >> >>         * gcc.target/loongarch/sign-extend.c: New test. > LGTM. > >> --- >>  .../config/loongarch/loongarch-common.cc      |  1 + >>  gcc/doc/invoke.texi                           |  4 +-- >>  .../gcc.target/loongarch/sign-extend.c        | 25 +++++++++++++++++++ >>  3 files changed, 28 insertions(+), 2 deletions(-) >>  create mode 100644 gcc/testsuite/gcc.target/loongarch/sign-extend.c >> >> diff --git a/gcc/common/config/loongarch/loongarch-common.cc b/gcc/common/config/loongarch/loongarch-common.cc >> index fce32fa3f8d..c5ed37d27a6 100644 >> --- a/gcc/common/config/loongarch/loongarch-common.cc >> +++ b/gcc/common/config/loongarch/loongarch-common.cc >> @@ -35,6 +35,7 @@ static const struct default_options loongarch_option_optimization_table[] = >>  { >>    { OPT_LEVELS_ALL, OPT_fasynchronous_unwind_tables, NULL, 1 }, >>    { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 }, >> +  { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 }, >>    { OPT_LEVELS_NONE, 0, NULL, 0 } >>  }; >> >> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi >> index a32dabf0405..16aa92b5e86 100644 >> --- a/gcc/doc/invoke.texi >> +++ b/gcc/doc/invoke.texi >> @@ -12639,8 +12639,8 @@ Attempt to remove redundant extension instructions.  This is especially >>  helpful for the x86-64 architecture, which implicitly zero-extends in 64-bit >>  registers after writing to their lower 32-bit half. >> >> -Enabled for Alpha, AArch64, PowerPC, RISC-V, SPARC, h83000 and x86 at levels >> -@option{-O2}, @option{-O3}, @option{-Os}. >> +Enabled for Alpha, AArch64, LoongArch, PowerPC, RISC-V, SPARC, h83000 and x86 at >> +levels @option{-O2}, @option{-O3}, @option{-Os}. >> >>  @opindex fno-lifetime-dse >>  @opindex flifetime-dse >> diff --git a/gcc/testsuite/gcc.target/loongarch/sign-extend.c b/gcc/testsuite/gcc.target/loongarch/sign-extend.c >> new file mode 100644 >> index 00000000000..3f339d06bbd >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/loongarch/sign-extend.c >> @@ -0,0 +1,25 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-mabi=lp64d -O2" } */ >> +/* { dg-final { scan-assembler-times "slli.w" 1 } } */ >> + >> +extern int PL_savestack_ix; >> +extern int PL_regsize; >> +extern int PL_savestack_max; >> +void Perl_savestack_grow_cnt (int need); >> +extern void Perl_croak (char *); >> + >> +int >> +S_regcppush(int parenfloor) >> +{ >> +  int retval = PL_savestack_ix; >> +  int paren_elems_to_push = (PL_regsize - parenfloor) * 4; >> +  int p; >> + >> +  if (paren_elems_to_push < 0) >> +    Perl_croak ("panic: paren_elems_to_push < 0"); >> + >> +  if (PL_savestack_ix + (paren_elems_to_push + 6) > PL_savestack_max) >> +    Perl_savestack_grow_cnt (paren_elems_to_push + 6); >> + >> +  return retval; >> +}