diff options
author | Richard Biener <rguenther@suse.de> | 2017-08-01 10:47:14 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-08-01 10:47:14 +0000 |
commit | 34e5c5116fa58f77ea5eef61d8fb6b9e91c92d79 (patch) | |
tree | 6180256fcd038c7f361f782de52817a7c47b4fb4 /gcc/tree-ssa-pre.c | |
parent | 35c38fa674ab01152c743f421226f3cbc829cd94 (diff) | |
download | gcc-34e5c5116fa58f77ea5eef61d8fb6b9e91c92d79.zip gcc-34e5c5116fa58f77ea5eef61d8fb6b9e91c92d79.tar.gz gcc-34e5c5116fa58f77ea5eef61d8fb6b9e91c92d79.tar.bz2 |
tree-ssa-pre.c (print_pre_expr): Handle NULL expr.
2017-08-01 Richard Biener <rguenther@suse.de>
* tree-ssa-pre.c (print_pre_expr): Handle NULL expr.
(compute_antic): Seed worklist with exit block predecessors.
* cfganal.c (dfs_find_deadend): For a cycle return the source
of the edge closing it.
* gcc.dg/tree-ssa/ssa-dce-3.c: Adjust.
* gcc.dg/tree-ssa/split-path-5.c: Remove case with just dead
endless loop.
* gcc.dg/uninit-23.c: Adjust.
From-SVN: r250767
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r-- | gcc/tree-ssa-pre.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 0ec3d3c..eaadaad 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -837,7 +837,7 @@ bitmap_set_and (bitmap_set_t dest, bitmap_set_t orig) } } -/* Subtract all values and expressions contained in ORIG from DEST. */ +/* Subtract all expressions contained in ORIG from DEST. */ static bitmap_set_t bitmap_set_subtract (bitmap_set_t dest, bitmap_set_t orig) @@ -859,7 +859,7 @@ bitmap_set_subtract (bitmap_set_t dest, bitmap_set_t orig) return result; } -/* Subtract all the values in bitmap set B from bitmap set A. */ +/* Subtract all values in bitmap set B from bitmap set A. */ static void bitmap_set_subtract_values (bitmap_set_t a, bitmap_set_t b) @@ -987,6 +987,11 @@ bitmap_value_insert_into_set (bitmap_set_t set, pre_expr expr) static void print_pre_expr (FILE *outfile, const pre_expr expr) { + if (! expr) + { + fprintf (outfile, "NULL"); + return; + } switch (expr->kind) { case CONSTANT: @@ -2418,7 +2423,9 @@ compute_antic (void) inverted_post_order_compute (&postorder); auto_sbitmap worklist (last_basic_block_for_fn (cfun) + 1); - bitmap_ones (worklist); + bitmap_clear (worklist); + FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR_FOR_FN (cfun)->preds) + bitmap_set_bit (worklist, e->src->index); while (changed) { if (dump_file && (dump_flags & TDF_DETAILS)) |