Jlm
Classes | Namespaces | Functions
aggregation.cpp File Reference
#include <jlm/llvm/ir/aggregation.hpp>
#include <jlm/llvm/ir/cfg-structure.hpp>
#include <deque>
#include <functional>
#include <unordered_map>
Include dependency graph for aggregation.cpp:

Go to the source code of this file.

Classes

class  jlm::llvm::AggregationMap
 

Namespaces

 jlm
 
 jlm::llvm
 Global memory state passed between functions.
 

Functions

static bool jlm::llvm::is_sese_basic_block (const ControlFlowGraphNode *node) noexcept
 
static bool jlm::llvm::is_branch_split (const ControlFlowGraphNode *node) noexcept
 
static bool jlm::llvm::is_branch_join (const ControlFlowGraphNode *node) noexcept
 
static bool jlm::llvm::is_branch (const ControlFlowGraphNode *split) noexcept
 
static bool jlm::llvm::is_linear (const ControlFlowGraphNode *node) noexcept
 
static ControlFlowGraphNode * jlm::llvm::aggregate (ControlFlowGraphNode *, ControlFlowGraphNode *, AggregationMap &)
 
static void jlm::llvm::reduce_loop (const StronglyConnectedComponentStructure &sccstruct, AggregationMap &map)
 
static ControlFlowGraphNode * jlm::llvm::reduce_branch (ControlFlowGraphNode *split, ControlFlowGraphNode **entry, AggregationMap &map)
 
static ControlFlowGraphNode * jlm::llvm::reduce_linear (ControlFlowGraphNode *source, ControlFlowGraphNode **entry, ControlFlowGraphNode **exit, AggregationMap &map)
 
static void jlm::llvm::aggregate_loops (ControlFlowGraphNode *entry, ControlFlowGraphNode *exit, AggregationMap &map)
 
static void jlm::llvm::aggregate_acyclic_sese (ControlFlowGraphNode *node, ControlFlowGraphNode **entry, ControlFlowGraphNode **exit, AggregationMap &map)
 
std::unique_ptr< AggregationNode > jlm::llvm::aggregate (ControlFlowGraph &cfg)
 Aggregate a properly structured CFG to a aggregation tree. More...
 
size_t jlm::llvm::ntacs (const AggregationNode &root)