aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2015-02-20 18:59:02 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2015-02-20 18:59:02 +0000
commit3c20c9bc8a2eb19e97c9d04952d696e7d90a1d63 (patch)
tree869f2cdefba327d91143fe16f48e07e4ec2d3481 /gcc
parent31935398315662c9155d2f87e82f10463a023b6f (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/ira-color.c6
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))
{