On Mon, 2020-08-24 at 17:07 +0200, Martin Jambor wrote:
> Hi,
> 
> I must admit I was quite surprised to see that SRA does not disqualify
> an aggregate from any transformations when it encounters an offset for
> which get_ref_base_and_extent returns a negative offset.  It may not
> matter too much because I sure hope such programs always have
> undefined behavior (SRA candidates are local variables on stack) but
> it is probably better not to perform weird transformations on them as
> build ref model with the new build_reconstructed_reference function
> currently happily do for negative offsets (they just copy the existing
> expression which is then used as the expression of a "propagated"
> access) and of course the compiler must not ICE (as it currently does
> because the SRA forest verifier does not like the expression).
> 
> Fixed with the following patch which also passed bootstrap and testing
> on an x86_64-linux.  OK for master and later on for the gcc-10 branch?
> 
> Thanks,
> 
> Martin
> 
> 
> gcc/ChangeLog:
> 
> 2020-08-24  Martin Jambor  <mjam...@suse.cz>
> 
>       PR tree-optimization/96730
>       * tree-sra.c (create_access): Disqualify any aggregate with negative
>       offset access.
>       (build_ref_for_model): Add assert that offset is non-negative.
> 
> gcc/testsuite/ChangeLog:
> 
> 2020-08-24  Martin Jambor  <mjam...@suse.cz>
> 
>       PR tree-optimization/96730
>       * gcc.dg/tree-ssa/pr96730.c: New test.
OK
jeff
> 

Reply via email to