This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, ARM] Don't copy uncopyable instructions in gcse.c


On Thu, 21 May 2009 16:01:32 +0200
Eric Botcazou <ebotcazou@adacore.com> wrote:

> > Tsk me, I assumed it'd default to hook_bool_rtx_false or something.
> > Is it better to change it to do that in fact, or to guard the call?
> > (I guess the latter might be marginally faster.)
> 
> Yes, guarding the call would be simpler.

Tests (cross to ARM Linux with march=armv7-a/mthumb) with this version
look reasonable (though I can't do a before/after regression check for
obvious reasons).

OK for mainline?

Thanks,

Julian

ChangeLog

    gcc/
    * gcse.c (hash_scan_set): Don't make copies of instructions the
    target deems uncopyable.
Index: gcc/gcse.c
===================================================================
--- gcc/gcse.c	(revision 147741)
+++ gcc/gcse.c	(working copy)
@@ -169,6 +169,7 @@ along with GCC; see the file COPYING3.  
 #include "hashtab.h"
 #include "df.h"
 #include "dbgcnt.h"
+#include "target.h"
 
 /* Propagate flow information through back edges and thus enable PRE's
    moving loop invariant calculations out of loops.
@@ -1349,7 +1350,9 @@ hash_scan_set (rtx pat, rtx insn, struct
 	     REG_EQUIV notes and if the argument slot is used somewhere
 	     explicitly, it means address of parameter has been taken,
 	     so we should not extend the lifetime of the pseudo.  */
-	  && (note == NULL_RTX || ! MEM_P (XEXP (note, 0))))
+	  && (note == NULL_RTX || ! MEM_P (XEXP (note, 0)))
+	  && ! (targetm.cannot_copy_insn_p && INSN_P (insn)
+		&& targetm.cannot_copy_insn_p (insn)))
 	{
 	  /* An expression is not anticipatable if its operands are
 	     modified before this insn or if this is not the only SET in

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]