Analyzes aliasing of two memory adderesses.
Checks if they are stack offsets and compares the offsets.
174 std::map<int,OffsetData>::const_iterator i =
177 if (i->second.baseNode == NULL) {
180 anc1 = i->second.baseNode;
181 offsetVal1 = i->second.offset;
186 if (addrMove1 == NULL) {
189 TwoPartAddressOperandDetection addressParts =
191 switch(addressParts.offsetOperation) {
200 std::pair<int,OffsetData>(
201 pop1.
poId(),OffsetData(NULL, INT_MAX)));
207 if (addr1Set.
count() != 1) {
209 std::pair<int,OffsetData>(
210 pop1.
poId(),OffsetData(NULL, INT_MAX)));
213 if (addr2Set.
count() != 1) {
215 std::pair<int,OffsetData>(
216 pop1.
poId(),OffsetData(NULL, INT_MAX)));
235 std::pair<int,OffsetData>(
236 pop1.
poId(),OffsetData(NULL, INT_MAX)));
242 std::pair<int,OffsetData>(
243 pop1.
poId(),OffsetData(anc1, offsetVal1)));
254 std::pair<int,OffsetData>(
255 pop1.
poId(),OffsetData(rawSrc1, 0)));
268 if (baseSet1.
count() != 1 || offsetSet1.
count() != 1) {
270 std::pair<int,OffsetData>(
271 pop1.
poId(),OffsetData(NULL, INT_MAX)));
281 std::pair<int,OffsetData>(
282 pop1.
poId(),OffsetData(NULL, INT_MAX)));
288 offsetVal1 = -offsetVal1;
294 std::pair<int,OffsetData>(
295 pop1.
poId(),OffsetData(anc1, offsetVal1)));
300 std::pair<int,OffsetData>(
301 pop1.
poId(),OffsetData(rawSrc1, 0)));
306 std::pair<int,OffsetData>(
307 pop1.
poId(),OffsetData(NULL, INT_MAX)));
319 if (i->second.baseNode == NULL) {
322 anc2 = i->second.baseNode;
323 offsetVal2 = i->second.offset;
327 if (addrMove2 == NULL) {
330 TwoPartAddressOperandDetection addressParts =
332 switch(addressParts.offsetOperation) {
341 std::pair<int,OffsetData>(
342 pop2.
poId(),OffsetData(NULL, INT_MAX)));
348 if (addr1Set.
count() != 1) {
350 std::pair<int,OffsetData>(
351 pop2.
poId(),OffsetData(NULL, INT_MAX)));
354 if (addr2Set.
count() != 1) {
356 std::pair<int,OffsetData>(
357 pop2.
poId(),OffsetData(NULL, INT_MAX)));
376 std::pair<int,OffsetData>(
377 pop2.
poId(),OffsetData(NULL, INT_MAX)));
383 std::pair<int,OffsetData>(
384 pop2.
poId(),OffsetData(anc2, offsetVal2)));
394 std::pair<int,OffsetData>(
395 pop2.
poId(),OffsetData(rawSrc2, 0)));
408 if (baseSet2.
count() != 1 || offsetSet2.
count() != 1) {
410 std::pair<int,OffsetData>(
411 pop2.
poId(),OffsetData(NULL, INT_MAX)));
423 std::pair<int,OffsetData>(
424 pop2.
poId(),OffsetData(NULL, INT_MAX)));
430 offsetVal2 = -offsetVal2;
436 std::pair<int,OffsetData>(
437 pop2.
poId(),OffsetData(anc2, offsetVal2)));
442 std::pair<int,OffsetData>(
443 pop2.
poId(),OffsetData(rawSrc2, 0)));
448 std::pair<int,OffsetData>(
449 pop2.
poId(),OffsetData(NULL, INT_MAX)));
458 if (anc1 == NULL || anc2 == NULL) {
471 offsetVal1, offsetVal2, pop1, pop2);