https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83312

--- Comment #9 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Author: dmalcolm
Date: Thu Dec 14 17:15:39 2017
New Revision: 255649

URL: https://gcc.gnu.org/viewcvs?rev=255649&root=gcc&view=rev
Log:
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.


Added:
    trunk/gcc/testsuite/gcc.dg/pr83312.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/domwalk.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-cfg.c
    trunk/gcc/tree-vrp.c

Reply via email to