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-*-*]) }
     }]
 }
 

Reply via email to