On Friday 25 April 2014 11:11 PM, Richard Biener wrote:
On April 25, 2014 5:54:09 PM CEST, Swati Rathi <swatira...@cse.iitb.ac.in> 
wrote:
Hello,

I am trying to print points-to information for SSA variables as below.

   for (i = 1; i < num_ssa_names; i++)
     {
       tree ptr = ssa_name (i);
       struct ptr_info_def *pi;

       if (ptr == NULL_TREE
           || SSA_NAME_IN_FREE_LIST (ptr))
         continue;

       pi = SSA_NAME_PTR_INFO (ptr);
       if (pi)
         dump_points_to_info_for (file, ptr);
     }

-------------------------------------------------------------
My test program is given below :

int main()
{
   int *p, i, j;
   void (*fp1)();

   if (i)
   {
     p = &i;
     fp1 = fun1;
   }
else
   {
     p = &j;
     fp1 = fun2;
   }

fp1();

   printf ("\n%d %d\n", *p, i);
   return 0;
}
-------------------------------------------------------------
I get the output as :-

p_1, points-to vars: { i j }
fp1_2, points-to vars: { }
-------------------------------------------------------------

Why is the pointees for function pointer not getting dumped?
It's just not saved.

Can we modify the code to preserve values for function pointer SSA names?
What is the reason that it is not preserved for function pointers?

Another alternative approach would be to replicate the code (of pass_ipa_pta) and use the information before deleting it.

Is there any other way to access this information?


How can I access this information?


Regards,
Swati


Reply via email to