Hello, two new testcases were failing on SPU for the "usual" reasons:
- gfortran.dg/typebound_operator_9.f03 tries to allocate too much memory - gcc.dg/torture/builtin-complex-1.c assumes IEEE semantics (Inf/Nan), which isn't supported for single-precision float on SPU The following patch fixes those by skipping the test (or the parts of the test that use "float") in the same way these problems were handled before in other test cases. Tested on spu-elf, committed to mainline as obvious. Bye, Ulrich ChangeLog: * gfortran.dg/typebound_operator_9.f03: Skip on SPU. * gcc.dg/torture/builtin-complex-1.c: Skip "float" tests on SPU. Index: gcc/testsuite/gfortran.dg/typebound_operator_9.f03 =================================================================== *** gcc/testsuite/gfortran.dg/typebound_operator_9.f03 (revision 184503) --- gcc/testsuite/gfortran.dg/typebound_operator_9.f03 (working copy) *************** *** 1,5 **** --- 1,6 ---- ! { dg-do run } ! { dg-add-options ieee } + ! { dg-skip-if "Too big for local store" { spu-*-* } { "*" } { "" } } ! ! Solve a diffusion problem using an object-oriented approach ! Index: gcc/testsuite/gcc.dg/torture/builtin-complex-1.c =================================================================== *** gcc/testsuite/gcc.dg/torture/builtin-complex-1.c (revision 184503) --- gcc/testsuite/gcc.dg/torture/builtin-complex-1.c (working copy) *************** extern void abort (void); *** 18,28 **** --- 18,30 ---- abort (); \ } while (0) + #ifndef __SPU__ void comparef (float a, float b) { COMPARE_BODY (a, b, float, __builtin_copysignf); } + #endif void compare (double a, double b) *************** comparel (long double a, long double b) *** 36,47 **** --- 38,51 ---- COMPARE_BODY (a, b, long double, __builtin_copysignl); } + #ifndef __SPU__ void comparecf (_Complex float a, float r, float i) { comparef (__real__ a, r); comparef (__imag__ a, i); } + #endif void comparec (_Complex double a, double r, double i) *************** comparecl (_Complex long double a, long *** 90,97 **** --- 94,103 ---- void check_float (void) { + #ifndef __SPU__ ALL_CHECKS (0.0f, -0.0f, __builtin_nanf(""), __builtin_inff(), float, comparecf); + #endif } void -- Dr. Ulrich Weigand GNU Toolchain for Linux on System z and Cell BE ulrich.weig...@de.ibm.com