diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr42629.c | 27 |
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; +} |