diff mbox

patch to fix PR64172

Message ID 54E785A8.4080209@redhat.com
State New
Headers show

Commit Message

Vladimir Makarov Feb. 20, 2015, 7:06 p.m. UTC
The following patch fixes PR64172.  The details of the problem can be 
found on

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64172

   The patch was bootstrapped and tested on x86-64.  I also checked 
SPEC2000 for the patch.  There is only one code change on sixtrack.   
And the patch improves sixtrack performance by 0.8%.

   I decided not to include the testcase as it is copyrighted.

   Committed as rev. 220877.

2015-02-20  Vladimir Makarov  <vmakarov@redhat.com>

         PR target/64172
         * ira-color.c (color_pass): Prevent splitting multi-register
         pseudos.
diff mbox

Patch

Index: ira-color.c
===================================================================
--- ira-color.c	(revision 220544)
+++ ira-color.c	(working copy)
@@ -3275,7 +3275,11 @@  color_pass (ira_loop_tree_node_t loop_tr
 	       && (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))
 		{