aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2017-01-26 17:08:12 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2017-01-26 17:08:12 +0000
commit15961e4a1bbd3ddd2a4ebe09aad07aa6541ed321 (patch)
tree3ba1dafb844c589e276e71d31cb9c17653dce0c5 /gcc/lra-constraints.c
parentb63144aa0fce12fb94e3655bc04017e619f1dfa6 (diff)
downloadgcc-15961e4a1bbd3ddd2a4ebe09aad07aa6541ed321.zip
gcc-15961e4a1bbd3ddd2a4ebe09aad07aa6541ed321.tar.gz
gcc-15961e4a1bbd3ddd2a4ebe09aad07aa6541ed321.tar.bz2
re PR target/79131 (ICE: in extract_constrain_insn, at recog.c:2213, big-endian ARM)
2017-01-26 Vladimir Makarov <vmakarov@redhat.com> PR target/79131 * lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take endianess for subregs into account. * lra-constraints.c (lra_constraints): Do risky transformations always on the first iteration. * lra-lives.c (check_pseudos_live_through_calls): Add arg last_call_used_reg_set. (process_bb_lives): Define and use last_call_used_reg_set. * lra.c (lra): Always continue after lra_constraints on the first iteration. 2017-01-26 Vladimir Makarov <vmakarov@redhat.com> PR target/79131 * gcc.target/arm/pr79131.c: New. From-SVN: r244942
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r--gcc/lra-constraints.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
index 7b0d2f4..2586913 100644
--- a/gcc/lra-constraints.c
+++ b/gcc/lra-constraints.c
@@ -4511,7 +4511,10 @@ lra_constraints (bool first_p)
&& REGNO (pic_offset_table_rtx) >= FIRST_PSEUDO_REGISTER)
lra_risky_transformations_p = true;
else
- lra_risky_transformations_p = false;
+ /* On the first iteration we should check IRA assignment
+ correctness. In rare cases, the assignments can be wrong as
+ early clobbers operands are ignored in IRA. */
+ lra_risky_transformations_p = first_p;
new_insn_uid_start = get_max_uid ();
new_regno_start = first_p ? lra_constraint_new_regno_start : max_reg_num ();
/* Mark used hard regs for target stack size calulations. */