This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/46562] CCP currently needs iteration for &a[i]


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46562

--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-03-24 11:23:34 UTC ---
Author: rguenth
Date: Thu Mar 24 11:23:29 2011
New Revision: 171386

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=171386
Log:
2011-03-24  Richard Guenther  <rguenther@suse.de>

    PR tree-optimization/46562
    * tree.c (build_invariant_address): New function.
    * tree.h (build_invariant_address): Declare.
    * tree-dfa.c (get_addr_base_and_unit_offset): Wrap around
    a renamed function moved ...
    * tree-flow-inline.h (get_addr_base_and_unit_offset_1): ... here.
    Take valueization callback parameter.
    * tree-flow.h (gimple_fold_stmt_to_constant): Declare.
    * gimple-fold.h: New file.
    * tree-ssa-ccp.c (ccp_fold): Use gimple_fold_stmt_to_constant_1.
    (ccp_fold, fold_const_aggregate_ref,
    fold_ctor_reference, fold_nonarray_ctor_reference,
    fold_array_ctor_reference, fold_string_cst_ctor_reference,
    get_base_constructor): Move ...
    * gimple-fold.c: ... here.
    (gimple_fold_stmt_to_constant_1): New function
    split out from ccp_fold.  Take a valueization callback parameter.
    Valueize all operands.
    (gimple_fold_stmt_to_constant): New wrapper function.
    (fold_const_aggregate_ref_1): New function split out from
    fold_const_aggregate_ref.  Take a valueization callback parameter.
    (fold_const_aggregate_ref): Wrap fold_const_aggregate_ref_1.
    * tree-ssa-sccvn.c (simplify_binary_expression): Simplify
    invariant POINTER_PLUS_EXPRs to invariant form.
    (vn_valueize): New function.
    (try_to_simplify): Simplify by using gimple_fold_stmt_to_constant.
    * tree-vrp.c (vrp_valueize): New function.
    (vrp_visit_assignment_or_call): Use gimple_fold_stmt_to_constant
    to fold statements to constants.
    * tree-ssa-pre.c (eliminate): Properly guard propagation of
    function declarations.
    * Makefile.in (tree-ssa-sccvn.o, tree-vrp.o, gimple-fold.o,
    tree-ssa-ccp.o): Add gimple-fold.h dependencies.

    * c-c++-common/pr46562-2.c: New testcase.
    * c-c++-common/pr46562.c: Likewise.

Added:
    trunk/gcc/gimple-fold.h
    trunk/gcc/testsuite/c-c++-common/pr46562-2.c
    trunk/gcc/testsuite/c-c++-common/pr46562.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/Makefile.in
    trunk/gcc/gimple-fold.c
    trunk/gcc/ipa-split.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-dfa.c
    trunk/gcc/tree-flow-inline.h
    trunk/gcc/tree-flow.h
    trunk/gcc/tree-ssa-ccp.c
    trunk/gcc/tree-ssa-pre.c
    trunk/gcc/tree-ssa-sccvn.c
    trunk/gcc/tree-vrp.c
    trunk/gcc/tree.c
    trunk/gcc/tree.h


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]