This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Problem in understanding points-to analysis
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Nikhil Patil <nikhilpatil3721 at gmail dot com>
- Cc: gcc <gcc at gcc dot gnu dot org>
- Date: Wed, 27 Mar 2013 10:41:31 +0100
- Subject: Re: Problem in understanding points-to analysis
- References: <CADXY6S3XZW7Zph4rnem-LrL2CE6mhH1yLu9VE0=pjhwQqTWqXA at mail dot gmail dot com>
On Wed, Mar 27, 2013 at 3:13 AM, Nikhil Patil <nikhilpatil3721@gmail.com> wrote:
> 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?
Without a compilable testcase I can't explain, but obviously
'ptr1' is not an SSA name and points-to information is only
preserved for SSA names, not for any other variables that
are part of the solving process.
Richard.
>
> --
> Thanks,
> Nikhil Patil.