re PR debug/42629 ("-fcompare-debug failure (length)" with "-O1 -fsched-pressure...
authorAlexandre Oliva <aoliva@redhat.com>
Sat, 9 Jan 2010 14:41:17 +0000 (14:41 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Sat, 9 Jan 2010 14:41:17 +0000 (14:41 +0000)
gcc/ChangeLog:
PR debug/42629
* haifa-sched.c (dying_use_p): Debug insns don't count.
gcc/testsuite/ChangeLog:
PR debug/42629
* gcc.dg/pr42629.c: New.

From-SVN: r155763

gcc/ChangeLog
gcc/haifa-sched.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr42629.c [new file with mode: 0644]

index 2e66d7e72d84e20096c2d6771ac22aa812dca114..e93c9f1ac22323cef611d06b4e813a506d4382b0 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-09  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/42629
+       * haifa-sched.c (dying_use_p): Debug insns don't count.
+
 2010-01-09  Alexandre Oliva  <aoliva@redhat.com>
 
        PR middle-end/42363
index de75286ef282c757962bfb2a773115554797d387..0a85b6ee9fa81995e604ed1d5df521e37c5fbf88 100644 (file)
@@ -766,7 +766,8 @@ dying_use_p (struct reg_use_data *use)
   struct reg_use_data *next;
 
   for (next = use->next_regno_use; next != use; next = next->next_regno_use)
-    if (QUEUE_INDEX (next->insn) != QUEUE_SCHEDULED)
+    if (NONDEBUG_INSN_P (next->insn)
+       && QUEUE_INDEX (next->insn) != QUEUE_SCHEDULED)
       return false;
   return true;
 }
index 83535c06b0e36b0e86a114aa0a0046a7571fdc2e..4d62e328962fd0bf2c2e13a3086dcacbeaa61597 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-09  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/42629
+       * gcc.dg/pr42629.c: New.
+
 2010-01-09  Alexandre Oliva  <aoliva@redhat.com>
 
        PR middle-end/42363
diff --git a/gcc/testsuite/gcc.dg/pr42629.c b/gcc/testsuite/gcc.dg/pr42629.c
new file mode 100644 (file)
index 0000000..e95d29b
--- /dev/null
@@ -0,0 +1,27 @@
+/* This failed -fcompare-debug because register pressure computation
+   took debug insns into account.  */
+/* { dg-do compile } */
+/* { dg-options "-O1 -fsched-pressure -fschedule-insns -fcompare-debug" } */
+
+int lzo_adler32(int adler, char *buf)
+{
+  int s1 = adler;
+  int s2 = adler;
+  s1 += buf[0];
+  s2 += s1;
+  s1 += buf[1];
+  s2 += s1;
+  s1 += buf[2];
+  s2 += s1;
+  s1 += buf[3];
+  s2 += s1;
+  s1 += buf[4];
+  s2 += s1;
+  s1 += buf[5];
+  s2 += s1;
+  s1 += buf[6];
+  s2 += s1;
+  s1 += buf[7];
+  s2 += s1;
+  return (s2 << 16) + s1;
+}