Jlm
Classes | Namespaces | Typedefs | Functions
CommonNodeElimination.cpp File Reference
#include <jlm/llvm/ir/operators.hpp>
#include <jlm/llvm/ir/RvsdgModule.hpp>
#include <jlm/llvm/opt/CommonNodeElimination.hpp>
#include <jlm/rvsdg/gamma.hpp>
#include <jlm/rvsdg/MatchType.hpp>
#include <jlm/rvsdg/theta.hpp>
#include <jlm/rvsdg/traverser.hpp>
#include <jlm/util/Statistics.hpp>
#include <jlm/util/time.hpp>
#include <map>
Include dependency graph for CommonNodeElimination.cpp:

Go to the source code of this file.

Classes

class  jlm::llvm::CommonNodeElimination::Statistics
 
class  jlm::llvm::CommonNodeElimination::Context
 
struct  jlm::llvm::CommonNodeElimination::Context::CongruenceSet
 

Namespaces

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

Typedefs

using jlm::llvm::TopNodeLeaderList = std::vector< const rvsdg::Node * >
 

Functions

static bool jlm::llvm::areOutputsCongruent (const rvsdg::Output &o1, const rvsdg::Output &o2, CommonNodeElimination::Context &context)
 
static bool jlm::llvm::checkNodesCongruent (const rvsdg::Node &node1, const rvsdg::Node &node2, CommonNodeElimination::Context &context)
 
void jlm::llvm::markNodeAsLeader (const rvsdg::Node &leader, CommonNodeElimination::Context &context)
 
void jlm::llvm::markNodesAsCongruent (const rvsdg::Node &leader, const rvsdg::Node &follower, CommonNodeElimination::Context &context)
 
const rvsdg::Node * jlm::llvm::tryGetLeaderNode (const rvsdg::Node &node, CommonNodeElimination::Context &context)
 
static void jlm::llvm::markSimpleTopNode (const rvsdg::SimpleNode &node, TopNodeLeaderList &leaders, CommonNodeElimination::Context &context)
 
static void jlm::llvm::markSimpleNode (const rvsdg::SimpleNode &node, CommonNodeElimination::Context &context)
 
static void jlm::llvm::markRegion (const rvsdg::Region &, CommonNodeElimination::Context &context)
 
static void jlm::llvm::markGraphImports (const rvsdg::Region &region, CommonNodeElimination::Context &context)
 
static bool jlm::llvm::partitionArguments (const rvsdg::Region &region, const std::vector< CommonNodeElimination::Context::CongruenceSetIndex > &partitions, CommonNodeElimination::Context &context)
 
static bool jlm::llvm::markSubregionsFromInputs (const rvsdg::StructuralNode &node, CommonNodeElimination::Context &context)
 
static std::optional< CommonNodeElimination::Context::CongruenceSetIndex > jlm::llvm::tryGetGammaExitVarCongruenceSet (rvsdg::GammaNode::ExitVar &exitVar, CommonNodeElimination::Context &context)
 
static void jlm::llvm::markGamma (const rvsdg::GammaNode &gamma, CommonNodeElimination::Context &context)
 
static void jlm::llvm::markTheta (const rvsdg::ThetaNode &theta, CommonNodeElimination::Context &context)
 
static void jlm::llvm::markStructuralNode (const rvsdg::StructuralNode &node, CommonNodeElimination::Context &context)
 
static void jlm::llvm::divertOutput (rvsdg::Output &output, CommonNodeElimination::Context &context)
 
static void jlm::llvm::divertInRegion (rvsdg::Region &, CommonNodeElimination::Context &)
 
static void jlm::llvm::divertInStructuralNode (rvsdg::StructuralNode &node, CommonNodeElimination::Context &context)