aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-02-10 17:23:17 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2009-02-10 17:23:17 +0100
commit9b43d37b8305a4db4058fb5f9d9ce08463b4df06 (patch)
tree3b8e904d6bae3a3201463054831fcc5b0dab190d /gcc
parentfc3103e7c981bfdd5c842f82ac6047256b5d1ee8 (diff)
downloadgcc-9b43d37b8305a4db4058fb5f9d9ce08463b4df06.zip
gcc-9b43d37b8305a4db4058fb5f9d9ce08463b4df06.tar.gz
gcc-9b43d37b8305a4db4058fb5f9d9ce08463b4df06.tar.bz2
re PR middle-end/39124 (-fno-exceptions leads to a ICE)
PR middle-end/39124 * cfgloopmanip.c (remove_path): Call remove_bbs after cancel_loop_tree, not before it. From-SVN: r144066
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/cfgloopmanip.c8
2 files changed, 8 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c5e00ed..229aa48 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2009-02-10 Jakub Jelinek <jakub@redhat.com>
+ PR middle-end/39124
+ * cfgloopmanip.c (remove_path): Call remove_bbs after
+ cancel_loop_tree, not before it.
+
PR target/39139
* function.h (struct function): Add has_local_explicit_reg_vars
bit.
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c
index d8979b4..28cfa3c 100644
--- a/gcc/cfgloopmanip.c
+++ b/gcc/cfgloopmanip.c
@@ -1,5 +1,5 @@
/* Loop manipulation code for GNU compiler.
- Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008 Free Software
+ Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software
Foundation, Inc.
This file is part of GCC.
@@ -349,13 +349,13 @@ remove_path (edge e)
if (rem_bbs[i]->loop_father->header == rem_bbs[i])
deleted_loop[nreml++] = rem_bbs[i]->loop_father;
- remove_bbs (rem_bbs, nrem);
- free (rem_bbs);
-
for (i = 0; i < nreml; i++)
cancel_loop_tree (deleted_loop[i]);
free (deleted_loop);
+ remove_bbs (rem_bbs, nrem);
+ free (rem_bbs);
+
/* Find blocks whose dominators may be affected. */
sbitmap_zero (seen);
for (i = 0; i < n_bord_bbs; i++)