re PR middle-end/18903 (ice in bsi_after_labels)

2004-12-10  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/18903
        * gcc.c-torture/compile/pr18903.c: New test.

2004-12-10  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/18903
        * tree-cfg.c (remove_bb): Put the moved label at the beginning
        of the basic block.

From-SVN: r92006
This commit is contained in:
Andrew Pinski 2004-12-10 19:32:14 +00:00 committed by Andrew Pinski
parent 26673217ad
commit ef0b4f287a
4 changed files with 30 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2004-12-10 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/18903
* tree-cfg.c (remove_bb): Put the moved label at the beginning
of the basic block.
2004-12-10 Kazu Hirata <kazu@cs.umass.edu>
* tree-data-ref.c (free_data_refs): Free each data_reference

View File

@ -1,3 +1,8 @@
2004-12-10 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/18903
* gcc.c-torture/compile/pr18903.c: New test.
2004-12-10 Richard Sandiford <rsandifo@redhat.com>
* gcc.c-torture/execute/20041210-1.c: New test.

View File

@ -0,0 +1,17 @@
/* We were ICEing in bsi_after_labels because
we had a BB which did not have a lablel.
PR middle-end/18903 */
#ifndef NO_LABEL_VALUES
void g (int s, int f)
{
&&ff;
s = f;
ff:
goto end;
f = s;
end:;
}
#else
int g;
#endif

View File

@ -2003,10 +2003,10 @@ remove_bb (basic_block bb)
&& FORCED_LABEL (LABEL_EXPR_LABEL (stmt)))
{
basic_block new_bb = bb->prev_bb;
block_stmt_iterator new_bsi = bsi_after_labels (new_bb);
block_stmt_iterator new_bsi = bsi_start (new_bb);
bsi_remove (&i);
bsi_insert_after (&new_bsi, stmt, BSI_NEW_STMT);
bsi_insert_before (&new_bsi, stmt, BSI_NEW_STMT);
}
else
{