Hi Ramana, > From: Ramana Radhakrishnan [mailto:ramana....@googlemail.com] > Sent: Wednesday, January 14, 2015 7:21 PM > On Wed, Jan 14, 2015 at 10:20 AM, Thomas Preud'homme > <thomas.preudho...@arm.com> wrote: > > When compiling for size, live high registers are not saved in function > prolog in ARM backend in Thumb mode. The problem comes from > arm_conditional_register_usage setting call_used_regs for all high > register to avoid them being allocated. However, this cause prolog to not > save these register even if they are used. This patch marks high registers > as really needing to be saved in prolog if live, no matter what is the > content of call_used_regs. > > > > ChangeLog entries are as follows: > > > > gcc/ChangeLog > > > > 2015-01-12 Thomas Preud'homme thomas.preudho...@arm.com > > > > PR target/64453 > > * config/arm/arm.c (callee_saved_reg_p): Define. > > (arm_compute_save_reg0_reg12_mask): Use callee_saved_reg_p > to check if > > register is callee saved instead of !call_used_regs[reg]. > > (thumb1_compute_save_reg_mask): Likewise. > > > > > > gcc/testsuite/ChangeLog > > > > 2014-12-31 Thomas Preud'homme thomas.preudho...@arm.com > > > > * gcc.target/arm/pr64453.c: New. > > > > > > > > OK. > > Ramana
The patch applies cleanly on GCC 4.8 and 4.9 branches when omitting the cosmetic change in arm_conditional_register_usage () which was unintended. I compiled an arm-none-eabi GCC cross compiler and ran the testsuite for both backport without any regression. Is this ok for the 4.8 and 4.9 branches? Best regards, Thomas