===================================================================
@@ -24662,7 +24662,7 @@ add_parameter_dependencies (rtx call, rtx head)
/* Add output depdendence between two function arguments if chain
of output arguments contains likely spilled HW registers. */
if (is_spilled)
- add_dependence (last, insn, REG_DEP_OUTPUT);
+ add_dependence (first_arg, insn, REG_DEP_OUTPUT);
first_arg = last = insn;
}
else
@@ -41355,7 +41355,8 @@ ix86_enum_va_list (int idx, const char **pname, tr
#undef TARGET_SCHED_ADJUST_PRIORITY
#define TARGET_SCHED_ADJUST_PRIORITY ix86_adjust_priority
#undef TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK
-#define TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK ix86_dependencies_evaluation_hook
+#define TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK \
+ ix86_dependencies_evaluation_hook
/* The size of the dispatch window is the total number of bytes of
object code allowed in a window. */
===================================================================
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fschedule-insns -funroll-all-loops -fcompare-debug" } */
+
+typedef void block128_f (int *, int);
+
+void
+foo (int *out, int *iv, block128_f block)
+{
+ while (1)
+ {
+ *out = *out ^ *iv;
+ block (out, *out);
+ iv = out;
+ }
+}