66 return i->second.first != INT_MAX;
92 long& stackOffset,
long& loopIncrement,
const TCEString& sp) {
106 case TwoPartAddressOperandDetection::ADD:
109 case TwoPartAddressOperandDetection::SUB:
112 case TwoPartAddressOperandDetection::NOT_FOUND:
118 if (addr1Set.
count() != 1) {
121 if (addr2Set.
count() != 1) {
129 stackOffset += (offsetMul * offsetVal);
135 stackOffset += (offsetMul * offsetVal);
140 while(mn != NULL && mn->
isMove()) {
149 if (prevSrc == NULL) {
190 if (i->second.first != INT_MAX) {
191 addr1 = i->second.first;
192 incr1 = i->second.second;
207 if (i->second.first != INT_MAX) {
208 addr2 = i->second.first;
209 incr2 = i->second.second;
223 if (incr1 != incr2) {
MoveNode * onlyRegisterRawSource(const MoveNode &mn, int allowGuardEdges=2, int backEdges=0) const
static const MoveNode * findIncrement(const MoveNode &mn, long &increment)
AliasingResult compareIndeces(int index1, int index2, const ProgramOperation &pop1, const ProgramOperation &pop2)
static const MoveNode * addressOperandMove(const ProgramOperation &po)
static TwoPartAddressOperandDetection findTwoPartAddressOperands(const ProgramOperation &po)
bool isSourceReg(const std::string ®) const
bool isSourceVariable() const
TTAProgram::Move & move()
bool isSourceOperation() const
bool isSourceConstant() const
unsigned int poId() const
MoveNodeSet & inputNode(int in) const
static bool getStackOffset(DataDependenceGraph &ddg, const ProgramOperation &pop, long &offset, long &loopIncrement, const TCEString &sp_)
StackAliasAnalyzer(const TCEString &sp)
std::map< int, std::pair< long, long > > offsetData_
virtual AliasingResult analyze(DataDependenceGraph &ddg, const ProgramOperation &pop1, const ProgramOperation &pop2, MoveNodeUse::BBRelation bbInfo)
virtual bool isAddressTraceable(DataDependenceGraph &ddg, const ProgramOperation &pop)
Terminal & source() const
virtual SimValue value() const
OffsetOperation offsetOperation