Commit c2b5fc8d by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/48975 (ICE in execute_cse_reciprocals() with -fno-tree-slp-vectorize)

	PR tree-optimization/48975
	* tree-if-conv.c (combine_blocks): Call free_bb_predicate
	on all bbs here and free and clear ifc_bbs at the end.

	* gcc.dg/pr48975.c: New test.

From-SVN: r173709
parent 13157033
2011-05-12 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/48975
* tree-if-conv.c (combine_blocks): Call free_bb_predicate
on all bbs here and free and clear ifc_bbs at the end.
2011-05-12 Richard Guenther <rguenther@suse.de> 2011-05-12 Richard Guenther <rguenther@suse.de>
* gimple.c (gtc_visit): Compare TREE_ADDRESSABLE, handle * gimple.c (gtc_visit): Compare TREE_ADDRESSABLE, handle
......
2011-05-12 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/48975
* gcc.dg/pr48975.c: New test.
2011-05-12 Tobias Burnus <burnus@net-b.de> 2011-05-12 Tobias Burnus <burnus@net-b.de>
PR fortran/48972 PR fortran/48972
......
/* PR tree-optimization/48975 */
/* { dg-do compile } */
/* { dg-options "-O3 -ffast-math -fno-tree-slp-vectorize" } */
static int
foo (int x)
{
return (x > 0) ? 0 : x + 1;
}
void
bar (unsigned int x)
{
int l = 1;
lab:
while (x)
x = foo (x);
}
/* If-conversion for vectorizer. /* If-conversion for vectorizer.
Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc. Free Software Foundation, Inc.
Contributed by Devang Patel <dpatel@apple.com> Contributed by Devang Patel <dpatel@apple.com>
...@@ -1637,6 +1637,7 @@ combine_blocks (struct loop *loop) ...@@ -1637,6 +1637,7 @@ combine_blocks (struct loop *loop)
for (i = 0; i < orig_loop_num_nodes; i++) for (i = 0; i < orig_loop_num_nodes; i++)
{ {
bb = ifc_bbs[i]; bb = ifc_bbs[i];
free_bb_predicate (bb);
if (bb_with_exit_edge_p (loop, bb)) if (bb_with_exit_edge_p (loop, bb))
{ {
exit_bb = bb; exit_bb = bb;
...@@ -1712,6 +1713,9 @@ combine_blocks (struct loop *loop) ...@@ -1712,6 +1713,9 @@ combine_blocks (struct loop *loop)
&& exit_bb != loop->header && exit_bb != loop->header
&& can_merge_blocks_p (loop->header, exit_bb)) && can_merge_blocks_p (loop->header, exit_bb))
merge_blocks (loop->header, exit_bb); merge_blocks (loop->header, exit_bb);
free (ifc_bbs);
ifc_bbs = NULL;
} }
/* If-convert LOOP when it is legal. For the moment this pass has no /* If-convert LOOP when it is legal. For the moment this pass has no
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment