diff options
author | Vladimir N. Makarov <vmakarov@redhat.com> | 2021-01-21 17:27:01 -0500 |
---|---|---|
committer | Vladimir N. Makarov <vmakarov@redhat.com> | 2021-01-21 18:06:49 -0500 |
commit | 68ba1039c7daf0485b167fe199ed7e8031158091 (patch) | |
tree | 8e772cc2843b097a3ce590403ed20d0b5b0e4032 /gcc/lra-int.h | |
parent | efb6bc55a93a1b8a719e0dab344c0a21344a67a9 (diff) | |
download | gcc-68ba1039c7daf0485b167fe199ed7e8031158091.zip gcc-68ba1039c7daf0485b167fe199ed7e8031158091.tar.gz gcc-68ba1039c7daf0485b167fe199ed7e8031158091.tar.bz2 |
[PR98777] LRA: Use preliminary created pseudo for in LRA elimination subpass
LRA did not extend ira_reg_equiv after generation of a pseudo in
eliminate_regs_in_insn which might results in LRA crash. It is better not
to extend ira_reg_equiv but to use preliminary generated pseudo. The
patch implements it.
gcc/ChangeLog:
PR rtl-optimization/98777
* lra-int.h (lra_pmode_pseudo): New extern.
* lra.c (lra_pmode_pseudo): New global.
(lra): Set it up.
* lra-eliminations.c (eliminate_regs_in_insn): Use it.
gcc/testsuite/ChangeLog:
PR rtl-optimization/98777
* gcc.target/riscv/pr98777.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 1b8f7b6..4dadccc 100644 --- a/gcc/lra-int.h +++ b/gcc/lra-int.h @@ -324,6 +324,7 @@ extern lra_copy_t lra_get_copy (int); extern int lra_new_regno_start; extern int lra_constraint_new_regno_start; extern int lra_bad_spill_regno_start; +extern rtx lra_pmode_pseudo; extern bitmap_head lra_inheritance_pseudos; extern bitmap_head lra_split_regs; extern bitmap_head lra_subreg_reload_pseudos; |