diff options
author | Vladimir N. Makarov <vmakarov@redhat.com> | 2021-01-06 14:48:53 -0500 |
---|---|---|
committer | Vladimir N. Makarov <vmakarov@redhat.com> | 2021-01-06 16:13:30 -0500 |
commit | 15a47f437d2ba320aa9cb72986812f115498dbf9 (patch) | |
tree | 07efc4b7b1aaef24877b44d0ec6d48533cec9d98 /gcc/lra-int.h | |
parent | abb1b6058c09a7c0430d9bf019466ada07ca7b40 (diff) | |
download | gcc-15a47f437d2ba320aa9cb72986812f115498dbf9.zip gcc-15a47f437d2ba320aa9cb72986812f115498dbf9.tar.gz gcc-15a47f437d2ba320aa9cb72986812f115498dbf9.tar.bz2 |
[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.
Diffstat (limited to 'gcc/lra-int.h')
-rw-r--r-- | gcc/lra-int.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/lra-int.h b/gcc/lra-int.h index 75ba656..1b8f7b6 100644 --- a/gcc/lra-int.h +++ b/gcc/lra-int.h @@ -273,6 +273,7 @@ typedef class lra_insn_recog_data *lra_insn_recog_data_t; extern FILE *lra_dump_file; +extern bool lra_hard_reg_split_p; extern bool lra_asm_error_p; extern bool lra_reg_spill_p; |