Hi, for gcc.dg/tree-ssa/alias-access-path-13.c to work, SRA must think of accesses to foo.inn.val and to foo itself as different ones, i.e. they need to have different offset and size, which on 32bit platforms they do not. Fixed by replacing a dummy long int field of the union with a struct of two integers.
Tested by: make -k check-gcc RUNTESTFLAGS="tree-ssa.exp=alias-access-path-13.c" and make -k check-gcc RUNTESTFLAGS="--target_board=unix'{-m32}' tree-ssa.exp=alias-access-path-13.c" on an x86_64-linux, also with patched SRA to verify it still tests the original intent. I hope the fix is obvious enough (and it is only a testsuite change) that I can commit it myself. Thanks, Martin gcc/testsuite/ChangeLog: 2022-07-08 Martin Jambor <mjam...@suse.cz> PR testsuite/106216 * gcc.dg/tree-ssa/alias-access-path-13.c (union foo): Replace a long int field with a struct that is larger than an int also on 32bit platforms. --- gcc/testsuite/gcc.dg/tree-ssa/alias-access-path-13.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/alias-access-path-13.c b/gcc/testsuite/gcc.dg/tree-ssa/alias-access-path-13.c index e502a97bc75..87a94f5bf31 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/alias-access-path-13.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/alias-access-path-13.c @@ -6,10 +6,15 @@ struct inn int val; }; +struct biggerstruct +{ + int a, b; +}; + union foo { struct inn inn; - long int baz; + struct biggerstruct baz; } *fooptr; struct bar -- 2.36.1