Problem in understanding points-to analysis

2013-03-26 Thread Nikhil Patil
Hello everyone,

I am trying to understand the points-to analysis ("pta") ipa pass, but
I am not able to match the information generated by the pass and that
in structure "SSA_NAME_PTR_INFO".

For the code segment,

--
int var1, var2, var3, var4, *ptr1, *ptr2, **ptr3;

if (var1==10) {
ptr1 = &var1;
ptr2 = &var2;
}
else {
ptr1 = &var3;
ptr2 = &var4;
}

if (var2==3) {
ptr3 = &ptr1;
}
else {
ptr3 = &ptr2;
}

printf("\n %d %d \n",*ptr1, **ptr3);
--

The points-to information in dump_file of "pta" pass:
ptr1.2_6 = { var1 var3 }
ptr1 = { var1 var3 } same as ptr1.2_6

But accessing the structure "SSA_NAME_PTR_INFO" (using API
dump_points_to_info_for(..) ) in a pass AFTER "pta", shows
ptr1.2_6, points-to vars: { var1 var3 }
ptr1, points-to anything

Why here 'ptr1' is not pointing to '{ var1 var3 }' as found by "pta"?

Can someone please help me understand this behaviour?


--
Thanks,
Nikhil Patil.


Computation and usage of SSA_NAME_PTR_INFO

2013-04-29 Thread Nikhil Patil
Hello,

1. Which passes of gcc make use of points-to information in
SSA_NAME_PTR_INFO (or more precisely, pt_solution) in doing
optimizations?


2. Also, who computes this points-to information and populates
pt_solution? Is it ONLY ipa-pta pass?

When I accessed pt_solution through a plugin which REPLACES ipa-pta
pass, I found that the information (in pt_solution) with and without
ipa-pta pass differs only in terms of flags in pt_solution. Here with
the examples I could construct, I found that the bitmap 'vars' in
pt_solution is same for both the cases. Is it always true?

Can someone please help in clarifying these doubts.

Thanks in advance.

--
Regards,
Nikhil Patil.


Re: Computation and usage of SSA_NAME_PTR_INFO

2013-05-01 Thread Nikhil Patil
On Tue, Apr 30, 2013 at 1:32 PM, Richard Biener
 wrote:
> On Mon, Apr 29, 2013 at 7:34 PM, Nikhil Patil  
> wrote:
>> Hello,
>>
>> 1. Which passes of gcc make use of points-to information in
>> SSA_NAME_PTR_INFO (or more precisely, pt_solution) in doing
>> optimizations?
>
> All passes that query the alias oracle (tree-ssa-alias.h) which is almost
> all passes doing optimization of memory accesses.

Thanks a lot for giving direction. I will try finding the passes.

>
>>
>> 2. Also, who computes this points-to information and populates
>> pt_solution? Is it ONLY ipa-pta pass?
>
> It is points-to analysis, both the IPA variant and the local variant
> (ealias and alias
> passes).

>From what I could understand, gimple passes "pass_build_ealias"
(ealias) and "pass_build_alias" (alias) flags "TODO_rebuild_alias" at
end and then function "execute_function_todo" from passes.c calls
"compute_may_aliases ()" which eventually computes points-to
information.

Then the IPA PTA pass finds a more precise points-to information.
Please correct if I am wrong.

>
>> When I accessed pt_solution through a plugin which REPLACES ipa-pta
>> pass, I found that the information (in pt_solution) with and without
>> ipa-pta pass differs only in terms of flags in pt_solution. Here with
>> the examples I could construct, I found that the bitmap 'vars' in
>> pt_solution is same for both the cases. Is it always true?
>
> In theory IPA PTA should be able to compute a more precise solution,
> thus have different (less) bits set in 'vars'.  There are several testcases
> that show this, look for ipa-pta* testcases in gcc/testsuite/
>
> Richard.
>
>> Can someone please help in clarifying these doubts.
>>
>> Thanks in advance.
>>
>> --
>> Regards,
>> Nikhil Patil.

--
Regards,
Nikhil Patil.


Re: Computation and usage of SSA_NAME_PTR_INFO

2013-05-02 Thread Nikhil Patil
On Thu, May 2, 2013 at 1:16 PM, Richard Biener
 wrote:
> On Wed, May 1, 2013 at 5:11 PM, Nikhil Patil  
> wrote:
>> On Tue, Apr 30, 2013 at 1:32 PM, Richard Biener
>>  wrote:
>>> On Mon, Apr 29, 2013 at 7:34 PM, Nikhil Patil  
>>> wrote:
>>>> Hello,
>>>>
>>>> 1. Which passes of gcc make use of points-to information in
>>>> SSA_NAME_PTR_INFO (or more precisely, pt_solution) in doing
>>>> optimizations?
>>>
>>> All passes that query the alias oracle (tree-ssa-alias.h) which is almost
>>> all passes doing optimization of memory accesses.
>>
>> Thanks a lot for giving direction. I will try finding the passes.
>>
>>>
>>>>
>>>> 2. Also, who computes this points-to information and populates
>>>> pt_solution? Is it ONLY ipa-pta pass?
>>>
>>> It is points-to analysis, both the IPA variant and the local variant
>>> (ealias and alias
>>> passes).
>>
>> From what I could understand, gimple passes "pass_build_ealias"
>> (ealias) and "pass_build_alias" (alias) flags "TODO_rebuild_alias" at
>> end and then function "execute_function_todo" from passes.c calls
>> "compute_may_aliases ()" which eventually computes points-to
>> information.
>
> Correct.
>
>> Then the IPA PTA pass finds a more precise points-to information.
>> Please correct if I am wrong.
>
> Well.  The IPA PTA pass is supposed to compute a points-to solution
> for the whole translation unit, thus it should be more precise.  Due to
> limitations and bugs in IPA PTA the result does not necessarily have to
> be more precise.
>
> I do not consider the current IPA PTA code production ready (it does
> not scale very well and it doesn't result in any performance improvements
> for SPEC 2k6).
>
> It's a long-time item on my personal TODO list to at least address the
> fundamental problems with the current implementation (read: bugs).
> But my TODO list is quite crowded ...

Thanks a lot. The discussion gave me a more insight into the topic and
solved my doubts.

>
> Richard.
>
>>>
>>>> When I accessed pt_solution through a plugin which REPLACES ipa-pta
>>>> pass, I found that the information (in pt_solution) with and without
>>>> ipa-pta pass differs only in terms of flags in pt_solution. Here with
>>>> the examples I could construct, I found that the bitmap 'vars' in
>>>> pt_solution is same for both the cases. Is it always true?
>>>
>>> In theory IPA PTA should be able to compute a more precise solution,
>>> thus have different (less) bits set in 'vars'.  There are several testcases
>>> that show this, look for ipa-pta* testcases in gcc/testsuite/
>>>
>>> Richard.
>>>
>>>> Can someone please help in clarifying these doubts.
>>>>
>>>> Thanks in advance.
>>>>
>>>> --
>>>> Regards,
>>>> Nikhil Patil.
>>
>> --
>> Regards,
>> Nikhil Patil.



--
Regards,
Nikhil Patil.