https://gcc.gnu.org/g:68981680a46ca69c96597dfa96adbb88563ccc83

commit 68981680a46ca69c96597dfa96adbb88563ccc83
Author: Alexandre Oliva <ol...@gnu.org>
Date:   Fri Dec 20 18:58:01 2024 -0300

    testsuite: generalize ifcombine field-merge tests [PR118025]

Diff:
---
 gcc/testsuite/gcc.dg/field-merge-1.c  |  2 +-
 gcc/testsuite/gcc.dg/field-merge-13.c |  2 +-
 gcc/testsuite/gcc.dg/field-merge-14.c |  3 ++-
 gcc/testsuite/gcc.dg/field-merge-15.c |  2 +-
 gcc/testsuite/gcc.dg/field-merge-16.c | 17 +++++++----------
 gcc/testsuite/gcc.dg/field-merge-17.c |  2 +-
 gcc/testsuite/gcc.dg/field-merge-3.c  |  2 ++
 gcc/testsuite/gcc.dg/field-merge-8.c  |  2 ++
 gcc/testsuite/gcc.dg/field-merge-9.c  |  4 +++-
 9 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/gcc/testsuite/gcc.dg/field-merge-1.c 
b/gcc/testsuite/gcc.dg/field-merge-1.c
index 1818e104437e..4405d40ee79d 100644
--- a/gcc/testsuite/gcc.dg/field-merge-1.c
+++ b/gcc/testsuite/gcc.dg/field-merge-1.c
@@ -58,7 +58,7 @@ int main () {
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "BIT_FIELD_REF" 8 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "BIT_FIELD_REF" 8 "optimized" { target { 
! { avr-*-* pru-*-* } } } } } */
 /* { dg-final { scan-assembler-not "cmpb" { target { i*86-*-* || x86_64-*-* } 
} } } */
 /* { dg-final { scan-assembler-times "cmpl" 8 { target { i*86-*-* || 
x86_64-*-* } } } } */
 /* { dg-final { scan-assembler-times "cmpw" 8 { target { powerpc*-*-* || 
rs6000-*-* } } } } */
diff --git a/gcc/testsuite/gcc.dg/field-merge-13.c 
b/gcc/testsuite/gcc.dg/field-merge-13.c
index 7e4f4c499347..eeef73338f8e 100644
--- a/gcc/testsuite/gcc.dg/field-merge-13.c
+++ b/gcc/testsuite/gcc.dg/field-merge-13.c
@@ -90,4 +90,4 @@ int main () {
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "optimizing" 9 "ifcombine" } } */
+/* { dg-final { scan-tree-dump-times "optimizing" 9 "ifcombine" { target { ! { 
avr-*-* pru-*-* } } } } } */
diff --git a/gcc/testsuite/gcc.dg/field-merge-14.c 
b/gcc/testsuite/gcc.dg/field-merge-14.c
index 91d84cfebf19..73259e0936e4 100644
--- a/gcc/testsuite/gcc.dg/field-merge-14.c
+++ b/gcc/testsuite/gcc.dg/field-merge-14.c
@@ -1,7 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O -fdump-tree-ifcombine-details" } */
 
-/* Check that we don't get confused by multiple conversions.  */
+/* Check that we don't get confused by multiple conversions.  Conceivably, we
+   could combine both tests using b, but the current logic won't do that.  */
 
 __attribute__((noipa))
 int f(int *a,int *d)
diff --git a/gcc/testsuite/gcc.dg/field-merge-15.c 
b/gcc/testsuite/gcc.dg/field-merge-15.c
index 34641e893c92..fc3846452716 100644
--- a/gcc/testsuite/gcc.dg/field-merge-15.c
+++ b/gcc/testsuite/gcc.dg/field-merge-15.c
@@ -33,4 +33,4 @@ int main () {
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "optimizing" 6 "ifcombine" } } */
+/* { dg-final { scan-tree-dump-times "optimizing" 6 "ifcombine" { target { ! { 
avr-*-* pru-*-* } } } } } */
diff --git a/gcc/testsuite/gcc.dg/field-merge-16.c 
b/gcc/testsuite/gcc.dg/field-merge-16.c
index 2ca23ea663a4..afdaf45b6a94 100644
--- a/gcc/testsuite/gcc.dg/field-merge-16.c
+++ b/gcc/testsuite/gcc.dg/field-merge-16.c
@@ -4,17 +4,17 @@
 /* Check that tests for sign-extension bits are handled correctly.  */
 
 struct s {
-  short a;
-  short b;
-  unsigned short c;
-  unsigned short d;
-} __attribute__ ((aligned (8)));
+  signed char a;
+  signed char b;
+  unsigned char c;
+  unsigned char d;
+} __attribute__ ((aligned (4)));
 
 struct s p = { -1,  0, 0, 0 };
 struct s q = {  0, -1, 0, 0 };
 struct s r = {  1,  1, 0, 0 };
 
-const long long mask = 1ll << (sizeof (long long) * __CHAR_BIT__ - 5);
+const long mask = 1l << (sizeof (long) * __CHAR_BIT__ - 5);
 
 int fp ()
 {
@@ -50,9 +50,6 @@ int fr ()
 }
 
 int main () {
-  /* Unlikely, but play safe.  */
-  if (sizeof (long long) == sizeof (short))
-    return 0;
   if (fp () < 0
       || fq () < 0
       || fr () > 0)
@@ -63,4 +60,4 @@ int main () {
 /* We test .b after other fields instead of right after .a to give field
    merging a chance, otherwise the masked compares with zero are combined by
    other ifcombine logic.  The .c test is discarded by earlier optimizers.  */
-/* { dg-final { scan-tree-dump-times "optimizing" 6 "ifcombine" } } */
+/* { dg-final { scan-tree-dump-times "optimizing" 6 "ifcombine" { target { ! { 
avr-*-* pru-*-* } } } } } */
diff --git a/gcc/testsuite/gcc.dg/field-merge-17.c 
b/gcc/testsuite/gcc.dg/field-merge-17.c
index 06c8ec16e86c..a42658ac5c51 100644
--- a/gcc/testsuite/gcc.dg/field-merge-17.c
+++ b/gcc/testsuite/gcc.dg/field-merge-17.c
@@ -43,4 +43,4 @@ int main () {
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "optimizing" 4 "ifcombine" } } */
+/* { dg-final { scan-tree-dump-times "optimizing" 4 "ifcombine" { target { ! { 
avr-*-* pru-*-* } } } } } */
diff --git a/gcc/testsuite/gcc.dg/field-merge-3.c 
b/gcc/testsuite/gcc.dg/field-merge-3.c
index f26e8a96ea04..a9fe404fa426 100644
--- a/gcc/testsuite/gcc.dg/field-merge-3.c
+++ b/gcc/testsuite/gcc.dg/field-merge-3.c
@@ -31,6 +31,8 @@ void f (void) {
 }
 
 int main () {
+  if (sizeof (short) != 2)
+    return 0;
   f ();
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/field-merge-8.c 
b/gcc/testsuite/gcc.dg/field-merge-8.c
index ae270e10070e..7d49c2789013 100644
--- a/gcc/testsuite/gcc.dg/field-merge-8.c
+++ b/gcc/testsuite/gcc.dg/field-merge-8.c
@@ -20,6 +20,8 @@ void f (void) {
 }
 
 int main () {
+  if (sizeof (short) != 2)
+    return 0;
   f ();
   return 0;
 }
diff --git a/gcc/testsuite/gcc.dg/field-merge-9.c 
b/gcc/testsuite/gcc.dg/field-merge-9.c
index 04df54c2b74e..49ef59847ac0 100644
--- a/gcc/testsuite/gcc.dg/field-merge-9.c
+++ b/gcc/testsuite/gcc.dg/field-merge-9.c
@@ -29,8 +29,10 @@ void f (void) {
 }
 
 int main () {
+  if (sizeof (short) != 2)
+    return 0;
   f ();
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "optimizing two comparisons" 2 
"ifcombine" } } */
+/* { dg-final { scan-tree-dump-times "optimizing two comparisons" 2 
"ifcombine" { target { ! { avr-*-* pru-*-* } } } } } */

Reply via email to