diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-24 12:40:01 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-24 12:40:01 +0000 |
commit | ce143ff0a2868cb405dd9606f9da11910388c848 (patch) | |
tree | 38872e66995c95e8cbb549b062945e2448f38ed6 /gcc/cfganal.h | |
parent | 0c59d7056d93eeb6fff858ee39988c6ff0a9c34a (diff) | |
download | gcc-ce143ff0a2868cb405dd9606f9da11910388c848.tar.gz |
2016-05-24 Richard Biener <rguenther@suse.de>
PR tree-optimization/71253
* cfganal.h (control_dependences): Make robust against edge
and BB removal.
(control_dependences::control_dependences): Remove edge_list argument.
(control_dependences::get_edge): Remove.
(control_dependences::get_edge_src): Add.
(control_dependences::get_edge_dest): Likewise.
(control_dependences::m_el): Make a vector of edge src/dest index.
* cfganal.c (control_dependences::find_control_dependence): Adjust.
(control_dependences::control_dependences): Likewise.
(control_dependences::~control_dependence): Likewise.
(control_dependences::get_edge): Remove.
(control_dependences::get_edge_src): Add.
(control_dependences::get_edge_dest): Likewise.
* tree-ssa-dce.c (mark_control_dependent_edges_necessary): Use
get_edge_src.
(perform_tree_ssa_dce): Adjust.
* tree-loop-distribution.c (create_edge_for_control_dependence): Use
get_edge_src.
(pass_loop_distribution::execute): Adjust. Do loop destroying
conditional on changed.
* gcc.dg/torture/pr71253.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236636 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfganal.h')
-rw-r--r-- | gcc/cfganal.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/cfganal.h b/gcc/cfganal.h index 8dc2fcf0cf5..ea7ed7a425f 100644 --- a/gcc/cfganal.h +++ b/gcc/cfganal.h @@ -34,17 +34,18 @@ struct edge_list class control_dependences { public: - control_dependences (edge_list *); + control_dependences (); ~control_dependences (); bitmap get_edges_dependent_on (int); - edge get_edge (int); + basic_block get_edge_src (int); + basic_block get_edge_dest (int); private: void set_control_dependence_map_bit (basic_block, int); void clear_control_dependence_bitmap (basic_block); void find_control_dependence (int); vec<bitmap> control_dependence_map; - edge_list *m_el; + vec<std::pair<int, int> > m_el; }; extern bool mark_dfs_back_edges (void); |