Index: ira-conflicts.c
===================================================================
--- ira-conflicts.c	(revision 165518)
+++ ira-conflicts.c	(working copy)
@@ -877,6 +884,8 @@ ira_build_conflicts (void)
   FOR_EACH_ALLOCNO (a, ai)
     {
       int i, n = ALLOCNO_NUM_OBJECTS (a);
+      int regno;
+
       for (i = 0; i < n; i++)
 	{
 	  ira_object_t obj = ALLOCNO_OBJECT (a, i);
@@ -907,6 +916,21 @@ ira_build_conflicts (void)
 				no_caller_save_reg_set);
 	      IOR_HARD_REG_SET (OBJECT_CONFLICT_HARD_REGS (obj),
 				temp_hard_reg_set);
+
+	    }
+	  if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0)
+	    {
+	      /* Allocnos bigger than the saved part of call saved
+		 regs must conflict with them.  */
+	      for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
+		if (!TEST_HARD_REG_BIT (call_used_reg_set, regno)
+		    && HARD_REGNO_CALL_PART_CLOBBERED (regno,
+						       obj->allocno->mode))
+		  {
+		    SET_HARD_REG_BIT (OBJECT_CONFLICT_HARD_REGS (obj), regno);
+		    SET_HARD_REG_BIT (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj),
+				      regno);
+		  }
 	    }
 	}
     }
