The following fixes the observed regressions for targets not naturally aligning 'int'. I've figured we have natural_alignment_32 whose incomplete target list I amended by looking for BIGGEST_ALIGNMENT less than 32 (and for m68k-*-linux* asking the maintainer).
Tested on x86_64-unknown-linux-gnu. OK? The effective target is probably not too useful since it talks about object sizes while usually alignmend of specific types is to be constrained, but well... Thanks, Richard. 2019-08-13 Richard Biener <rguent...@suse.de> PR testsuite/91419 * lib/target-supports.exp (natural_alignment_32): Amend target list based on BIGGEST_ALIGNMENT. (natural_alignment_64): Targets not natural_alignment_32 cannot be natural_alignment_64. * gcc.dg/tree-ssa/pr91091-2.c: XFAIL for !natural_alignment_32. * gcc.dg/tree-ssa/ssa-fre-77.c: Likewise. * gcc.dg/tree-ssa/ssa-fre-61.c: Require natural_alignment_32. Index: gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c (revision 274328) +++ gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c (working copy) @@ -11,5 +11,5 @@ void swap(struct s* p, struct t* q) } /* The second statement is redundant. */ -/* { dg-final { scan-tree-dump-times "x = " 1 "fre1" } } */ -/* { dg-final { scan-tree-dump-times " = \[^;\]*x;" 1 "fre1" } } */ +/* { dg-final { scan-tree-dump-times "x = " 1 "fre1" { xfail { ! natural_alignment_32 } } } } */ +/* { dg-final { scan-tree-dump-times " = \[^;\]*x;" 1 "fre1" { xfail { ! natural_alignment_32 } } } } */ Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-61.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-61.c (revision 274328) +++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-61.c (working copy) @@ -1,4 +1,4 @@ -/* { dg-do link } */ +/* { dg-do link { target natural_alignment_32 } } */ /* { dg-options "-O -fdump-tree-fre1-details" } */ void link_error (void); Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-77.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-77.c (revision 274328) +++ gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-77.c (working copy) @@ -10,4 +10,4 @@ int foo (int *p, int *q) return *p; } -/* { dg-final { scan-tree-dump "return 1;" "fre1" } } */ +/* { dg-final { scan-tree-dump "return 1;" "fre1" { xfail { ! natural_alignment_32 } } } } */ Index: gcc/testsuite/lib/target-supports.exp =================================================================== --- gcc/testsuite/lib/target-supports.exp (revision 274328) +++ gcc/testsuite/lib/target-supports.exp (working copy) @@ -6294,9 +6294,18 @@ proc check_effective_target_vect_aligned proc check_effective_target_natural_alignment_32 { } { # FIXME: 32bit powerpc: guaranteed only if MASK_ALIGN_NATURAL/POWER. + # FIXME: m68k has -malign-int return [check_cached_effective_target_indexed natural_alignment_32 { if { ([istarget *-*-darwin*] && [is-effective-target lp64]) - || [istarget avr-*-*] } { + || [istarget avr-*-*] + || [istarget m68k-*-linux*] + || [istarget pru-*-*] + || [istarget stormy16-*-*] + || [istarget rl78-*-*] + || [istarget pdp11-*-*] + || [istarget msp430-*-*] + || [istarget m32c-*-*] + || [istarget cris-*-*] } { return 0 } else { return 1 @@ -6311,8 +6320,9 @@ proc check_effective_target_natural_alig proc check_effective_target_natural_alignment_64 { } { return [check_cached_effective_target_indexed natural_alignment_64 { - expr { ([is-effective-target lp64] && ![istarget *-*-darwin*]) - || [istarget spu-*-*] } + expr { [is-effective-target natural_alignment_32] + && (([is-effective-target lp64] && ![istarget *-*-darwin*]) + || [istarget spu-*-*]) } }] }