aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-int.h
diff options
context:
space:
mode:
authorVladimir N. Makarov <vmakarov@redhat.com>2021-01-21 17:27:01 -0500
committerVladimir N. Makarov <vmakarov@redhat.com>2021-01-21 18:06:49 -0500
commit68ba1039c7daf0485b167fe199ed7e8031158091 (patch)
tree8e772cc2843b097a3ce590403ed20d0b5b0e4032 /gcc/lra-int.h
parentefb6bc55a93a1b8a719e0dab344c0a21344a67a9 (diff)
downloadgcc-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.h1
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;