From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1652) id 27979393A414; Wed, 12 Jan 2022 08:27:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 27979393A414 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Christophe Lyon To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/clyon/heads/mve-autovec)] fix for stack-usage-1.c X-Act-Checkin: gcc X-Git-Author: Christophe Lyon X-Git-Refname: refs/users/clyon/heads/mve-autovec X-Git-Oldrev: ffdfb751f19947027c3f3226e8d43bd11565ad6f X-Git-Newrev: 28c748b25e9bfabefb2020899b32aebfd7e01124 Message-Id: <20220112082737.27979393A414@sourceware.org> Date: Wed, 12 Jan 2022 08:27:37 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Jan 2022 08:27:37 -0000 https://gcc.gnu.org/g:28c748b25e9bfabefb2020899b32aebfd7e01124 commit 28c748b25e9bfabefb2020899b32aebfd7e01124 Author: Christophe Lyon Date: Mon Dec 20 21:26:59 2021 +0000 fix for stack-usage-1.c Diff: --- gcc/config/arm/arm.c | 3 +++ gcc/config/arm/arm.h | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index a5b403eb3e4..fa17bdb50d4 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -25287,6 +25287,9 @@ thumb2_asm_output_opcode (FILE * stream) static unsigned int arm_hard_regno_nregs (unsigned int regno, machine_mode mode) { + if (IS_VPR_REGNUM (regno)) + return CEIL (GET_MODE_SIZE (mode), 2); + if (TARGET_32BIT && regno > PC_REGNUM && regno != FRAME_POINTER_REGNUM diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 08b858effd8..c5e994df1ce 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1456,7 +1456,9 @@ extern const char *fp_sysreg_names[NB_FP_SYSREGS]; ARM regs are UNITS_PER_WORD bits. FIXME: Is this true for iWMMX? */ #define CLASS_MAX_NREGS(CLASS, MODE) \ - (ARM_NUM_REGS (MODE)) + (CLASS == VPR_REG) \ + ? CEIL (GET_MODE_SIZE (MODE), 2) \ + : (ARM_NUM_REGS (MODE)) /* If defined, gives a class of registers that cannot be used as the operand of a SUBREG that changes the mode of the object illegally. */