diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2004-12-10 19:32:14 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-12-10 11:32:14 -0800 |
commit | ef0b4f287a17c1c9543e835b8dca60adaf916a6f (patch) | |
tree | ede830759a22a4b0fdf08f511143bf1ca14c93d4 /gcc | |
parent | 26673217ad3805d5aca555e0351ff40eaaf9be87 (diff) | |
download | gcc-ef0b4f287a17c1c9543e835b8dca60adaf916a6f.zip gcc-ef0b4f287a17c1c9543e835b8dca60adaf916a6f.tar.gz gcc-ef0b4f287a17c1c9543e835b8dca60adaf916a6f.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr18903.c | 17 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 4 |
4 files changed, 30 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fad1ef6..6df6bfb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 04f3abb..c4d3759 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr18903.c b/gcc/testsuite/gcc.c-torture/compile/pr18903.c new file mode 100644 index 0000000..3c12351 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr18903.c @@ -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 diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index db12f98..a7d2441 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -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 { |