aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2017-03-24 18:47:38 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2017-03-24 18:47:38 +0000
commitfdcfea63c65d56c2af9beb603b338a35ea854383 (patch)
treee7c09a30300cf2cb2cf94d0f5e7329a635a8b1a3 /gcc
parent90471a3d8330dff361297f72fa95c157e26ea345 (diff)
downloadgcc-fdcfea63c65d56c2af9beb603b338a35ea854383.zip
gcc-fdcfea63c65d56c2af9beb603b338a35ea854383.tar.gz
gcc-fdcfea63c65d56c2af9beb603b338a35ea854383.tar.bz2
re PR target/80148 (operand has impossible constraints)
2017-03-24 Vladimir Makarov <vmakarov@redhat.com> PR target/80148 * lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos to consider in curr_insn_transform. From-SVN: r246467
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/lra-assigns.c8
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f82afbe..adf3791 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-03-24 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/80148
+ * lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos
+ to consider in curr_insn_transform.
+
2017-03-24 Jakub Jelinek <jakub@redhat.com>
* genrecog.c (validate_pattern): Add VEC_SELECT validation.
diff --git a/gcc/lra-assigns.c b/gcc/lra-assigns.c
index 226601b..75bb630 100644
--- a/gcc/lra-assigns.c
+++ b/gcc/lra-assigns.c
@@ -1507,6 +1507,14 @@ assign_by_spills (void)
sorted_pseudos[nfails++] = conflict_regno;
former_reload_pseudo_spill_p = true;
}
+ else
+ /* It is better to do reloads before spilling as after the
+ spill-subpass we will reload memory instead of pseudos
+ and this will make reusing reload pseudos more
+ complicated. Going directly to the spill pass in such
+ case might result in worse code performance or even LRA
+ cycling if we have few registers. */
+ bitmap_set_bit (&all_spilled_pseudos, conflict_regno);
if (lra_dump_file != NULL)
fprintf (lra_dump_file, " Spill %s r%d(hr=%d, freq=%d)\n",
pseudo_prefix_title (conflict_regno), conflict_regno,