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]

Fix PR53908


We're moving a load across a call since we don't recognize calls as
memory-clobbering.

Bootstrapping and testing now on 4.7 x86_64-linux, ok everywhere?


Bernd
	PR rtl-optimization/53908
	* df-problems.c (can_move_insns_across): Calls can clobber memory.

Index: gcc/df-problems.c
===================================================================
--- gcc/df-problems.c	(revision 189425)
+++ gcc/df-problems.c	(working copy)
@@ -3961,6 +3961,11 @@ can_move_insns_across (rtx from, rtx to,
 
   for (insn = across_to; ; insn = next)
     {
+      if (CALL_P (insn))
+	{
+	  memrefs_in_across |= MEMREF_VOLATILE;
+	  mem_sets_in_across |= MEMREF_VOLATILE;
+	}
       if (NONDEBUG_INSN_P (insn))
 	{
 	  memrefs_in_across |= for_each_rtx (&PATTERN (insn), find_memory,

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