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

Reply via email to