OpenASIP
2.0
|
#include <LLVMAliasAnalyzer.hh>
Public Member Functions | |
LLVMAliasAnalyzer () | |
virtual bool | isAddressTraceable (DataDependenceGraph &ddg, const ProgramOperation &pop) |
virtual AliasingResult | analyze (DataDependenceGraph &ddg, const ProgramOperation &pop1, const ProgramOperation &pop2, MoveNodeUse::BBRelation bbInfo) |
virtual void | setLLVMAA (llvm::AliasAnalysis *AA) |
~LLVMAliasAnalyzer () | |
Public Member Functions inherited from MemoryAliasAnalyzer | |
virtual void | initProcedure (TTAProgram::Procedure &) |
virtual | ~MemoryAliasAnalyzer () |
Private Attributes | |
llvm::AliasAnalysis * | AA_ |
Additional Inherited Members | |
Public Types inherited from MemoryAliasAnalyzer | |
enum | AliasingResult { ALIAS_FALSE = 0, ALIAS_TRUE = 1, ALIAS_UNKNOWN = 2, ALIAS_PARTIAL = 3 } |
Protected Member Functions inherited from MemoryAliasAnalyzer | |
AliasingResult | compareIndeces (int index1, int index2, const ProgramOperation &pop1, const ProgramOperation &pop2) |
Static Protected Member Functions inherited from MemoryAliasAnalyzer | |
static const MoveNode * | addressOperandMove (const ProgramOperation &po) |
static TwoPartAddressOperandDetection | findTwoPartAddressOperands (const ProgramOperation &po) |
static const MoveNode * | searchLoopIndexBasedIncrement (DataDependenceGraph &ddg, const MoveNode &mn, long &loopIncrement) |
static const MoveNode * | findIncrement (const MoveNode &mn, long &increment) |
static const MoveNode * | detectConstantScale (const MoveNode &mn, int &shiftAmount) |
Definition at line 54 of file LLVMAliasAnalyzer.hh.
LLVMAliasAnalyzer::LLVMAliasAnalyzer | ( | ) |
Definition at line 68 of file LLVMAliasAnalyzer.cc.
LLVMAliasAnalyzer::~LLVMAliasAnalyzer | ( | ) |
Definition at line 161 of file LLVMAliasAnalyzer.cc.
|
virtual |
Given two program operation, aswer question if memory accesed by those operations aliases.
If both POs access same memory returns true, if is sure the memory is not same, returns false. Returns unknown in case memory accesses may alias, or if there is partial alias.
Implements MemoryAliasAnalyzer.
Definition at line 96 of file LLVMAliasAnalyzer.cc.
References ProgramOperation::machineInstr(), MayAlias, MustAlias, NoAlias, and PartialAlias.
|
virtual |
Checks whether the analyzer knows anything about the address.
ie. if it can return true or false to some query concerning this address.
Implements MemoryAliasAnalyzer.
Definition at line 73 of file LLVMAliasAnalyzer.cc.
References ProgramOperation::machineInstr().
|
virtual |
Sets active Alias Analyzer picked from LLVM.
Definition at line 157 of file LLVMAliasAnalyzer.cc.
Referenced by DataDependenceGraphBuilder::build().
|
private |
Definition at line 68 of file LLVMAliasAnalyzer.hh.