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