This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ARM] Remove register constraints from push multiple patterns (was Re: [PATCH] Provide a hook for target to disable register renaming for some instructions)

On 07/05/2010 04:51 PM, Richard Earnshaw wrote:

On Sun, 2010-07-04 at 00:44 +0800, Jie Zhang wrote:
On 07/01/2010 09:37 PM, Richard Earnshaw wrote:

On Thu, 2010-07-01 at 21:19 +0800, Jie Zhang wrote:
On 07/01/2010 02:03 AM, Richard Henderson wrote:
On 06/30/2010 10:53 AM, Jie Zhang wrote:
When compiler an application for ARM, the GAS issued a warning:

Warning: register range not in ascending order

for the instruction

push {ip, r3, r4, lr}

Before regrename pass, this instruction looked like

push {r0, r3, r4, lr}

Doesn't it work just as well to simply remove the register constraint from the push_multi instruction? Without that the regrename pass won't get a register class for the operand and will leave it alone.

According to Richard's comment, a new patch is attached.  It removes
register constraints from all three push multiple patterns.  Since there
are no constraints for operand 1 of *push_multi_vfp, I use a new
predicate to make it more stricter.

Tested on arm-none-eabi for NEON and non-NEON. No regressions found.

Is it OK?



Thanks. Committed on trunk. OK for 4.5 branch, too?


Thanks. Committed on 4.5 branch now.

-- Jie Zhang CodeSourcery

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]