The update is the same code as you have seen before, but I re-mailed it with changes to webmail settings to be plain text instead of html and hopefully fixing the formatting issues you had before. I have not gotten any e-mail from Richard either via the gcc-patches list or directly; do you know the nature of these concerns?
Thanks, Matt > On 10/13/2025 5:17 PM EDT Christophe Lyon <[email protected]> wrote: > > > On Mon, 13 Oct 2025 at 21:00, Matt Parks <[email protected]> wrote: > > > > This patch fixes PR117366: > > arm thumb1 epilogue size optimizer violates -ffixed-r4. > > > > gcc/ChangeLog: > > PR target/117366 > > * arm.cc (thumb1_extra_regs_pushed): Take fixed regs into account. > > > Thanks for the update. > I think Richard has some worries / comments? > > Christophe > > > Christophe > > > --- > > gcc/config/arm/arm.cc | 5 +++-- > > gcc/testsuite/gcc.target/arm/pr117366.c | 14 ++++++++++++++ > > 2 files changed, 17 insertions(+), 2 deletions(-) > > create mode 100644 gcc/testsuite/gcc.target/arm/pr117366.c > > > > diff --git a/gcc/config/arm/arm.cc b/gcc/config/arm/arm.cc > > index bde06f3fa86..6c3000f0d25 100644 > > --- a/gcc/config/arm/arm.cc > > +++ b/gcc/config/arm/arm.cc > > @@ -26746,8 +26746,9 @@ thumb1_extra_regs_pushed (arm_stack_offsets > > *offsets, bool for_prologue) > > live_regs_mask >>= reg_base; > > } > > > > - while (reg_base + n_free < 8 && !(live_regs_mask & 1) > > - && (for_prologue || call_used_or_fixed_reg_p (reg_base + n_free))) > > + while (reg_base + n_free <= LAST_LO_REGNUM && !(live_regs_mask & 1) > > + && (for_prologue || (call_used_or_fixed_reg_p (reg_base + n_free) > > + && !fixed_regs[reg_base + n_free]))) > > { > > live_regs_mask >>= 1; > > n_free++; > > diff --git a/gcc/testsuite/gcc.target/arm/pr117366.c > > b/gcc/testsuite/gcc.target/arm/pr117366.c > > new file mode 100644 > > index 00000000000..b23d114381b > > --- /dev/null > > +++ b/gcc/testsuite/gcc.target/arm/pr117366.c > > @@ -0,0 +1,14 @@ > > + > > +/* { dg-do compile } */ > > +/* { dg-options "-Os -ffixed-r4 -ffixed-r5 -ffixed-r6 -ffixed-r7" } */ > > +/* { dg-require-effective-target arm_arch_v5t_thumb_ok } */ > > +/* { dg-add-options arm_arch_v5t_thumb } */ > > +void func(void *, void *, void *, int, int); > > + > > +int bad_func(void) { > > + int a, b, c; > > + func(&a, &b, &c, 1, 2); > > + return b; > > +} > > + > > +/* { dg-final { scan-assembler-not "pop.*r\[4567\]" } } */ > > -- > > 2.34.1
