From 85e9a542cbd752bca4c21cbef907d190c7d3d3e1 Mon Sep 17 00:00:00 2001 From: rguenth Date: Fri, 16 May 2014 08:05:50 +0000 Subject: 2014-05-16 Richard Biener * tree-ssa-sccvn.c: Include tree-cfg.h and domwalk.h. (set_ssa_val_to): Handle unexpected sets to VN_TOP. (visit_phi): Ignore edges marked as not executable. (class cond_dom_walker): New. (cond_dom_walker::before_dom_children): Value-number control statements and mark successor edges as not executable if possible. (run_scc_vn): First walk all control statements in dominator order, marking edges as not executable. * tree-inline.c (copy_edges_for_bb): Be not confused about random edge flags. * gcc.dg/tree-ssa/ssa-fre-39.c: New testcase. * gcc.dg/tree-ssa/ssa-fre-40.c: Likewise. * gcc.dg/tree-ssa/ssa-pre-8.c: One more elimination. * gcc.dg/tree-ssa/struct-aliasing-2.c: Scan cddce1 dump. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210492 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/tree-inline.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gcc/tree-inline.c') diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 9207e9f7296..bc2b2712b05 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1984,7 +1984,8 @@ copy_edges_for_bb (basic_block bb, gcov_type count_scale, basic_block ret_bb, flags = old_edge->flags; /* Return edges do get a FALLTHRU flag when the get inlined. */ - if (old_edge->dest->index == EXIT_BLOCK && !old_edge->flags + if (old_edge->dest->index == EXIT_BLOCK + && !(old_edge->flags & (EDGE_TRUE_VALUE|EDGE_FALSE_VALUE|EDGE_FAKE)) && old_edge->dest->aux != EXIT_BLOCK_PTR_FOR_FN (cfun)) flags |= EDGE_FALLTHRU; new_edge = make_edge (new_bb, (basic_block) old_edge->dest->aux, flags); -- cgit v1.2.1