diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2015-02-20 18:59:02 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2015-02-20 18:59:02 +0000 |
commit | 3c20c9bc8a2eb19e97c9d04952d696e7d90a1d63 (patch) | |
tree | 869f2cdefba327d91143fe16f48e07e4ec2d3481 /gcc | |
parent | 31935398315662c9155d2f87e82f10463a023b6f (diff) | |
download | gcc-3c20c9bc8a2eb19e97c9d04952d696e7d90a1d63.zip gcc-3c20c9bc8a2eb19e97c9d04952d696e7d90a1d63.tar.gz gcc-3c20c9bc8a2eb19e97c9d04952d696e7d90a1d63.tar.bz2 |
re PR rtl-optimization/64172 (Wrong code with GCC vector extensions on ARM when compiled without NEON)
2015-02-20 Vladimir Makarov <vmakarov@redhat.com>
PR target/64172
* ira-color.c (color_pass): Prevent splitting multi-register
pseudos.
From-SVN: r220877
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ira-color.c | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b1bd622..dad8489 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-02-20 Vladimir Makarov <vmakarov@redhat.com> + + PR target/64172 + * ira-color.c (color_pass): Prevent splitting multi-register + pseudos. + 2015-02-20 Richard Biener <rguenther@suse.de> PR tree-optimization/65136 diff --git a/gcc/ira-color.c b/gcc/ira-color.c index b77ff69..ff1fe8a 100644 --- a/gcc/ira-color.c +++ b/gcc/ira-color.c @@ -3274,7 +3274,11 @@ color_pass (ira_loop_tree_node_t loop_tree_node) && (loop_tree_node->reg_pressure[pclass] <= ira_class_hard_regs_num[pclass])) || (pic_offset_table_rtx != NULL - && regno == (int) REGNO (pic_offset_table_rtx))) + && regno == (int) REGNO (pic_offset_table_rtx)) + /* Avoid overlapped multi-registers. Moves between them + might result in wrong code generation. */ + || (hard_regno >= 0 + && ira_reg_class_max_nregs[pclass][mode] > 1)) { if (! ALLOCNO_ASSIGNED_P (subloop_allocno)) { |