vrp_prop: Use dom_walker for -Warray-bounds (PR tree-optimization/83312)
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 14 Dec 2017 17:15:39 +0000 (17:15 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Thu, 14 Dec 2017 17:15:39 +0000 (17:15 +0000)
commit5505bb43b7b3277354563b69d1287efca21315cb
tree7d33437a2b214b3948aaf13e6a38a38a5cc1a739
parent9de2192154a3d5ec055b535aa143a927fcc2c2ee
vrp_prop: Use dom_walker for -Warray-bounds (PR tree-optimization/83312)

gcc/ChangeLog:
PR tree-optimization/83312
* domwalk.h (dom_walker::dom_walker): Fix typo in comment.
* tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for
"val" param, and to cope with arbitrary basic blocks.
(find_taken_edge_cond_expr): Add "cond_stmt" param and use it to
handle NULL_TREE for "val", dropping "bb" param.
(find_taken_edge_switch_expr): Make "switch_stmt" param const and
drop "bb" param.  Handle NULL_TREE for "val".
(find_case_label_for_value): Make "switch_stmt" param const.
* tree-vrp.c (class check_array_bounds_dom_walker): New subclass
of dom_walker.
(vrp_prop::check_all_array_refs): Reimplement as...
(check_array_bounds_dom_walker::before_dom_children): ...this new
vfunc.  Replace linear search through BB block list, excluding
those with non-executable in-edges via dominator walk.

gcc/testsuite/ChangeLog:
PR tree-optimization/83312
* gcc.dg/pr83312.c: New test case.

From-SVN: r255649
gcc/ChangeLog
gcc/domwalk.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr83312.c [new file with mode: 0644]
gcc/tree-cfg.c
gcc/tree-vrp.c