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

*From*: "Richard Guenther" <richard dot guenther at gmail dot com>*To*: "Diego Novillo" <dnovillo at google dot com>*Cc*: gcc-patches at gcc dot gnu dot org*Date*: Wed, 14 Nov 2007 13:46:20 +0100*Subject*: Re: Fix PR 33870*References*: <b798aad50711071624q3c0ffdf0ib21f115b838a0736@mail.gmail.com> <84fc9c000711080245n4f52e669gbcecaa3485f55161@mail.gmail.com> <4739C673.5080905@google.com> <84fc9c000711130808s5ecc11fcp1df00f20f379b76c@mail.gmail.com> <84fc9c000711140255m22880809w7611ad878918bf96@mail.gmail.com> <84fc9c000711140317o5abefc88n1c01e562d46baed0@mail.gmail.com> <473AE434.3060404@google.com> <84fc9c000711140435u2f885e90mca102b52b4860139@mail.gmail.com> <473AECED.3010804@google.com>

On Nov 14, 2007 1:41 PM, Diego Novillo <dnovillo@google.com> wrote: > Richard Guenther wrote: > > > No, we are limiting all pointed-to SFTs of all structs (maybe this was not > > intended, but it is necessary) out of the partitioner. > > *All* of them? That's a bug. Only the first one inside a nested > structure should be limited. Yes, for struct X { int i; } m; the SFT for &m.i; has nesting level 1. And this is required - see the example with the toplevel array that is still failing. > > but clearly you are growing the numer of symbols in NMTs > > (the regression is not as bad as for my initial patch, but is the least > > regression we can have there if we want to fix the miscompilation this way). > > Yes, but we should only be adding as many SFTs as nested structures we > have. So, to give you a ridiculous example, if we had a structure with > 300 fields and 2 nested structures, we should only have 2 > unpartitionable SFTs (the first one of each nested structure). Huh? No, all pointed-to SFTs are unpartitionable. So, struct X { struct Y { int i1; int i2; ... &i1; &i2; ... makes all SFTs that belong to i1, i2, etc. unpartitionable. At least that's how your code works ;) I guess in add_uids_for_ptset instead of ! if (SFT_NESTING_LEVEL (sft) > 0) ! SFT_UNPARTITIONABLE_P (sft) = true; we can get away with only doing that if the type of the SFT itself could have subvariables (which is probably again what you intended?). > > We enlarge the NMT aliased symbols. (And obviously we can now create > > aritifical testcases with any number of aliased SFTs remaining on a stmt, > > I'll come up with one of those for you) > > Thanks. The secret here is going to be one where we are marking way too > many SFTs as unpartitionable. My contention is that we shouldn't be > doing this too often. If we are, that's the bug. Probably the latter then. Richard.

**Follow-Ups**:**Re: Fix PR 33870***From:*Diego Novillo

**References**:**Fix PR 33870***From:*Diego Novillo

**Re: Fix PR 33870***From:*Richard Guenther

**Re: Fix PR 33870***From:*Diego Novillo

**Re: Fix PR 33870***From:*Richard Guenther

**Re: Fix PR 33870***From:*Richard Guenther

**Re: Fix PR 33870***From:*Richard Guenther

**Re: Fix PR 33870***From:*Diego Novillo

**Re: Fix PR 33870***From:*Richard Guenther

**Re: Fix PR 33870***From:*Diego Novillo

Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|

Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |