[gcc(refs/users/clyon/heads/mve-autovec)] fix for stack-usage-1.c
Christophe Lyon
clyon@gcc.gnu.org
Wed Jan 12 08:27:37 GMT 2022
https://gcc.gnu.org/g:28c748b25e9bfabefb2020899b32aebfd7e01124
commit 28c748b25e9bfabefb2020899b32aebfd7e01124
Author: Christophe Lyon <christophe.lyon@foss.st.com>
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. */
More information about the Gcc-cvs
mailing list