This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re[2]: [RFC] Alias export patch


[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]