aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2006-04-25 21:34:48 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2006-04-25 21:34:48 +0000
commitc0c5d392eba482f455615a4b9b74bb50c46a39ca (patch)
tree88d5cda8d344900920984288dbed68fef548c553 /gcc
parent60e1758f60c2be0682dcbac7ea270b90e78ec526 (diff)
downloadgcc-c0c5d392eba482f455615a4b9b74bb50c46a39ca.zip
gcc-c0c5d392eba482f455615a4b9b74bb50c46a39ca.tar.gz
gcc-c0c5d392eba482f455615a4b9b74bb50c46a39ca.tar.bz2
re PR rtl-optimization/26725 (ICE in check_reg_live, at haifa-sched.c:4645 with -O2 on ia64)
gcc/ PR rtl-optimization/26725 * cfgrtl.c (rtl_redirect_edge_and_branch_force): Set the source block's BB_DIRTY flag. gcc/testsuite/ * gcc.c-torture/compile/pr26725.c: New test. From-SVN: r113257
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cfgrtl.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr26725.c15
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e6b524e..9c6499e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-04-25 Richard Sandiford <richard@codesourcery.com>
+
+ PR rtl-optimization/26725
+ * cfgrtl.c (rtl_redirect_edge_and_branch_force): Set the source
+ block's BB_DIRTY flag.
+
2006-04-25 Geoffrey Keating <geoffk@apple.com>
* dwarf2asm.c (dw2_asm_output_data): Don't generate RTL just
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index b4875d2..54f355e 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -1170,6 +1170,7 @@ rtl_redirect_edge_and_branch_force (edge e, basic_block target)
/* In case the edge redirection failed, try to force it to be non-fallthru
and redirect newly created simplejump. */
+ e->src->flags |= BB_DIRTY;
return force_nonfallthru_and_redirect (e, target);
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6db2d34..4f4944e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-25 Richard Sandiford <richard@codesourcery.com>
+
+ PR rtl-optimization/26725
+ * gcc.c-torture/compile/pr26725.c: New test.
+
2006-04-25 Richard Guenther <rguenther@suse.de>
* gcc.dg/tree-prof/val-prof-2.c: Check for n + ffff rather
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr26725.c b/gcc/testsuite/gcc.c-torture/compile/pr26725.c
new file mode 100644
index 0000000..934042a
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr26725.c
@@ -0,0 +1,15 @@
+struct { unsigned int num; } *numptr;
+void notice (int);
+void doit (unsigned int *);
+
+void
+rewrite_finalize_block (int x)
+{
+ unsigned int *tmp;
+ while (tmp = (numptr ? &numptr->num : 0), (tmp ? *tmp : 0) > 0)
+ {
+ tmp = (numptr ? &numptr->num : 0);
+ (void) (*tmp ? 0 : notice (x));
+ doit (tmp);
+ }
+}