[PATCH] sra: Bail out when encountering accesses with negative offsets (PR 96730)

Jeff Law law@redhat.com
Mon Aug 24 22:59:32 GMT 2020


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  <mjambor@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  <mjambor@suse.cz>
> 
> 	PR tree-optimization/96730
> 	* gcc.dg/tree-ssa/pr96730.c: New test.
OK
jeff
> 



More information about the Gcc-patches mailing list