Jlm
Loading...
Searching...
No Matches
Classes | Namespaces | Enumerations | Functions | Variables
StoreValueForwarding.cpp File Reference
#include <jlm/llvm/ir/operators/alloca.hpp>
#include <jlm/llvm/ir/operators/GetElementPtr.hpp>
#include <jlm/llvm/ir/operators/IntegerOperations.hpp>
#include <jlm/llvm/ir/operators/Load.hpp>
#include <jlm/llvm/ir/operators/MemoryStateOperations.hpp>
#include <jlm/llvm/ir/operators/operators.hpp>
#include <jlm/llvm/ir/operators/Store.hpp>
#include <jlm/llvm/ir/RvsdgModule.hpp>
#include <jlm/llvm/ir/Trace.hpp>
#include <jlm/llvm/ir/types.hpp>
#include <jlm/llvm/opt/alias-analyses/AliasAnalysis.hpp>
#include <jlm/llvm/opt/alias-analyses/Andersen.hpp>
#include <jlm/llvm/opt/alias-analyses/LocalAliasAnalysis.hpp>
#include <jlm/llvm/opt/alias-analyses/PointsToGraphAliasAnalysis.hpp>
#include <jlm/llvm/opt/StoreValueForwarding.hpp>
#include <jlm/rvsdg/delta.hpp>
#include <jlm/rvsdg/gamma.hpp>
#include <jlm/rvsdg/MatchType.hpp>
#include <jlm/rvsdg/node.hpp>
#include <jlm/rvsdg/Phi.hpp>
#include <jlm/rvsdg/region.hpp>
#include <jlm/rvsdg/RegionPredicateTrace.hpp>
#include <jlm/rvsdg/simple-node.hpp>
#include <jlm/rvsdg/structural-node.hpp>
#include <jlm/rvsdg/theta.hpp>
#include <jlm/rvsdg/traverser.hpp>
#include <jlm/util/common.hpp>
#include <jlm/util/Hash.hpp>
#include <jlm/util/Statistics.hpp>
#include <jlm/util/time.hpp>
#include <memory>
#include <optional>
#include <queue>
Include dependency graph for StoreValueForwarding.cpp:

Go to the source code of this file.

Classes

struct  jlm::llvm::AliasQueryResponseCounter
 
class  jlm::llvm::StoreValueForwarding::Statistics
 Store Value Forwarding Statistics class. More...
 
struct  jlm::llvm::StoreValueForwarding::Context
 
struct  jlm::llvm::StoreValueForwarding::Context::OutputRegionHash
 
struct  jlm::llvm::ValueOrigin
 
class  jlm::llvm::LoadTracingInfo
 

Namespaces

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

Enumerations

enum class  jlm::llvm::StoreNodeInfo { jlm::llvm::ValueForwarding , jlm::llvm::ClobberNoForward , jlm::llvm::NoClobber }
 
enum class  jlm::llvm::LoadNodeInfo { jlm::llvm::ValueForwarding , jlm::llvm::NoClobber }
 

Functions

static RegionSlice jlm::llvm::computeRegionSlice (rvsdg::Output &output)
 
static void jlm::llvm::copyRegionSlice (rvsdg::Region &targetRegion, const RegionSlice &regionSlice, rvsdg::SubstitutionMap &substitutionMap)
 
static rvsdg::Outputjlm::llvm::copyDeltaRegionSlice (rvsdg::Output &output, rvsdg::Region &targetRegion)
 
static rvsdg::Outputjlm::llvm::copyDeltaElement (const uint64_t elementOffsetInBytes, rvsdg::Output &output, rvsdg::Region &targetRegion, const std::shared_ptr< const rvsdg::Type > &loadedType)
 
static std::unique_ptr< aa::AliasAnalysisjlm::llvm::createAliasAnalysis (rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector)
 

Variables

static const bool jlm::llvm::USE_TRIVIAL_LOCALAA = std::getenv("JLM_SVF_USE_TRIVIAL_LOCALAA")
 
static const bool jlm::llvm::ENABLE_PTGAA = std::getenv("JLM_ENABLE_SVF_PTGAA")
 
static const bool jlm::llvm::ENABLE_REGION_PREDICATE_CHECK
 
static const bool jlm::llvm::DISABLE_LOAD_LOAD_FORWARDING = std::getenv("JLM_DISABLE_LOAD_LOAD_FORWARDING")
 

Variable Documentation

◆ arguments

util::HashSet<rvsdg::Output *> arguments

Definition at line 1074 of file StoreValueForwarding.cpp.

◆ nodes

std::vector<rvsdg::Node *> nodes

Definition at line 1073 of file StoreValueForwarding.cpp.