]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/24315 (amd64 fails -fpeephole2)
authorUros Bizjak <uros@kss-loka.si>
Thu, 10 Nov 2005 07:27:47 +0000 (08:27 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Thu, 10 Nov 2005 07:27:47 +0000 (08:27 +0100)
        PR target/24315
        * config/i386/i386.md (*pushdi2_rex64 splitter)
        (*movdi_1_rex64 splitter): Delay splitting after
        flow2 pass only when (optimize > 0 && flag_peephole2).

PR target/19340
* reg-stack.c (reg_to_stack): Update register liveness also
for flag_sched2_use_traces.

testsuite/

        PR target/24315
        * gcc.dg/pr24315.c: New test.

        PR target/19340
        * gcc.dg/pr19340.c: New test.

From-SVN: r106728

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/reg-stack.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr19340.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr24315.c [new file with mode: 0644]

index 9576fbd272fae4ab42c6eb90e9f4982e7ef2aea5..e6f45167f5959543163abb0ba5009623ed3bdb03 100644 (file)
@@ -1,3 +1,16 @@
+2005-11-10  Uros Bizjak  <uros@kss-loka.si>
+
+        PR target/24315
+        * config/i386/i386.md (*pushdi2_rex64 splitter)
+        (*movdi_1_rex64 splitter): Delay splitting after
+        flow2 pass only when (optimize > 0 && flag_peephole2).
+
+2005-11-10  Uros Bizjak  <uros@kss-loka.si>
+
+       PR target/19340
+       * reg-stack.c (reg_to_stack): Update register liveness also
+       for flag_sched2_use_traces.
+
 2005-11-09  Per Bothner  <per@bothner.com>
            Uros Bizjak  <uros@kss-loka.si>
        
index 93d9dcdba1501bf0020bd5bfadef872a7bcfa0a9..e87a316632378ce5d8227d1fbc358a31ca4ec4c2 100644 (file)
 (define_split
   [(set (match_operand:DI 0 "push_operand" "")
         (match_operand:DI 1 "immediate_operand" ""))]
-  "TARGET_64BIT && (flow2_completed || (reload_completed && !flag_peephole2))
+  "TARGET_64BIT && ((optimize > 0 && flag_peephole2)
+                  ? flow2_completed : reload_completed)
    && !symbolic_operand (operands[1], DImode)
    && !x86_64_immediate_operand (operands[1], DImode)"
   [(set (match_dup 0) (match_dup 1))
 (define_split
   [(set (match_operand:DI 0 "memory_operand" "")
         (match_operand:DI 1 "immediate_operand" ""))]
-  "TARGET_64BIT && (flow2_completed || (reload_completed && !flag_peephole2))
+  "TARGET_64BIT && ((optimize > 0 && flag_peephole2)
+                  ? flow2_completed : reload_completed)
    && !symbolic_operand (operands[1], DImode)
    && !x86_64_immediate_operand (operands[1], DImode)"
   [(set (match_dup 2) (match_dup 3))
index 84dc1d9495d299f5bf9c06901b1780faadaa9834..f10abe9642a8f2f4f07759cd67f49b8f657b6a32 100644 (file)
@@ -429,7 +429,7 @@ reg_to_stack (rtx first, FILE *file)
      Also need to rebuild life when superblock scheduling is done
      as it don't update liveness yet.  */
   if (!optimize
-      || (flag_sched2_use_superblocks
+      || ((flag_sched2_use_superblocks || flag_sched2_use_traces)
          && flag_schedule_insns_after_reload))
     {
       count_or_remove_death_notes (NULL, 1);
index 54ca96de343b17811b437b75ff5ca239db2070fe..b4e0a4009cc33935e181502aa5e9bddf9ed5dd63 100644 (file)
@@ -1,3 +1,13 @@
+2005-11-10  Uros Bizjak  <uros@kss-loka.si>
+
+        PR target/24315
+        * gcc.dg/pr24315.c: New test.
+
+2005-11-10  Uros Bizjak  <uros@kss-loka.si>
+
+        PR target/19340
+        * gcc.dg/pr19340.c: New test.
+
 2005-11-09  Uros Bizjak  <uros@kss-loka.si>
 
        PR c/24101
diff --git a/gcc/testsuite/gcc.dg/pr19340.c b/gcc/testsuite/gcc.dg/pr19340.c
new file mode 100644 (file)
index 0000000..cac4b09
--- /dev/null
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fschedule-insns2 -fsched2-use-traces" } */
+
+extern double f (double x);
+
+double g (int a)
+{
+  int b, c, d, e = 0;
+  double h;
+
+  for (d = 0; d < a; d++)
+    for (c = 0; c < a; c++)
+      b = 1;
+
+  h = (double) e / (double) a;
+
+  if (h)
+    {
+      h = 1.0 / h;
+      h = f (h);
+    }
+  else
+    h = 1.0;
+
+  return h;
+}
diff --git a/gcc/testsuite/gcc.dg/pr24315.c b/gcc/testsuite/gcc.dg/pr24315.c
new file mode 100644 (file)
index 0000000..ec3340c
--- /dev/null
@@ -0,0 +1,9 @@
+/* PR target/24315 */
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O0 -fpeephole2" } */
+
+void s48_double_to_bignum (int exponent)
+{
+  long length = ((((exponent) + ((((sizeof (long)) * 8) - 2) - 1)) /
+                 (((sizeof (long)) * 8) - 2)));
+}