This is the mail archive of the gcc@gcc.gnu.org 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] | |
On 10/29/2013, 5:20 PM, Matthew Fortune wrote:
On 10/29/2013 09:43 AM, Matthew Fortune wrote: It is hard for me to say what is going on. Elimination is done when we match hard reg against constraints. May be elimination to hfp is rejected on some sub-pass and LRA don't try all alternatives after this. Could you send me the test from which you got this dumps and what options did you use. I can say more. As I understand there should be no such problem. If reload can do right think, LRA should do the same.Attached is a reduced patch to enable LRA for mips16 with my workarounds omitted. Also attached is frametest.c which should be compiled with -O2 -mips16. Add -mreload to compare with reload and you will see the extra instruction that LRA produces. When not omitting the frame pointer, LRA and reload behave the same.
Thanks, this helped me a lot.The problem is in that LRA cannot match explicit frame pointer when it is eliminated to sp as "ks", because in LRA we don't substitute RTL operand itself and using RTL $frame for EXTRA_CONSTRAINT_STR with "ks" and it returns false for RTL $frame. In other LRA places when we need a hard register number for matching we use number of the elimination result and it works.
I'll do the patch tomorrow to fix it. The patch should be not big but it will need a lot testing.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |