On Wed, 2020-06-17 at 10:04 +0200, Jakub Jelinek via Gcc-patches wrote:
> On Wed, Jun 17, 2020 at 09:13:25AM +0200, Richard Biener via Gcc-patches 
> wrote:
> > > Not doing the transformation I suggest at all, or not doing it in
> > > cases when the member does match the source?
> > 
> > We are currently not treating different fields at the same offset as
> > "equal" before inlining completed for objsize to "work", thus leaving
> > optimizations on the plate.
> 
> As the first objsz pass runs quite early (the second one in
> pass_all_early_optimizations), we could just add a property for that
> and use it instead of the cfun->after_inlining check.
> And after that pass, we should be remembering the field limits in the IL
> explicitly as a MIN/MAX_EXPR for the bos call.
Right.  And that's part of the reason why I was suggesting we attach original
type information to the calls (and perhaps other *_REF nodes) as early in the
pipeline as possible -- the earlier in the pipeline we are, the closer the IL is
to the source and the more likely that type information will be correct.

I'm not wed to that idea, but I do think we need to start moving away from
walking the use-def chains to find an address computation which may have a type
with little/no relation to the object we're modifying.  I think it's become 
clear
that's ultimately a losing battle.

jeff

Reply via email to