aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-08-20 09:48:35 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-08-20 09:48:35 +0200
commit94e3faf66505ae1c960ca07e4cb11feed04aee42 (patch)
tree38b9a46cb1baeda8f77519f552d451311011a8d7 /gcc/tree-ssa.c
parentb915664244ed953b2d2a2666bf75dc90deb0fe09 (diff)
downloadgcc-94e3faf66505ae1c960ca07e4cb11feed04aee42.zip
gcc-94e3faf66505ae1c960ca07e4cb11feed04aee42.tar.gz
gcc-94e3faf66505ae1c960ca07e4cb11feed04aee42.tar.bz2
re PR tree-optimization/48739 (ICE in check_loop_closed_ssa_use() with "-ftree-parallelize-loops=2 -fno-tree-dominator-opts")
PR tree-optimization/48739 * tree-ssa.c: Include cfgloop.h. (execute_update_addresses_taken): When updating ssa, if in loop closed SSA form, call rewrite_into_loop_closed_ssa instead of update_ssa. * Makefile.in (tree-ssa.o): Depend on $(CFGLOOP_H). * gcc.dg/pr48739-1.c: New test. * gcc.dg/pr48739-2.c: New test. From-SVN: r177924
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index 9807169..7564a52 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -43,6 +43,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-dump.h"
#include "tree-pass.h"
#include "diagnostic-core.h"
+#include "cfgloop.h"
/* Pointer map of variable mappings, keyed by edge. */
static struct pointer_map_t *edge_var_maps;
@@ -2208,7 +2209,10 @@ execute_update_addresses_taken (void)
}
/* Update SSA form here, we are called as non-pass as well. */
- update_ssa (TODO_update_ssa);
+ if (number_of_loops () > 1 && loops_state_satisfies_p (LOOP_CLOSED_SSA))
+ rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
+ else
+ update_ssa (TODO_update_ssa);
}
BITMAP_FREE (not_reg_needs);