> > + if (POINTER_TYPE_P (TREE_TYPE (t1))) > > + { > > + if (SSA_NAME_PTR_INFO (t1)) > > + { > > + if (!SSA_NAME_PTR_INFO (t2) > > + || SSA_NAME_PTR_INFO (t1)->align != SSA_NAME_PTR_INFO (t2)->align > > + || SSA_NAME_PTR_INFO (t1)->misalign != SSA_NAME_PTR_INFO > > (t2)->misalign) > > You want to compare SSA_NAME_PTR_INFO ()->pt.zero as well I think since > we store pointer non-null-ness from VRP there. > > You are not comparing the actual points-to info - but of course I'd > expect that to differ as soon as local decls are involved. Still looks > like a hole to me.
I convinced myself that we don't need to do that since we recompute PTA after IPA stage: unlike value ranges it is thrown away and recomputed rather then just refined from prevoius solution. But indeed if parts are persistent, we need to compare it (and should stream it to LTO I guess). Honza