Commit a9eafe81 by Andrew Pinski Committed by Andrew Pinski

re PR tree-optimization/30564 (ice for legal code with -O3)

2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/30564
        * tree-inline.c (optimize_inline_calls): Move the cgraph checking
        code in front of the compacting of basic blocks.
        Move the folding of statements inbetween the cgraph checking
        and compacting of basic blocks.

2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/30564
        * gcc.c-torture/compile/pr30564-1.c: New test.
        * gcc.c-torture/compile/pr30564-2.c: New test.

From-SVN: r127638
parent 5a4ac684
2007-08-20 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR middle-end/30564
* tree-inline.c (optimize_inline_calls): Move the cgraph checking
code in front of the compacting of basic blocks.
Move the folding of statements inbetween the cgraph checking
and compacting of basic blocks.
2007-08-19 Andrew Pinski <andrew_pinski@playstation.sony.com> 2007-08-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
Serge Belyshev <belyshev@depni.sinp.msu.ru> Serge Belyshev <belyshev@depni.sinp.msu.ru>
......
2007-08-20 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR middle-end/30564
* gcc.c-torture/compile/pr30564-1.c: New test.
* gcc.c-torture/compile/pr30564-2.c: New test.
2007-08-19 Joseph Myers <joseph@codesourcery.com> 2007-08-19 Joseph Myers <joseph@codesourcery.com>
* gcc.dg/debug/dwarf2/aranges-fnsec-1.c: New test. * gcc.dg/debug/dwarf2/aranges-fnsec-1.c: New test.
static int spready[] = {0, 1, 2, 3};
void explosion_map (int y)
{
int i;
for (i = 0; i < 4; i++)
if (y * spready[i] < 0)
break;
}
void explosion (void)
{
int i;
explosion_map (0);
for (i = 0; i < 2; i++)
continue;
}
static int RawOrEnc = 0;
static inline void addpair(int fp, int un)
{
if (RawOrEnc == 0 && fp != un)
RawOrEnc = 1;
}
int f(int un0, char *a, unsigned int __s2_len)
{
addpair(un0, un0);
__s2_len < 4 ? __builtin_strcmp (a, "-") : 0;
}
...@@ -2823,10 +2823,6 @@ optimize_inline_calls (tree fn) ...@@ -2823,10 +2823,6 @@ optimize_inline_calls (tree fn)
gimple_expand_calls_inline (bb, &id); gimple_expand_calls_inline (bb, &id);
pop_gimplify_context (NULL); pop_gimplify_context (NULL);
/* Renumber the (code) basic_blocks consecutively. */
compact_blocks ();
/* Renumber the lexical scoping (non-code) blocks consecutively. */
number_blocks (fn);
#ifdef ENABLE_CHECKING #ifdef ENABLE_CHECKING
{ {
...@@ -2839,13 +2835,20 @@ optimize_inline_calls (tree fn) ...@@ -2839,13 +2835,20 @@ optimize_inline_calls (tree fn)
gcc_assert (e->inline_failed); gcc_assert (e->inline_failed);
} }
#endif #endif
/* Fold the statements before compacting/renumbering the basic blocks. */
fold_marked_statements (last, id.statements_to_fold);
pointer_set_destroy (id.statements_to_fold);
/* Renumber the (code) basic_blocks consecutively. */
compact_blocks ();
/* Renumber the lexical scoping (non-code) blocks consecutively. */
number_blocks (fn);
/* We are not going to maintain the cgraph edges up to date. /* We are not going to maintain the cgraph edges up to date.
Kill it so it won't confuse us. */ Kill it so it won't confuse us. */
cgraph_node_remove_callees (id.dst_node); cgraph_node_remove_callees (id.dst_node);
fold_marked_statements (last, id.statements_to_fold);
pointer_set_destroy (id.statements_to_fold);
fold_cond_expr_cond (); fold_cond_expr_cond ();
if (current_function_has_nonlocal_label) if (current_function_has_nonlocal_label)
make_nonlocal_label_edges (); make_nonlocal_label_edges ();
......
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