[Committed] S/390: Fix some testsuite fails
Andreas Krebbel
krebbel@linux.vnet.ibm.com
Thu Jan 26 10:05:00 GMT 2012
Hi,
I've applied the attached patch to mainline in order to make some
testsuite fails to disappear on s390 and s390x.
gcc.dg/pr46309.c: This testcase depends on branch cost being above 1.
I've copied the AVR solution and added a -mbranch-cost option
to the back-end. That's probably quite handy in other
situations as well.
gcc.dg/pr44194-1.c: On s390 and s390x the ABI requires us to return
structs always in memory what makes the testcase fail.
"Fixed" by disabling the testcase on s390 and s390x.
gfortran.dg/reassoc_4.f: For z10 and higher we override
max-completely-peeled-insns and other parameters in the
back-end what makes this testcase fail. The solution is to
force the value to the default in order to make the testcase
work with -march=z10 and higher again.
Bye,
-Andreas-
2012-01-26 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/s390.h: Make BRANCH_COST an option.
* config/s390/s390.opt: New option -mbranch-cost.
2012-01-26 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.dg/pr46309.c: Set branch-cost to 2 for s390 and s390x.
* gcc.dg/pr44194-1.c: Disable since s390 returns structs always in
memory.
* gfortran.dg/reassoc_4.f: Force max-completely-peeled-insns to
the default value for s390 and s390x.
---
gcc/config/s390/s390.h | 2 !!
gcc/config/s390/s390.opt | 6 ++++++
gcc/testsuite/gcc.dg/pr44194-1.c | 2 !!
gcc/testsuite/gcc.dg/pr46309.c | 2 !!
gcc/testsuite/gfortran.dg/reassoc_4.f | 1 +
5 files changed, 7 insertions(+), 6 modifications(!)
Index: gcc/config/s390/s390.h
===================================================================
*** gcc/config/s390/s390.h.orig
--- gcc/config/s390/s390.h
*************** do { \
*** 722,728 ****
/* A C expression for the cost of a branch instruction. A value of 1
is the default; other values are interpreted relative to that. */
! #define BRANCH_COST(speed_p, predictable_p) 1
/* Nonzero if access to memory by bytes is slow and undesirable. */
#define SLOW_BYTE_ACCESS 1
--- 722,728 ----
/* A C expression for the cost of a branch instruction. A value of 1
is the default; other values are interpreted relative to that. */
! #define BRANCH_COST(speed_p, predictable_p) s390_branch_cost
/* Nonzero if access to memory by bytes is slow and undesirable. */
#define SLOW_BYTE_ACCESS 1
Index: gcc/config/s390/s390.opt
===================================================================
*** gcc/config/s390/s390.opt.orig
--- gcc/config/s390/s390.opt
*************** Warn if a single function's framesize ex
*** 140,142 ****
--- 140,148 ----
mzarch
Target Report RejectNegative Negative(mesa) Mask(ZARCH)
z/Architecture
+
+ mbranch-cost=
+ Target Report Joined RejectNegative UInteger Var(s390_branch_cost) Init(1)
+ Set the branch costs for conditional branch instructions. Reasonable
+ values are small, non-negative integers. The default branch cost is
+ 1.
Index: gcc/testsuite/gcc.dg/pr46309.c
===================================================================
*** gcc/testsuite/gcc.dg/pr46309.c.orig
--- gcc/testsuite/gcc.dg/pr46309.c
***************
*** 4,10 ****
/* The transformation depends on BRANCH_COST being greater than 1
(see the notes in the PR), so try to force that. */
/* { dg-additional-options "-mtune=octeon2" { target mips*-*-* } } */
! /* { dg-additional-options "-mbranch-cost=2" { target avr*-*-* } } */
int
f1 (int a)
--- 4,10 ----
/* The transformation depends on BRANCH_COST being greater than 1
(see the notes in the PR), so try to force that. */
/* { dg-additional-options "-mtune=octeon2" { target mips*-*-* } } */
! /* { dg-additional-options "-mbranch-cost=2" { target avr*-*-* s390*-*-* } } */
int
f1 (int a)
Index: gcc/testsuite/gfortran.dg/reassoc_4.f
===================================================================
*** gcc/testsuite/gfortran.dg/reassoc_4.f.orig
--- gcc/testsuite/gfortran.dg/reassoc_4.f
***************
*** 1,6 ****
--- 1,7 ----
! { dg-do compile }
! { dg-options "-O3 -ffast-math -fdump-tree-reassoc1" }
! { dg-options "-O3 -ffast-math -fdump-tree-reassoc1 --param max-completely-peel-times=16" { target spu-*-* } }
+ ! { dg-options "-O3 -ffast-math -fdump-tree-reassoc1 --param max-completely-peeled-insns=400" { target s390*-*-* } }
subroutine anisonl(w,vo,anisox,s,ii1,jj1,weight)
integer ii1,jj1,i1,iii1,j1,jjj1,k1,l1,m1,n1
real*8 w(3,3),vo(3,3),anisox(3,3,3,3),s(60,60),weight
Index: gcc/testsuite/gcc.dg/pr44194-1.c
===================================================================
*** gcc/testsuite/gcc.dg/pr44194-1.c.orig
--- gcc/testsuite/gcc.dg/pr44194-1.c
***************
*** 1,4 ****
! /* { dg-do compile { target { { { i?86-*-* x86_64-*-* } && x32 } || lp64 } } } */
/* { dg-options "-O2 -fdump-rtl-dse1" } */
/* Restricting to 64-bit targets since 32-bit targets return
structures in memory. */
--- 1,4 ----
! /* { dg-do compile { target { { { { i?86-*-* x86_64-*-* } && x32 } || lp64 } && { ! s390*-*-* } } } } */
/* { dg-options "-O2 -fdump-rtl-dse1" } */
/* Restricting to 64-bit targets since 32-bit targets return
structures in memory. */
More information about the Gcc-patches
mailing list