GCC Middle and Back End API Reference
ana::worklist Class Reference

#include <exploded-graph.h>

Collaboration diagram for ana::worklist:

Data Structures

class  key_t
 

Public Member Functions

 worklist (const exploded_graph &eg, const analysis_plan &plan)
 
unsigned length () const
 
exploded_nodetake_next ()
 
exploded_nodepeek_next ()
 
void add_node (exploded_node *enode)
 
int get_scc_id (const supernode &snode) const
 
json::objectto_json () const
 

Private Types

typedef fibonacci_heap< key_t, exploded_nodequeue_t
 

Private Attributes

strongly_connected_components m_scc
 
const analysis_planm_plan
 
queue_t m_queue
 

Detailed Description

The worklist of exploded_node instances that have been added to
an exploded_graph, but that haven't yet been processed to find
their successors (or warnings).

The enodes are stored in a priority queue, ordered by a topological
sort of the SCCs in the supergraph, so that enodes for the same
program_point should appear at the front of the queue together.
This allows for state-merging at CFG join-points, so that
sufficiently-similar enodes can be merged into one.   

Member Typedef Documentation

◆ queue_t

Constructor & Destructor Documentation

◆ worklist()

ana::worklist::worklist ( const exploded_graph & eg,
const analysis_plan & plan )

Member Function Documentation

◆ add_node()

void ana::worklist::add_node ( exploded_node * enode)

◆ get_scc_id()

int ana::worklist::get_scc_id ( const supernode & snode) const
inline

◆ length()

unsigned ana::worklist::length ( ) const

◆ peek_next()

exploded_node * ana::worklist::peek_next ( )

◆ take_next()

exploded_node * ana::worklist::take_next ( )

◆ to_json()

json::object * ana::worklist::to_json ( ) const

Field Documentation

◆ m_plan

const analysis_plan& ana::worklist::m_plan
private

◆ m_queue

queue_t ana::worklist::m_queue
private

◆ m_scc

strongly_connected_components ana::worklist::m_scc
private

The documentation for this class was generated from the following file: