aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/haifa-sched.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr42629.c27
4 files changed, 39 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2e66d7e..e93c9f1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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
* gimplify.c (gimplify_modify_expr): Drop lhs on noreturn calls.
* tree-cfg.c (is_ctrl_altering_stmt): Don't compute flags twice.
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index de75286..0a85b6e 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -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;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 83535c0..4d62e32 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
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
* gcc.dg/torture/pr42363.c: New.
diff --git a/gcc/testsuite/gcc.dg/pr42629.c b/gcc/testsuite/gcc.dg/pr42629.c
new file mode 100644
index 0000000..e95d29b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr42629.c
@@ -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;
+}