diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2017-03-24 18:47:38 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2017-03-24 18:47:38 +0000 |
commit | fdcfea63c65d56c2af9beb603b338a35ea854383 (patch) | |
tree | e7c09a30300cf2cb2cf94d0f5e7329a635a8b1a3 /gcc | |
parent | 90471a3d8330dff361297f72fa95c157e26ea345 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/lra-assigns.c | 8 |
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, |