On 24/08/2020 09:40, Richard Biener wrote:
On Mon, Aug 17, 2020 at 3:22 PM Erick Ochoa
<erick.oc...@theobroma-systems.com> wrote:
Hello,
I'm looking to understand better the points-to analysis (IPA-PTA) and
the alias analysis (build_alias).
How is the information produced by IPA-PTA consumed?
Are alias sets in build_alias computed by the intersections of the
points_to_set(s) (computed by IPA-PTA)?
My intuition tells me that it could be relatively simple to move
build_alias to be an SIMPLE_IPA_PASS performed just after IPA-PTA, but I
do not have enough experience in GCC to tell if this is correct. What
could be some difficulties which I am not seeing? (Either move, or
create a new IPA-ALIAS SIMPLE_IPA_PASS.) This pass would have the same
sensitivity as IPA-PTA { flow-insensitive, context-insensitive,
field-sensitive } because the alias sets could be computed by the
intersection of points-to-sets.
Both IPA-PTA and build_alias do the same, they build PTA constraint
sets, solve them and attach points-to info to SSA names. Just IPA-PTA
does this for the whole TU while build_alias does it for a function at a time.
So I guess I do not understand your question.
Hi Richard,
I'm just trying to imagine what a data-layout optimization would look
like if instead of using the type-escape analysis we used the points-to
analysis to find out which variables/memory locations escape and what
that would mean for the transformation itself.
One of the things that I think would be needed are alias-sets. I thought
that build_alias was building alias sets but I was mistaken. However,
computing the alias sets should not be too difficult.
Also continuing imagining what a data-layout optimization would look
like in GCC, since IPA-PTA is a SIMPLE_IPA_PASS and if alias sets are
indeed needed, I was asking what would be the reception to a
SIMPLE_IPA_PASS that computes alias sets just after IPA-PTA. (As opposed
to a full ipa pass).
Richard.
Thanks!