]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/cfganal.h
PR fortran/95090 - ICE: identifier overflow
[thirdparty/gcc.git] / gcc / cfganal.h
index 8dc2fcf0cf5645b04fdb3e076be363f3e00403cb..849e537eddbf8e551b5af26a48a4468155bb7635 100644 (file)
@@ -1,5 +1,5 @@
 /* Control flow graph analysis header file.
-   Copyright (C) 2014-2016 Free Software Foundation, Inc.
+   Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -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);
@@ -62,19 +63,24 @@ extern void add_noreturn_fake_exit_edges (void);
 extern void connect_infinite_loops_to_exit (void);
 extern int post_order_compute (int *, bool, bool);
 extern basic_block dfs_find_deadend (basic_block);
-extern int inverted_post_order_compute (int *, sbitmap *start_points = 0);
+extern void inverted_post_order_compute (vec<int> *postorder, sbitmap *start_points = 0);
 extern int pre_and_rev_post_order_compute_fn (struct function *,
                                              int *, int *, bool);
 extern int pre_and_rev_post_order_compute (int *, int *, bool);
+extern int rev_post_order_and_mark_dfs_back_seme (struct function *, edge,
+                                                 bitmap, bool, int *);
 extern int dfs_enumerate_from (basic_block, int,
                               bool (*)(const_basic_block, const void *),
                               basic_block *, int, const void *);
-extern void compute_dominance_frontiers (struct bitmap_head *);
-extern bitmap compute_idf (bitmap, struct bitmap_head *);
+extern void compute_dominance_frontiers (class bitmap_head *);
+extern bitmap compute_idf (bitmap, class bitmap_head *);
 extern void bitmap_intersection_of_succs (sbitmap, sbitmap *, basic_block);
 extern void bitmap_intersection_of_preds (sbitmap, sbitmap *, basic_block);
 extern void bitmap_union_of_succs (sbitmap, sbitmap *, basic_block);
 extern void bitmap_union_of_preds (sbitmap, sbitmap *, basic_block);
 extern basic_block * single_pred_before_succ_order (void);
+extern edge single_incoming_edge_ignoring_loop_edges (basic_block, bool);
+extern edge single_pred_edge_ignoring_loop_edges (basic_block, bool);
+
 
 #endif /* GCC_CFGANAL_H */