]> gcc.gnu.org Git - gcc.git/commitdiff
re PR target/57106 (-fcompare-debug failure with -O2 -fschedule-insns -funroll-all...
authorUros Bizjak <uros@gcc.gnu.org>
Mon, 6 May 2013 14:53:03 +0000 (16:53 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 6 May 2013 14:53:03 +0000 (16:53 +0200)
PR target/57106
* config/i386/i386.c (add_parameter_dependencies): Add dependence
between "first_arg" and "insn", not "last" and "insn".

testsuite/ChangeLog:

PR target/57106
* gcc.target/i386/pr57106.c: New test.

From-SVN: r198629

gcc/config/i386/i386.c
gcc/testsuite/gcc.target/i386/pr57106.c [new file with mode: 0644]

index d28a0ff07f052cb877fd3cfe7c0e10d20aae66b6..86439ba2fb97ba4fd9bc48c1c0cc868c1e7a009c 100644 (file)
@@ -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, tree *ptree)
 #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.  */
diff --git a/gcc/testsuite/gcc.target/i386/pr57106.c b/gcc/testsuite/gcc.target/i386/pr57106.c
new file mode 100644 (file)
index 0000000..6fccd8a
--- /dev/null
@@ -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;
+    }
+}
This page took 0.13336 seconds and 5 git commands to generate.