On 01/05/15 00:44, Kito Cheng wrote:
Hi Vladimir:
This patch has a discusses with you in May 2014, this patch is about
the caller-save register store and restore instruction generation, the
current LRA implementation will miss caller-save store/restore
instruction if need one more instruction.
You said you will investigate for this on IRC, so I don't send the
patch last year, however ARM guys seem got this problem too, so I
think it's time to send this patch :)
ChangeLog
2015-01-05 Kito Cheng <k...@0xlab.org>
* lra-constraints.c (split_reg): Fix caller-save store/restore
instruction generation.
Please reference PR64348 in the ChangeLog entry.
Please include a testcase if there isn't one in the regression suite
already.
Please indicate what platform this patch was bootstrapped and regression
tested on.
The dumping code immediately after the assert you removed has code like
this in both cases:
fprintf (lra_dump_file,
" Rejecting split %d->%d "
"resulting in > 2 %s restore insns:\n",
original_regno, REGNO (new_reg), call_save_p ?
"call" : "");
Testing call_save_p here won't make any sense after your patch.
I'll let Vlad chime in on the correctness of allowing multi register
saves/restores in this code.
Jeff