diff options
author | Jeff Law <law@redhat.com> | 2015-04-17 13:24:17 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2015-04-17 13:24:17 -0600 |
commit | f6c72af46fbbd30fd01f7bb8c678a252f7be67ba (patch) | |
tree | 41f20ae69b1cc8265e0980bcc7f92a93610686ec /gcc/tree-vrp.c | |
parent | 90e00f872d715c6d54742e6bbcafa2ce4f033dc8 (diff) | |
download | gcc-f6c72af46fbbd30fd01f7bb8c678a252f7be67ba.zip gcc-f6c72af46fbbd30fd01f7bb8c678a252f7be67ba.tar.gz gcc-f6c72af46fbbd30fd01f7bb8c678a252f7be67ba.tar.bz2 |
re PR tree-optimization/47679 (Strange uninitialized warning after SRA)
PR tree-optimization/47679
* Makefile.in (OBJS); Add tree-ssa-scopedtables.o.
* tree-ssa-scopedtables.c: New file.
* tree-ssa-scopedtables.h: New file.
* tree-ssa-dom.c: Include tree-ssa-scopedtables.h.
(const_and_copies): Change name/type.
(record_const_or_copy): Move into tree-ssa-scopedtables.c
(record_const_or_copy_1): Similarly.
(restore_vars_to_original_value): Similarly.
(pass_dominator::execute): Create and destroy const_and_copies table.
(thread_across_edge): Update passing of const_and_copies.
(record_temporary_equivalence): Use method calls rather than
manipulating const_and_copies directly.
(record_equality, cprop_into_successor_phis): Similarly.
(dom_opt_dom_walker::before_dom_children): Similarly.
(dom_opt_dom_walker::after_dom_children): Similarly.
(eliminate_redundant_computations): Similarly.
* tree-ssa-threadedge.c (remove_temporary_equivalences): Delete.
(record_temporary_equivalence): Likewise.
(invalidate_equivalences): Likewise.
(record_temporary_equivalences_from_phis): Update due to type
change of const_and_copies. Use method calls rather than
manipulating the stack directly.
(record_temporary_equivalences_from_stmts_at_dest): Likewise.
(thread_through_normal_block, thread_across_edge): Likewise.
(thread_across_edge): Likewise.
* tree-ssa-threadedge.h (thread_across_edge): Update prototype.
* tree-vrp.c: Include tree-ssa-scopedtables.h. Change type
of equiv_stack.
(identify_jump_threads): Update due to type change of equiv_stack.
(finalize_jump_threads): Delete the equiv_stack when complete.
From-SVN: r222195
Diffstat (limited to 'gcc/tree-vrp.c')
-rw-r--r-- | gcc/tree-vrp.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 41d7316..e7ab23c 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -88,6 +88,7 @@ along with GCC; see the file COPYING3. If not see #include "expr.h" #include "insn-codes.h" #include "optabs.h" +#include "tree-ssa-scopedtables.h" #include "tree-ssa-threadedge.h" @@ -10054,12 +10055,8 @@ vrp_fold_stmt (gimple_stmt_iterator *si) return simplify_stmt_using_ranges (si); } -/* Stack of dest,src equivalency pairs that need to be restored after - each attempt to thread a block's incoming edge to an outgoing edge. - - A NULL entry is used to mark the end of pairs which need to be - restored. */ -static vec<tree> equiv_stack; +/* Unwindable const/copy equivalences. */ +const_and_copies *equiv_stack; /* A trivial wrapper so that we can present the generic jump threading code with a simple API for simplifying statements. STMT is the @@ -10140,7 +10137,7 @@ identify_jump_threads (void) /* Allocate our unwinder stack to unwind any temporary equivalences that might be recorded. */ - equiv_stack.create (20); + equiv_stack = new const_and_copies (dump_file, dump_flags); /* To avoid lots of silly node creation, we create a single conditional and just modify it in-place when attempting to @@ -10198,7 +10195,7 @@ identify_jump_threads (void) if (e->flags & (EDGE_DFS_BACK | EDGE_COMPLEX)) continue; - thread_across_edge (dummy, e, true, &equiv_stack, + thread_across_edge (dummy, e, true, equiv_stack, simplify_stmt_for_jump_threading); } } @@ -10219,7 +10216,7 @@ static void finalize_jump_threads (void) { thread_through_all_blocks (false); - equiv_stack.release (); + delete equiv_stack; } |