This is the mail archive of the gcc-patches@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 11/13/2018 10:53 AM, Peter Bergner wrote:
On 11/13/18 9:01 AM, Renlin Li wrote:I could verify that, your patch fixes all the ICEs I saw with arm-linux-gnueabihf toolchain! There are some differences on the test results, because I compare the latest results with something which is old. I haven't test it on bare-metal toolchain yet. But will do to ensure all related issues are fixed.Hi Renlin, That's excellent news! My guess on the testsuite results changes is that they're probably caused by the combine changes/fixes that went in around the same time as my patches. If you want to disable the special copy handling, which should only help things since it gives RA more freedom, you can apply the patch I mentioned here: https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00379.html which allows you to turn on and off the optimization with an option. Jeff and Vlad, I think with the above results, I think the patch is ready for review. I'm attaching the latest updated patch below. Again, this passed bootstrap and regtesting on powerpc64le-linux with no regressions. Ok for mainline?
Ok, Peter.Additional point generation here is not important. It is more important for IRA. Therefore more efforts were spent to reduce their numbers and spans in IRA than in LRA.
Thanks for working on the PR. LRA/reload patches need a few iteration as a rule. So it is a normal situation.
gcc/ PR rtl-optimization/87899 * lra-lives.c (start_living): Update white space in comment. (enum point_type): New. (sparseset_contains_pseudos_p): New function. (update_pseudo_point): Likewise. (make_hard_regno_live): Use HARD_REGISTER_NUM_P macro. (make_hard_regno_dead): Likewise. Remove ignore_reg_for_conflicts handling. Move early exit after adding conflicts. (mark_pseudo_live): Use HARD_REGISTER_NUM_P macro. Add early exit if regno is already live. Remove all handling of program points. (mark_pseudo_dead): Use HARD_REGISTER_NUM_P macro. Add early exit after adding conflicts. Remove all handling of program points and ignore_reg_for_conflicts. (mark_regno_live): Use HARD_REGISTER_NUM_P macro. Remove return value and do not guard call to mark_pseudo_live. (mark_regno_dead): Use HARD_REGISTER_NUM_P macro. Remove return value and do not guard call to mark_pseudo_dead. (check_pseudos_live_through_calls): Use HARD_REGISTER_NUM_P macro. (process_bb_lives): Use HARD_REGISTER_NUM_P and HARD_REGISTER_P macros. Use new function update_pseudo_point. Handle register copies by removing the source register from the live set. Handle INOUT operands. Update to the next program point using the unused_set, dead_set and start_dying sets. (lra_create_live_ranges_1): Use HARD_REGISTER_NUM_P macro.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |