On April 26, 2014 12:31:34 PM CEST, Swati Rathi <swatira...@cse.iitb.ac.in> 
wrote:
>
>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?

Sure.

>What is the reason that it is not preserved for function pointers?

Nobody uses this information.

>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?

You can of course recompute it when needed.

Richard.

>>
>>> How can I access this information?
>>>
>>>
>>> Regards,
>>> Swati
>>


Reply via email to