* g++.dg/cdce3.C: Use dg-add-options ieee.
* g++.dg/torture/type-generic-1.C: Likewise.
* gcc.c-torture/compile/fix-trunc-mem-1.c: Likewise.
* gcc.dg/pr28796-2.c: Likewise.
* gcc.dg/torture/builtin-math-7.c: Likewise.
* gcc.dg/torture/type-generic-1.c: Likewise.
* gfortran.dg/boz_14.f90: Likewise.
* gfortran.dg/erf_2.F90: Likewise.
* gfortran.dg/init_flag_3.f90: Likewise.
* gfortran.dg/init_flag_4.f90: Likewise.
* gfortran.dg/init_flag_5.f90: Likewise.
* gfortran.dg/integer_exponentiation_1.f90: Likewise.
* gfortran.dg/integer_exponentiation_5.F90: Likewise.
* gfortran.dg/isnan_1.f90: Likewise.
* gfortran.dg/isnan_2.f90: Likewise.
* gfortran.dg/maxlocval_2.f90: Likewise.
* gfortran.dg/maxlocval_4.f90: Likewise.
* gfortran.dg/minlocval_1.f90: Likewise.
* gfortran.dg/minlocval_4.f90: Likewise.
* gfortran.dg/module_nan.f90: Likewise.
* gfortran.dg/namelist_42.f90: Likewise.
* gfortran.dg/namelist_43.f90: Likewise.
* gfortran.dg/nan_1.f90: Likewise.
* gfortran.dg/nan_2.f90: Likewise.
* gfortran.dg/nan_3.f90: Likewise.
* gfortran.dg/nan_4.f90: Likewise.
* gfortran.dg/nan_5.f90: Likewise.
* gfortran.dg/nearest_1.f90: Likewise.
* gfortran.dg/nearest_2.f90: Likewise.
* gfortran.dg/nearest_3.f90: Likewise.
* gfortran.dg/pr37243.f: Likewise.
* gfortran.dg/real_const_3.f90: Likewise.
* gfortran.dg/transfer_simplify_2.f90: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151250
138bc75d-0d04-0410-961f-
82ee72b054a4
+2009-08-31 Uros Bizjak <ubizjak@gmail.com>
+ Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * lib/target-supports.exp (add_options_for_ieee): New procedure.
+ * g++.dg/cdce3.C: Use dg-add-options ieee.
+ * g++.dg/torture/type-generic-1.C: Likewise.
+ * gcc.c-torture/compile/fix-trunc-mem-1.c: Likewise.
+ * gcc.dg/pr28796-2.c: Likewise.
+ * gcc.dg/torture/builtin-math-7.c: Likewise.
+ * gcc.dg/torture/type-generic-1.c: Likewise.
+ * gfortran.dg/boz_14.f90: Likewise.
+ * gfortran.dg/erf_2.F90: Likewise.
+ * gfortran.dg/init_flag_3.f90: Likewise.
+ * gfortran.dg/init_flag_4.f90: Likewise.
+ * gfortran.dg/init_flag_5.f90: Likewise.
+ * gfortran.dg/integer_exponentiation_1.f90: Likewise.
+ * gfortran.dg/integer_exponentiation_5.F90: Likewise.
+ * gfortran.dg/isnan_1.f90: Likewise.
+ * gfortran.dg/isnan_2.f90: Likewise.
+ * gfortran.dg/maxlocval_2.f90: Likewise.
+ * gfortran.dg/maxlocval_4.f90: Likewise.
+ * gfortran.dg/minlocval_1.f90: Likewise.
+ * gfortran.dg/minlocval_4.f90: Likewise.
+ * gfortran.dg/module_nan.f90: Likewise.
+ * gfortran.dg/namelist_42.f90: Likewise.
+ * gfortran.dg/namelist_43.f90: Likewise.
+ * gfortran.dg/nan_1.f90: Likewise.
+ * gfortran.dg/nan_2.f90: Likewise.
+ * gfortran.dg/nan_3.f90: Likewise.
+ * gfortran.dg/nan_4.f90: Likewise.
+ * gfortran.dg/nan_5.f90: Likewise.
+ * gfortran.dg/nearest_1.f90: Likewise.
+ * gfortran.dg/nearest_2.f90: Likewise.
+ * gfortran.dg/nearest_3.f90: Likewise.
+ * gfortran.dg/pr37243.f: Likewise.
+ * gfortran.dg/real_const_3.f90: Likewise.
+ * gfortran.dg/transfer_simplify_2.f90: Likewise.
+
2009-08-31 Dodji Seketeli <dodji@redhat.com>
PR debug/30161
/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -DLARGE_LONG_DOUBLE -lm" { target { {! pow10 } && large_long_double } } } */
/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -DGNU_EXTENSION -lm" { target { pow10 && {! large_long_double } } } } */
/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -lm" { target { {! pow10 } && {! large_long_double } } } } */
-/* { dg-options "-mieee -O2 -fmath-errno -fdump-tree-cdce-details -DGNU_EXTENSION -DLARGE_LONG_DOUBLE -lm" { target { alpha*-*-* && { pow10 && large_long_double } } } } */
-/* { dg-options "-mieee -O2 -fmath-errno -fdump-tree-cdce-details -DLARGE_LONG_DOUBLE -lm" { target { alpha*-*-* && { {! pow10 } && large_long_double } } } } */
-/* { dg-options "-mieee -O2 -fmath-errno -fdump-tree-cdce-details -DGNU_EXTENSION -lm" { target { alpha*-*-* && { pow10 && {! large_long_double } } } } } */
-/* { dg-options "-mieee -O2 -fmath-errno -fdump-tree-cdce-details -lm" { target { alpha*-*-* && { {! pow10 } && {! large_long_double } } } } } */
-/* { dg-final { scan-tree-dump "cdce3.C:95: note: function call is shrink-wrapped into error conditions\." "cdce" { target { pow10 } } } } */
-/* { dg-final { scan-tree-dump "cdce3.C:96: note: function call is shrink-wrapped into error conditions\." "cdce" { target { pow10 } } } } */
+/* { dg-add-options ieee } */
+/* { dg-final { scan-tree-dump "cdce3.C:92: note: function call is shrink-wrapped into error conditions\." "cdce" { target { pow10 } } } } */
+/* { dg-final { scan-tree-dump "cdce3.C:93: note: function call is shrink-wrapped into error conditions\." "cdce" { target { pow10 } } } } */
+/* { dg-final { scan-tree-dump "cdce3.C:95: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+/* { dg-final { scan-tree-dump "cdce3.C:96: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+/* { dg-final { scan-tree-dump "cdce3.C:97: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
/* { dg-final { scan-tree-dump "cdce3.C:98: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
/* { dg-final { scan-tree-dump "cdce3.C:99: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
/* { dg-final { scan-tree-dump "cdce3.C:100: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
/* { dg-final { scan-tree-dump "cdce3.C:106: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
/* { dg-final { scan-tree-dump "cdce3.C:107: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
/* { dg-final { scan-tree-dump "cdce3.C:108: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
-/* { dg-final { scan-tree-dump "cdce3.C:109: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
-/* { dg-final { scan-tree-dump "cdce3.C:110: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
-/* { dg-final { scan-tree-dump "cdce3.C:111: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
/* { dg-final { cleanup-tree-dump "cdce" } } */
#include <stdlib.h>
#include <math.h>
without any fast-math flags. */
/* { dg-do run } */
-/* { dg-options "-mieee" { target alpha*-*-* sh*-*-* } } */
+/* { dg-add-options ieee } */
/* { dg-skip-if "No Inf/NaN support" { spu-*-* } } */
#include "../../gcc.dg/tg-tests.h"
/* PR target/14201 */
/* Excercise float -> integer in memory patterns. */
-/* { dg-options "-mieee" { target alpha*-*-* } } */
+/* { dg-add-options ieee } */
void f1 (float v, int *p) { *p = v; }
void f2 (float v, unsigned int*p) { *p = v; }
/* { dg-do run } */
/* { dg-options "-O2 -funsafe-math-optimizations -fno-finite-math-only -DUNSAFE" } */
-/* { dg-options "-mieee -O2 -funsafe-math-optimizations -fno-finite-math-only -DUNSAFE" { target alpha*-*-* } } */
+/* { dg-add-options ieee } */
/* { dg-skip-if "No Inf/NaN support" { spu-*-* } } */
#include "tg-tests.h"
/* { dg-do run } */
/* { dg-require-effective-target mpc } */
-/* { dg-options "-mieee" { target sh*-*-* } } */
+/* { dg-add-options ieee } */
extern void link_error(int);
without any fast-math flags. */
/* { dg-do run } */
-/* { dg-options "-mieee" { target alpha*-*-* sh*-*-* } } */
/* { dg-skip-if "No Inf/NaN support" { spu-*-* } } */
+/* { dg-add-options ieee } */
#include "../tg-tests.h"
! { dg-do run }
-! { dg-options "-mieee" { target alpha*-*-* } }
+! { dg-add-options ieee }
! PR fortran/36214
! For BOZ-initialization of floats, the precision used to be wrong sometimes.
! { dg-do run }
! { dg-options "-fno-range-check -ffree-line-length-none " }
-! { dg-options "-fno-range-check -ffree-line-length-none -mieee" { target alpha*-*-* } } */
+! { dg-add-options ieee }
!
! Check that simplification functions and runtime library agree on ERF,
! ERFC and ERFC_SCALED.
! { dg-do run }
! { dg-options "-finit-integer=-1 -finit-logical=false -finit-real=nan" }
-! { dg-options "-finit-integer=-1 -finit-logical=false -finit-real=nan -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
program init_flag_3
! { dg-do run }
! { dg-options "-finit-real=inf" }
-! { dg-options "-finit-real=inf -mieee" { target alpha*-*-* } } */
+! { dg-add-options ieee }
program init_flag_4
call real_test
! { dg-do run }
! { dg-options "-finit-real=-inf" }
-! { dg-options "-finit-real=-inf -mieee" { target alpha*-*-* } } */
+! { dg-add-options ieee }
program init_flag_5
call real_test
! { dg-do run }
-! { dg-options "-pedantic -mieee" { target alpha*-*-* } }
+! { dg-add-options ieee }
! PR 30981 - this used to go into an endless loop during execution.
program test
a = 3.0
! { dg-do run { xfail spu-*-* } }
! FAILs on SPU because of invalid result of 1.0/0.0 inline code
! { dg-options "-fno-range-check" }
-! { dg-options "-fno-range-check -mieee" { target alpha*-*-* } } */
+! { dg-add-options ieee }
module mod_check
implicit none
! Test for the ISNAN intrinsic
!
! { dg-do run }
-! { dg-options "-pedantic-errors -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
implicit none
!
! { dg-do run }
! { dg-options "-fno-range-check" }
-! { dg-options "-fno-range-check -pedantic-errors -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
implicit none
! { dg-do run }
-! { dg-options "-mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
real :: a(3), nan, minf, pinf
real, allocatable :: c(:)
! { dg-do run }
-! { dg-options "-mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
real :: a(3,3), b(3), nan, minf, pinf, h
logical :: l, l2
! { dg-do run }
-! { dg-options "-mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
real :: a(3), nan, minf, pinf
real, allocatable :: c(:)
! { dg-do run }
-! { dg-options "-mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
real :: a(3,3), b(3), nan, minf, pinf, h
logical :: l, l2
! { dg-do run }
! { dg-options "-fno-range-check" }
-! { dg-options "-fno-range-check -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34318
! { dg-do run { target fd_truncate } }
-! { dg-options "-mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34427
! { dg-do run }
-! { dg-options "-mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34427
! as arguments
!
! { dg-do run }
-! { dg-options "-pedantic-errors -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
module aux2
! { dg-do run }
! { dg-options "-fno-range-check -pedantic" }
-! { dg-options "-fno-range-check -pedantic -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34333
! { dg-do run }
! { dg-options "-fno-range-check" }
-! { dg-options "-fno-range-check -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34319
! { dg-do compile }
! { dg-options "-std=gnu" }
-! { dg-options "-std=gnu -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34398.
! { dg-do compile }
!
! { dg-options "-fno-range-check" }
-! { dg-options "-fno-range-check -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
implicit none
! { dg-do run }
! { dg-options "-O0 -ffloat-store" }
-! { dg-options "-O0 -ffloat-store -mieee" { target alpha*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "Denormals not supported" { spu-*-* } { "*" } { "" } }
! PR fortran/27021
! Original code submitted by Dominique d'Humieres
! { dg-do run }
! { dg-options "-fno-range-check" }
-! { dg-options "-fno-range-check -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
!
! PR fortran/34192
!
! { dg-do run }
-! { dg-options "-pedantic-errors -mieee" { target alpha*-*-* sh*-*-* } }
+! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/34209
! PR rtl-optimization/37243
! { dg-do run }
-! { dg-options "-mieee" { target alpha*-*-* } }
+! { dg-add-options ieee }
! Check if register allocator handles IR flattening correctly.
SUBROUTINE SCHMD(V,M,N,LDV)
IMPLICIT DOUBLE PRECISION(A-H,O-Z)
!{ dg-do run }
!{ dg-options "-fno-range-check" }
-!{ dg-options "-fno-range-check -mieee" { target alpha*-*-* sh*-*-* } }
+!{ dg-add-options ieee }
!{ dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
! PR19310 and PR19904, allow disabling range check during compile.
! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org>
! { dg-do run }
! { dg-options "-O2" }
-! { dg-options "-O2 -mieee" { target alpha*-*-* } }
+! { dg-add-options ieee }
! Tests the fix for the meta-bug PR31237 (TRANSFER intrinsic)
! Exercises gfc_simplify_transfer a random walk through types and shapes
! and compares its results with the middle-end version that operates on
return $flags
}
+# Add to FLAGS all the target-specific flags needed to enable
+# full IEEE compliance mode.
+
+proc add_options_for_ieee { flags } {
+ if { [istarget "alpha*-*-*"]
+ || [istarget "sh*-*-*"] } {
+ return "$flags -mieee"
+ }
+ return $flags
+}
+
# Return 1 if the target provides a full C99 runtime.
proc check_effective_target_c99_runtime { } {