diff mbox

One more patch for PR70478

Message ID 708c0b9e-4dc2-ba78-1018-aaa1fa8ba268@redhat.com
State New
Headers show

Commit Message

Vladimir Makarov April 11, 2017, 7:41 p.m. UTC
A recent patch for PR70478 introduced a regression on ARM.   Here is an 
additional patch to fix it.

The patch was successfully tested and bootstrapped on x86-64.

Committed as rev. 246854.
diff mbox

Patch

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 246853)
+++ ChangeLog	(working copy)
@@ -1,3 +1,9 @@ 
+2017-04-11  Vladimir Makarov  <vmakarov@redhat.com>
+
+	PR rtl-optimization/70478
+	* lra-constraints.c (process_alt_operands): Check memory for
+	disfavoring memory insn operand.
+
 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
 
 	PR middle-end/80100
Index: lra-constraints.c
===================================================================
--- lra-constraints.c	(revision 246808)
+++ lra-constraints.c	(working copy)
@@ -2722,12 +2722,14 @@  process_alt_operands (int only_alternati
 		    }
 		}
 
-	      /* When we use memory operand, the insn should read the
-		 value from memory and even if we just wrote a value
-		 into the memory it is costly in comparison with an
-		 insn alternative which does not use memory
-		 (e.g. register or immediate operand).  */
-	      if (no_regs_p && offmemok)
+	      /* When we use an operand requiring memory in given
+		 alternative, the insn should write *and* read the
+		 value to/from memory it is costly in comparison with
+		 an insn alternative which does not use memory
+		 (e.g. register or immediate operand).  We exclude
+		 memory operand for such case as we can satisfy the
+		 memory constraints by reloading address.  */
+	      if (no_regs_p && offmemok && !MEM_P (op))
 		{
 		  if (lra_dump_file != NULL)
 		    fprintf