This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
One more patch for PR70478
- From: Vladimir Makarov <vmakarov at redhat dot com>
- To: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 11 Apr 2017 15:41:38 -0400
- Subject: One more patch for PR70478
- Authentication-results: sourceware.org; auth=none
- Authentication-results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
- Authentication-results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=vmakarov at redhat dot com
- Dkim-filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 223167E9F7
- Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 223167E9F7
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.
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