From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by sourceware.org (Postfix) with ESMTPS id D673F3858C52 for ; Fri, 28 Apr 2023 21:29:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D673F3858C52 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-1a6ebc66ca4so3422185ad.3 for ; Fri, 28 Apr 2023 14:29:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682717348; x=1685309348; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=FMnNx0YsciTY/dZ6Bo/PkTGsVxcqsjj/pl0386/JA1s=; b=FhqpxGkt86gDkKk9r8MX2Y8b/aQZFYoVXt5HriQET8M6vVVXE28e3WBI1iqucm7u6G dRkJXbFvUjMF/XTs0u8aini0NpEBWDFlcSLjqB0OqhLJdTp/TzyD2tarXTnjcnnsttob unGjSNJSHdWYoBATYJ4QBCoV10WbcEwohknC2CybkuyxbdWM6lzi4MDAlST2nUU6bCrA zXEin0nbWLmpYpifNDUmGNI21QGwZuUXyVK8K2mKQ/XHVIssutM1NBm8SKg6VdnHMhPr SZV+4cukzNHRXuP8tqydqw+5GySa1qcUcrpdAK6Fjw42q0mGp1hgCt3dI40u8Oo+HnLM tGTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682717348; x=1685309348; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=FMnNx0YsciTY/dZ6Bo/PkTGsVxcqsjj/pl0386/JA1s=; b=Mv0MCKWJfkw1/UFKfFzXpX0bbVJUscuPW2UJqwhU+f9LVq+lupdYAO3a1ORnPGezGz 0zbKJvD9gPFa0i9CPCbr43xTRLk1kHqBQz3S6CD58jF4ZrcuPRjndc7CCuYIZR9MYjMR 6PTblFvBAEGn9RNwi5PJmEAzZM4L18+4exox/9bYqnNmy63WFCTsfl5r6r4gsL67d5l3 SPa8FkBzWRLhFBRUkIAV2YszTKet/cjuC2cweoeJto34zIqObd+N7S1Zmu7JLIHAiJsD rfxM7Mq/JSgJzzK7iuH+SPHAY2qr7VpP6ZZCIOPtg4YaJfRkIibdPxWD/YUiyMsLOnSS 2KUQ== X-Gm-Message-State: AC+VfDzWMt9gOlLFI9XBo18v3Ucgt8/q9ZeROn5JcIQFrepTty9wemlB +fga7dyhE7/PQ2okPR7rRS8= X-Google-Smtp-Source: ACHHUZ4Cl7XhhzpJXGX085IICXOFt6fBDqyhj/uKQBZCNSVLEst6RYBcPsVIk0C8fiC02czH1dpXfQ== X-Received: by 2002:a17:902:ef45:b0:1a6:5fa2:3293 with SMTP id e5-20020a170902ef4500b001a65fa23293mr6094690plx.56.1682717347865; Fri, 28 Apr 2023 14:29:07 -0700 (PDT) Received: from ?IPV6:2601:681:8600:13d0::99f? ([2601:681:8600:13d0::99f]) by smtp.gmail.com with ESMTPSA id m21-20020a170902bb9500b001a060007fcbsm3947135pls.213.2023.04.28.14.29.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 28 Apr 2023 14:29:07 -0700 (PDT) Message-ID: Date: Fri, 28 Apr 2023 15:29:05 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [PATCH] RISC-V: decouple stack allocation for rv32e w/o save-restore. Content-Language: en-US To: Fei Gao , gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, palmer@dabbelt.com References: <20230421100722.17288-1-gaofei@eswincomputing.com> From: Jeff Law In-Reply-To: <20230421100722.17288-1-gaofei@eswincomputing.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-9.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: On 4/21/23 04:07, Fei Gao wrote: > Currently in rv32e, stack allocation for GPR callee-saved registers is > always 12 bytes w/o save-restore. Actually, for the case without save-restore, > less stack memory can be reserved. This patch decouples stack allocation for > rv32e w/o save-restore and makes riscv_compute_frame_info more readable. > > output of testcase rv32e_stack.c > before patch: > addi sp,sp,-16 > sw ra,12(sp) > call getInt > sw a0,0(sp) > lw a0,0(sp) > call PrintInts > lw a5,0(sp) > mv a0,a5 > lw ra,12(sp) > addi sp,sp,16 > jr ra > > after patch: > addi sp,sp,-8 > sw ra,4(sp) > call getInt > sw a0,0(sp) > lw a0,0(sp) > call PrintInts > lw a5,0(sp) > mv a0,a5 > lw ra,4(sp) > addi sp,sp,8 > jr ra > > gcc/ChangeLog: > > * config/riscv/riscv.cc (riscv_forbid_save_libcall): helper function for riscv_use_save_libcall. > (riscv_use_save_libcall): call riscv_forbid_save_libcall. > (riscv_compute_frame_info): restructure to decouple stack allocation for rv32e w/o save-restore. > > gcc/testsuite/ChangeLog: > > * gcc.target/riscv/rv32e_stack.c: New test. > --- > gcc/config/riscv/riscv.cc | 57 ++++++++++++-------- > gcc/testsuite/gcc.target/riscv/rv32e_stack.c | 14 +++++ > 2 files changed, 49 insertions(+), 22 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/riscv/rv32e_stack.c > > diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc > index 5d2550871c7..6ccdfe96fe7 100644 > --- a/gcc/config/riscv/riscv.cc > +++ b/gcc/config/riscv/riscv.cc > @@ -4772,12 +4772,26 @@ riscv_save_reg_p (unsigned int regno) > return false; > } > > +/* Determine whether to disable GPR save/restore routines. */ > +static bool > +riscv_forbid_save_libcall (void) I would suggest something like this for the function comment: /* Return TRUE if a libcall to save/restore GPRs should be avoided. FALSE otherwise. */ I would also change the name from "forbid" to "avoid". With those changes I think this will be ready for the trunk. So repost after those changes and I'll get it pushed into the trunk. Thanks, Jeff