summaryrefslogtreecommitdiff
path: root/gcc/cfganal.h
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-24 12:40:01 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-24 12:40:01 +0000
commitce143ff0a2868cb405dd9606f9da11910388c848 (patch)
tree38872e66995c95e8cbb549b062945e2448f38ed6 /gcc/cfganal.h
parent0c59d7056d93eeb6fff858ee39988c6ff0a9c34a (diff)
downloadgcc-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.h7
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);