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: PATCH: Don't create pseudos after no_new_pseudos on SH

It is not good practice to unnecessarily duplicate the test in
zero_extendqisi2 in gen_shl_and .  Rather, zero_extendqisi2 and
zero_extendhisi2 should FAIL; when they would need a new pseudo
but can't have one, and this could be tested in gen_shl_and.

However, it doesn't seem right to feed gen_shl_and with this
stuff in the first place.  The problem does actually occur before
reload; if it was after reload, the "=r" / "0" constraints would
have straigtened the operand 0 /1 of ashrdi3+3 out.  The problem
actually occurs in the (relatively new) pre-register-allocation
splitting pass.
I don't think it buys us anything to run ashrdi3+[12] before
register allocation; the pattern is such that a spill register
will do just as well as a normally allocated hard register, yet
when we split the pattern, we suddenly see the register pressure
on the input / output increased.

So, I think it is best to predicate ashrdi3+[12] on

SuperH (UK) Ltd.
2410 Aztec West / Almondsbury / BRISTOL / BS32 4QX
T:+44 1454 465658

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