Skip to Content.
Sympa Menu

svadev - [svadev] Code for DSNode Equivalence Classes

svadev AT lists.siebelschool.illinois.edu

Subject: Svadev mailing list

List archive

[svadev] Code for DSNode Equivalence Classes


Chronological Thread 
  • From: Tarek Chammah <tchammah AT uwaterloo.ca>
  • To: svadev AT cs.uiuc.edu
  • Subject: [svadev] Code for DSNode Equivalence Classes
  • Date: Fri, 18 Feb 2011 23:10:49 -0500
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/svadev>
  • List-id: <svadev.cs.uiuc.edu>

Hi, this issue is possibly a blocker for me. I'm utilizing DSA to
garner points-to information. After the top down pass is run and the
buildDSNodeEquivs method is executed to place DSNodes between callers
and callees into their equivalence classes I get rather strange
output. Using a simple test I dump the nodes in the resulting
equivalence classes. What I get is a pair of distinct nodes in the
ECs that contain the same program variable/value location information.
I don't understand why this information is repeated.

Eg. I get this, two ECs each containing a pair with repeated
information (about G2 and the string constant):
Node0x1008870 [shape=record,shape=Mrecord,label="{i32:
GR\n@G2
+ 1
EC\n|{<s0>|<s1>|<s2>|<s3>}}"];
Node0xff4950 [shape=record,shape=Mrecord,label="{i32:
GR\n@G2
+ 1
EC\n|{<s0>|<s1>|<s2>|<s3>}}"];

Node0x1008af0 [shape=record,shape=Mrecord,label="{i8 array:
GR\n@.str\n|{<s0>}}"];
Node0xff4d50 [shape=record,shape=Mrecord,label="{i8 array:
GR\n@.str\n|{<s0>}}"];

For this sample program:
#include <stdio.h>

int G1 = 4, G2 = 3;
int *XX, *YY;

int main() {
XX = &G1;
YY = XX;
YY = &G2;
XX = &G2;
if (*XX>*YY) printf("Not possible!\n");
return 0;
}


Thanks,

Tarek




Archive powered by MHonArc 2.6.16.

Top of Page