diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-04 09:34:32 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-04 09:34:32 +0000 |
commit | d12dee9c52edfea940d74d84291ae0fe591db827 (patch) | |
tree | 9008d47a69f8bfcbddab1535dfb7516d4a030aff /gcc/tree-ssa-sccvn.h | |
parent | 507b89a40e5b35898f1e0a18385f209af8bccede (diff) | |
download | gcc-d12dee9c52edfea940d74d84291ae0fe591db827.tar.gz |
2009-04-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/8781
PR tree-optimization/37892
* tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
* tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
(valueize_refs): Call it for *& valueizations.
(shared_reference_ops_from_ref): Rename to ...
(valueize_shared_reference_ops_from_ref): ... this and valueize.
(shared_reference_ops_from_call): Rename to ...
(valueize_shared_reference_ops_from_call): ... this and valueize.
(vn_reference_lookup): Update.
(visit_reference_op_call): Likewise.
* tree-ssa-pre.c (phi_translate_1): Fold *&.
(eliminate): Value-replace the call address in call statements.
* g++.dg/tree-ssa/pr8781.C: New testcase.
* gcc.dg/tree-ssa/ssa-pre-25.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145533 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-sccvn.h')
-rw-r--r-- | gcc/tree-ssa-sccvn.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/tree-ssa-sccvn.h b/gcc/tree-ssa-sccvn.h index 644bc127f78..c8171c22710 100644 --- a/gcc/tree-ssa-sccvn.h +++ b/gcc/tree-ssa-sccvn.h @@ -173,6 +173,8 @@ vn_nary_op_t vn_nary_op_insert_stmt (gimple, tree); vn_nary_op_t vn_nary_op_insert_pieces (unsigned int, enum tree_code, tree, tree, tree, tree, tree, tree, unsigned int); +void vn_reference_fold_indirect (VEC (vn_reference_op_s, heap) **, + unsigned int *); void copy_reference_ops_from_ref (tree, VEC(vn_reference_op_s, heap) **); void copy_reference_ops_from_call (gimple, VEC(vn_reference_op_s, heap) **); tree get_ref_from_reference_ops (VEC(vn_reference_op_s, heap) *ops); |