aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-08-01 10:47:14 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-08-01 10:47:14 +0000
commit34e5c5116fa58f77ea5eef61d8fb6b9e91c92d79 (patch)
tree6180256fcd038c7f361f782de52817a7c47b4fb4 /gcc/tree-ssa-pre.c
parent35c38fa674ab01152c743f421226f3cbc829cd94 (diff)
downloadgcc-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.c13
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))