This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re[2]: [RFC] Alias export patch
- From: Dmitry Melnik <dm at ispras dot ru>
- To: Daniel Berlin <dberlin at dberlin dot org>
- Cc: gcc-patches at gcc dot gnu dot org, dnovillo at redhat dot com, abel at ispras dot ru
- Date: Fri, 9 Dec 2005 17:32:02 +0300
- Subject: Re[2]: [RFC] Alias export patch
- References: <486713706.20051121174009@ispras.ru> <1133665979.7343.14.camel@linux.site>
[Sorry for the extra copy Daniel, I've failed to send this to the list last time]
> Hi Dmitry, sorry for the delay.
> While i look this stuff over, do you have any numbers on how well either
> (or both combined) approach does?
Hi,
Below you'll find the table with the number of disambiguated MEM pairs
with each of our methods or the particular heuristics of the methods.
Also in first three lines of the table there are the total number of
dereferenced pointers (D), the number of pointers with usable (not
empty) points-to set (P) and the number of pointers with not empty
points-to sets, which have points-to-anything attribute set (A).
Though these pointers (A) may have sense for some SSA generations,
they were "lost" for our analysis due to context-insensitivity, but
their number is insignificant.
As we see from the table, there are only about 1.5% of dereferenced
pointers, that have usable points-to sets (P/D). The number of
disambiguations provided by our patch is in direct relation with
the number of usable pointers (P).
The number of disambiguations (x) is more than 50% of the number of
usable pointers with not empty points-to for gcc bootstrap and about
36% for SPECINT.
iab ipa mainline specint
20050909
D 357853 307603 297547 85288
P 5443 4138 4060 1725
A 284 214 206 23
x 3494 2278 2366 623
X 82729 28260 41691 -
a 5102 6834 5532 349
d 5704 8849 6168 -
0 48664 23351 22140 -
1 2682 2564 2604 493
2 164 0 66 0
3 74 70 70 0
4 432 432 432 4
5 4 44 4 0
6 2996 2740 2704 40
7 1447 1337 1439 86
8 29760 0 14598 0
9 5117 4623 4715 130
'-' we don't have this statistics for SPEC at the moment - we started to
measure these parameters later.
The symbols in the left column have the following meaning:
D - Total number of dereferenced ptrs
P - Number of exported pointers which have useful (non-empty)
points-to set
A - Number ptrs with not empty points-to, but with points-to-anything
attribute set (due to union of different SSA generations). These
are not included in P, and can't be used in disambiguation
x - Number of new disambiguated MEM pairs in true_dependence and
write_dependence with -fpropagate-points-to
X - Could have been disambiguated with -fpropagate-points-to, if none
of the disambiguations already present in alias.c have worked
(like 'x' but counting all, not only new disambiguations).
a - New disambiguations with -fpropagate-alias-sets in alias_sets_conflict_p
d - Could have been disambiguated with -fpropagate-alias-sets, if not
strict-aliasing type-based disambiguations (i.e. like 'a', but counted
only new disambiguations)
Detailed information for those disambiguated with -fpropagate-points-to:
0 - Different stack vars. Stack partition information from cfgexpand.c
was used for disambiguation
1 - Two mems addressed by regs, and those regs have non-overlapping
points-to
2 - Disambiguated through struct aliasing (x.a & q: SFT for x.a is not
in points-to for q)
3 - component_ref, indirect_ref (p->a & q)
4 - component_ref, array_ref (p[i].a & q)
5 - component_ref (s.a & q: no s in alias-set for q)
6 - array_ref (a[i] & q: no a in alias-set for q)
7 - decl_p (a & q: no a in alias-set for q)
8 - different struct fields (x.a & y.b)
9 - all types mem & reg (3-7)
--
Best regards,
Dmitry mailto:Dmitry@Melnik.Ru