62 std::map<int,OffsetData>::iterator i = offsetData_.find(pop.
poId());
63 if (i != offsetData_.end()) {
64 if (i->second.baseNode == NULL) {
71 const MoveNode* addrMove = addressOperandMove(pop);
72 if (addrMove == NULL) {
75 findTwoPartAddressOperands(pop);
77 TwoPartAddressOperandDetection::NOT_FOUND) {
83 if (addr1Set.
count() != 1) {
86 if (addr2Set.
count() != 1) {
107 std::pair<int,OffsetData>(
118 std::pair<int,OffsetData>(
123 std::pair<int,OffsetData>(
133 if (baseSet.
count() != 1 || offsetSet.
count() != 1) {
135 std::pair<int,OffsetData>(
146 std::pair<int,OffsetData>(
174 std::map<int,OffsetData>::const_iterator i =
175 offsetData_.find(pop1.
poId());
176 if (i != offsetData_.end()) {
177 if (i->second.baseNode == NULL) {
178 return ALIAS_UNKNOWN;
180 anc1 = i->second.baseNode;
181 offsetVal1 = i->second.offset;
185 const MoveNode* addrMove1 = addressOperandMove(pop1);
186 if (addrMove1 == NULL) {
190 findTwoPartAddressOperands(pop1);
192 case TwoPartAddressOperandDetection::ADD:
195 case TwoPartAddressOperandDetection::SUB:
198 case TwoPartAddressOperandDetection::NOT_FOUND:
200 std::pair<int,OffsetData>(
202 return ALIAS_UNKNOWN;
207 if (addr1Set.
count() != 1) {
209 std::pair<int,OffsetData>(
211 return ALIAS_UNKNOWN;
213 if (addr2Set.
count() != 1) {
215 std::pair<int,OffsetData>(
217 return ALIAS_UNKNOWN;
235 std::pair<int,OffsetData>(
237 return ALIAS_UNKNOWN;
242 std::pair<int,OffsetData>(
254 std::pair<int,OffsetData>(
268 if (baseSet1.
count() != 1 || offsetSet1.
count() != 1) {
270 std::pair<int,OffsetData>(
272 return ALIAS_UNKNOWN;
281 std::pair<int,OffsetData>(
283 return ALIAS_UNKNOWN;
288 offsetVal1 = -offsetVal1;
294 std::pair<int,OffsetData>(
300 std::pair<int,OffsetData>(
306 std::pair<int,OffsetData>(
308 return ALIAS_UNKNOWN;
317 i = offsetData_.find(pop2.
poId());
318 if (i != offsetData_.end()) {
319 if (i->second.baseNode == NULL) {
320 return ALIAS_UNKNOWN;
322 anc2 = i->second.baseNode;
323 offsetVal2 = i->second.offset;
326 const MoveNode* addrMove2 = addressOperandMove(pop2);
327 if (addrMove2 == NULL) {
331 findTwoPartAddressOperands(pop2);
333 case TwoPartAddressOperandDetection::ADD:
336 case TwoPartAddressOperandDetection::SUB:
339 case TwoPartAddressOperandDetection::NOT_FOUND:
341 std::pair<int,OffsetData>(
343 return ALIAS_UNKNOWN;
348 if (addr1Set.
count() != 1) {
350 std::pair<int,OffsetData>(
352 return ALIAS_UNKNOWN;
354 if (addr2Set.
count() != 1) {
356 std::pair<int,OffsetData>(
358 return ALIAS_UNKNOWN;
376 std::pair<int,OffsetData>(
378 return ALIAS_UNKNOWN;
383 std::pair<int,OffsetData>(
394 std::pair<int,OffsetData>(
408 if (baseSet2.
count() != 1 || offsetSet2.
count() != 1) {
410 std::pair<int,OffsetData>(
412 return ALIAS_UNKNOWN;
423 std::pair<int,OffsetData>(
425 return ALIAS_UNKNOWN;
430 offsetVal2 = -offsetVal2;
436 std::pair<int,OffsetData>(
442 std::pair<int,OffsetData>(
448 std::pair<int,OffsetData>(
450 return ALIAS_UNKNOWN;
458 if (anc1 == NULL || anc2 == NULL) {
459 return ALIAS_UNKNOWN;
462 if (anc1 == anc2 || sameLoopAndPrevSources(ddg, *anc1, *anc2)) {
465 if (!analyzeLoopPtrIncrease(ddg, *anc2, offsetVal2)) {
466 return ALIAS_UNKNOWN;
471 offsetVal1, offsetVal2, pop1, pop2);
475 return ALIAS_UNKNOWN;
486 return (prevSrc1 == prevSrc2 && loopSrc1 == loopSrc2 &&
501 if (loopSrc == NULL) {
505 if (prevSrc == NULL) {