#include #include #include #include #include class Basic_block; class Edge; enum vertex_bb_t { vertex_bb }; enum edge_cfg_edge_t { edge_cfg_edge }; struct phc_listS {}; namespace boost { BOOST_INSTALL_PROPERTY(vertex, bb); BOOST_INSTALL_PROPERTY(edge, cfg_edge); template struct container_gen { typedef std::list type; }; template<> struct parallel_edge_traits { typedef allow_parallel_edge_tag type; }; } typedef boost::adjacency_list< phc_listS, phc_listS, boost::bidirectionalS, // we want access to source and targets of edges boost::property > >, boost::property, boost::no_property, phc_listS > Graph; void calculate_dominance2 (boost::reverse_graph& graph) { /* Use the function in Cooper/Torczon, Figure 9.10 */ BOOST_FOREACH (Graph::vertex_descriptor n, vertices (graph)) { if (in_degree (n, graph) > 0) { BOOST_FOREACH (Graph::edge_descriptor e, in_edges (n, graph)) { } } } }