aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-02-16 10:04:00 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-02-16 10:04:00 +0100
commit33006d53fd3adf2baae85b625e3ec99908b7a31c (patch)
treed5f0990f699df7b85a6e9cdea483db0c2c48652a /gcc/lra-constraints.c
parentc9b34e397c61aa6aec556189bfeac329dee052a6 (diff)
downloadgcc-33006d53fd3adf2baae85b625e3ec99908b7a31c.zip
gcc-33006d53fd3adf2baae85b625e3ec99908b7a31c.tar.gz
gcc-33006d53fd3adf2baae85b625e3ec99908b7a31c.tar.bz2
re PR rtl-optimization/83723 (ICE: in gen_rtx_SUBREG, at emit-rtl.c:1010)
PR rtl-optimization/83723 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument. * lra.c (lra_substitute_pseudo): Likewise. If true, use gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to recursive calls. (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo callers. * lra-constraints.c (inherit_reload_reg, split_reg): Likewise. * gcc.dg/pr83723.c: New test. From-SVN: r257725
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 125bbb6..9d22da2 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -5287,7 +5287,8 @@ inherit_reload_reg (bool def_p, int original_regno,
lra_assert (DEBUG_INSN_P (usage_insn));
next_usage_insns = XEXP (next_usage_insns, 1);
}
- lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false);
+ lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false,
+ DEBUG_INSN_P (usage_insn));
lra_update_insn_regno_info (as_a <rtx_insn *> (usage_insn));
if (lra_dump_file != NULL)
{
@@ -5608,7 +5609,8 @@ split_reg (bool before_p, int original_regno, rtx_insn *insn,
usage_insn = XEXP (next_usage_insns, 0);
lra_assert (DEBUG_INSN_P (usage_insn));
next_usage_insns = XEXP (next_usage_insns, 1);
- lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false);
+ lra_substitute_pseudo (&usage_insn, original_regno, new_reg, false,
+ true);
lra_update_insn_regno_info (as_a <rtx_insn *> (usage_insn));
if (lra_dump_file != NULL)
{