https://gcc.gnu.org/g:282c1e682e04507a087392260c77e78a71ec2600
commit r16-3929-g282c1e682e04507a087392260c77e78a71ec2600 Author: Stefan Schulze Frielinghaus <stefa...@gcc.gnu.org> Date: Wed Sep 17 13:12:30 2025 +0200 s390: testsuite: Fix bitops-{1,2}.c and andc-splitter-2.c After r16-2649-g0340177d54d tests fail for gcc.target/s390/arch13/bitops-{1,2}.c since sign extends in conjunction with (subreg (not a)) are folded, now. That is, of course, wanted. Since the original tests were about 32-bit operations, circumvent the sign extend by not returning a value but rather writing it to memory. Similar for andc-splitter-2.c sign extends are folded there, too. Since the test is not about 32- or 64-bit adjust the scan assembler directives only. gcc/testsuite/ChangeLog: * gcc.target/s390/arch13/bitops-1.c: Do not return a 32bit value but write it to memory. * gcc.target/s390/arch13/bitops-2.c: Ditto. * gcc.target/s390/md/andc-splitter-2.c: Adjust scan assembler directive because sign extends are folded, now. Diff: --- gcc/testsuite/gcc.target/s390/arch13/bitops-1.c | 22 ++++++++++++---------- gcc/testsuite/gcc.target/s390/arch13/bitops-2.c | 6 ++++-- gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c | 4 ++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/gcc/testsuite/gcc.target/s390/arch13/bitops-1.c b/gcc/testsuite/gcc.target/s390/arch13/bitops-1.c index 8d84655f71cc..41915a88f331 100644 --- a/gcc/testsuite/gcc.target/s390/arch13/bitops-1.c +++ b/gcc/testsuite/gcc.target/s390/arch13/bitops-1.c @@ -2,10 +2,12 @@ /* and with complement */ -int +int i32; + +void ncrk (int a, int b) { - return a & ~b; + i32 = a & ~b; } /* { dg-final { scan-assembler-times "\tncrk\t" 1 } } */ @@ -20,10 +22,10 @@ ncgrk (long long a, long long b) /* or with complement */ -int +void ocrk (int a, int b) { - return a | ~b; + i32 = a | ~b; } /* { dg-final { scan-assembler-times "\tocrk\t" 1 } } */ @@ -38,10 +40,10 @@ ocgrk (long long a, long long b) /* nand */ -int +void nnrk (int a, int b) { - return ~(a & b); + i32 = ~(a & b); } /* { dg-final { scan-assembler-times "\tnnrk\t" 1 } } */ @@ -56,10 +58,10 @@ nngrk (long long a, long long b) /* nor */ -int +void nork (int a, int b) { - return ~(a | b); + i32 = ~(a | b); } /* { dg-final { scan-assembler-times "\tnork\t" 1 } } */ @@ -74,10 +76,10 @@ nogrk (long long a, long long b) /* nxor */ -int +void nxrk (int a, int b) { - return ~(a ^ b); + i32 = ~(a ^ b); } /* { dg-final { scan-assembler-times "\tnxrk\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/arch13/bitops-2.c b/gcc/testsuite/gcc.target/s390/arch13/bitops-2.c index 1bfada3b05ab..db05309fcaed 100644 --- a/gcc/testsuite/gcc.target/s390/arch13/bitops-2.c +++ b/gcc/testsuite/gcc.target/s390/arch13/bitops-2.c @@ -4,6 +4,8 @@ /* and with complement */ +int i32; + int ncrk (int a, int b) { @@ -58,10 +60,10 @@ nngrk (long long a, long long b) /* nor */ -int +void nork (int a, int b) { - return ~(a | b); + i32 = ~(a | b); } /* { dg-final { scan-assembler-times "\tnork\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c b/gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c index 03df7b214db1..7d098d8d987e 100644 --- a/gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c +++ b/gcc/testsuite/gcc.target/s390/md/andc-splitter-2.c @@ -37,8 +37,8 @@ unsigned int andc_pp(unsigned int *a, unsigned int *b) /* { dg-final { scan-assembler ":36:.\* \{\\*andsi3_\(esa\|zarch\)\}" } } */ /* { dg-final { scan-assembler ":36:.\* \{\\*xorsi3\}" } } */ -/* { dg-final { scan-assembler-times "\tnr\?k\?\t" 4 } } */ -/* { dg-final { scan-assembler-times "\txr\?k\?\t" 4 } } */ +/* { dg-final { scan-assembler-times "\tng\?r\?k\?\t" 4 } } */ +/* { dg-final { scan-assembler-times "\txg\?r\?k\?\t" 4 } } */ int main (void)