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
This commit is contained in:
parent
5a4ac6841c
commit
a9eafe819c
5 changed files with 50 additions and 6 deletions
|
@ -1,3 +1,11 @@
|
|||
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>
|
||||
Serge Belyshev <belyshev@depni.sinp.msu.ru>
|
||||
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
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>
|
||||
|
||||
* gcc.dg/debug/dwarf2/aranges-fnsec-1.c: New test.
|
||||
|
|
15
gcc/testsuite/gcc.c-torture/compile/pr30564-1.c
Normal file
15
gcc/testsuite/gcc.c-torture/compile/pr30564-1.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
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;
|
||||
}
|
12
gcc/testsuite/gcc.c-torture/compile/pr30564-2.c
Normal file
12
gcc/testsuite/gcc.c-torture/compile/pr30564-2.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
|
||||
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)
|
|||
gimple_expand_calls_inline (bb, &id);
|
||||
|
||||
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
|
||||
{
|
||||
|
@ -2839,13 +2835,20 @@ optimize_inline_calls (tree fn)
|
|||
gcc_assert (e->inline_failed);
|
||||
}
|
||||
#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.
|
||||
Kill it so it won't confuse us. */
|
||||
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 ();
|
||||
if (current_function_has_nonlocal_label)
|
||||
make_nonlocal_label_edges ();
|
||||
|
|
Loading…
Add table
Reference in a new issue