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,