sra: Only verify sizes of scalar accesses (PR 93845)
authorMartin Jambor <mjambor@suse.cz>
Fri, 21 Feb 2020 12:38:22 +0000 (13:38 +0100)
committerMartin Jambor <mjambor@suse.cz>
Fri, 21 Feb 2020 12:40:50 +0000 (13:40 +0100)
commit4d6bf96b583d77336cf6ca643d92d068a88414fa
treec8bf9c21ac1ed551e1f2e528899028a17f673130
parent3abfd4f3410af27060a11b8adaa9836d5a77eae1
sra: Only verify sizes of scalar accesses (PR 93845)

the testcase is another example - in addition to recent PR 93516 - where
the SRA access verifier is confused by the fact that get_ref_base_extent
can return different sizes for the same type, depending whether they are
COMPONENT_REF or not.  In the previous bug I decided to keep the
verifier check for aggregate type even though it is not really important
and instead avoid easily detectable type-within-the-same-type situation.
This testcase is however a result of a fairly random looking type cast
and so cannot be handled in the same way.

Because the check is not really important for aggregates, this patch
simply disables it for non-register types.

2020-02-21  Martin Jambor  <mjambor@suse.cz>

PR tree-optimization/93845
* tree-sra.c (verify_sra_access_forest): Only test access size of
scalar types.

testsuite/
* g++.dg/tree-ssa/pr93845.C: New test.
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-ssa/pr93845.C [new file with mode: 0644]
gcc/tree-sra.c