[PR97978] LRA: Permit temporary allocation incorrectness after hard reg split.
authorVladimir N. Makarov <vmakarov@redhat.com>
Wed, 6 Jan 2021 19:48:53 +0000 (14:48 -0500)
committerVladimir N. Makarov <vmakarov@redhat.com>
Wed, 6 Jan 2021 21:13:30 +0000 (16:13 -0500)
commit15a47f437d2ba320aa9cb72986812f115498dbf9
tree07efc4b7b1aaef24877b44d0ec6d48533cec9d98
parentabb1b6058c09a7c0430d9bf019466ada07ca7b40
[PR97978] LRA: Permit temporary allocation incorrectness after hard reg split.

LRA can crash when a hard register was split and the same hard register
was assigned on the previous assignment sub-pass.  The following
patch fixes this problem.

gcc/ChangeLog:

PR rtl-optimization/97978
* lra-int.h (lra_hard_reg_split_p): New external.
* lra.c (lra_hard_reg_split_p): New global.
(lra): Set up lra_hard_reg_split_p after splitting a hard reg.
* lra-assigns.c (lra_assign): Don't check allocation correctness
after hard reg splitting.

gcc/testsuite/ChangeLog:

PR rtl-optimization/97978
* gcc.target/i386/pr97978.c: New.
gcc/lra-assigns.c
gcc/lra-int.h
gcc/lra.c
gcc/testsuite/gcc.target/i386/pr97978.c [new file with mode: 0644]