diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2017-01-26 17:08:12 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2017-01-26 17:08:12 +0000 |
commit | 15961e4a1bbd3ddd2a4ebe09aad07aa6541ed321 (patch) | |
tree | 3ba1dafb844c589e276e71d31cb9c17653dce0c5 /gcc/lra-constraints.c | |
parent | b63144aa0fce12fb94e3655bc04017e619f1dfa6 (diff) | |
download | gcc-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.c | 5 |
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. */ |