re PR middle-end/23488 (GCSE load PRE does not work with non sets (or missing load...
authorDaniel Berlin <dberlin@dberlin.org>
Sat, 7 Jul 2007 03:25:29 +0000 (03:25 +0000)
committerDaniel Berlin <dberlin@gcc.gnu.org>
Sat, 7 Jul 2007 03:25:29 +0000 (03:25 +0000)
commite9bd9cf340129729a451df77baee39f5b2978226
tree24aed28d0f9be6fc1f86cf8db9b21c0fc8d53291
parent3673b8ca2b37955838b1c238ba9f70c2a30ac298
re PR middle-end/23488 (GCSE load PRE does not work with non sets (or missing load PRE with plain decls))

2007-07-06  Daniel Berlin  <dberlin@dberlin.org>

Fix PR tree-optimization/23488

* tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
(try_to_simplify): Ditto.
(visit_use): Ditto.
* tree-vn.c (set_value_handle): Use decl_vh_map for decl value
handles.
* tree-flow-inline.h (get_value_handle): Ditto.
* tree-ssa-pre.c (decl_vh_map): New.
(decl_node_pool): New.
(can_value_number_operation): Support DECL_P.
(can_PRE_operation): Ditto.
(create_expression_by_pieces): Ditto.
(find_existing_value_expr): Modify to differnetiate between
addressing and top level.
(create_value_handle_for_expr): Handle DECL's.
(poolify_tree): Ditto.
(make_values_for_phi): Don't insert into PHI_GEN during FRE.
(make_values_for_stmt): Handle DECL's properly.
(init_pre): Reorg to not init useless things during FRE.
(fini_pre): Ditto.
* tree-flow.h: Include pointer-set.h.
(decl_vh_map): Declare.
* Makefile.in (TREE_FLOW_H): Add pointer-set.h

From-SVN: r126434
gcc/ChangeLog
gcc/Makefile.in
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-17.c [new file with mode: 0644]
gcc/tree-flow-inline.h
gcc/tree-flow.h
gcc/tree-ssa-pre.c
gcc/tree-ssa-sccvn.c
gcc/tree-vn.c