From 265e7d505cadc1c7b5b0c93b27c4a6c931b8684f Mon Sep 17 00:00:00 2001 From: Janis Johnson Date: Tue, 17 Jan 2006 00:09:27 +0000 Subject: [PATCH] target-supports.exp (check_effective_target_dfp_nocache, [...]): New. * lib/target-supports.exp (check_effective_target_dfp_nocache, check_effective_target_dfprt_nocache): New. (check_effective_target_dfp): Use check_effective_target_dfp_nocache. (check_effective_target_dfprt): New. * lib/c-compat.exp (check_dfp): Remove. (compat_dfp_setup): Use check_effective_target_dfprt_nocache. * gcc.dg/dfp/dfp.exp: Compile, execute, or skip tests based on level of support for decimal float. * gcc.dg/dfp/call-by-value.c, cast.c, compare-eq-const.c, compare-eq-d128.c, compare-eq-d32.c, compare-eq-d64.c, compare-eq-dfp.c, compare-rel-const.c, compare-rel-d128.c, compare-rel-d32.c, compare-rel-d64.c, compare-rel-dfp.c, convert-bfp.c, convert-bfp-fold.c, convert-complex.c, convert-dfp.c, convert-dfp-fold.c, convert-dfp-round.c, convert-int-fold.c, convert-int-saturate.c, func-array.c, func-mixed.c, func-scalar.c, func-struct.c, func-vararg-dfp.c, func-vararg-mixed.c, func-vararg-size0.c, inf-1.c, loop-index.c, nan-1.c, nan-2.c, operator-arith-fold.c, operator-assignment.c, operator-comma.c, operator-cond.c, operator-logical.c, operator-unary.c, snan.c, struct-layout-1.c, union-init.c, usual-arith-conv.c: Remove dg-do directives. From-SVN: r109779 --- gcc/testsuite/ChangeLog | 24 ++++++ gcc/testsuite/gcc.dg/dfp/call-by-value.c | 1 - gcc/testsuite/gcc.dg/dfp/cast.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-eq-const.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-eq-d128.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-eq-d32.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-eq-d64.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-eq-dfp.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-rel-const.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-rel-d128.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-rel-d32.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-rel-d64.c | 1 - gcc/testsuite/gcc.dg/dfp/compare-rel-dfp.c | 1 - gcc/testsuite/gcc.dg/dfp/convert-bfp-fold.c | 1 - gcc/testsuite/gcc.dg/dfp/convert-bfp.c | 1 - gcc/testsuite/gcc.dg/dfp/convert-complex.c | 1 - gcc/testsuite/gcc.dg/dfp/convert-dfp-fold.c | 1 - gcc/testsuite/gcc.dg/dfp/convert-dfp-round.c | 1 - gcc/testsuite/gcc.dg/dfp/convert-dfp.c | 1 - gcc/testsuite/gcc.dg/dfp/convert-int-fold.c | 1 - .../gcc.dg/dfp/convert-int-saturate.c | 1 - gcc/testsuite/gcc.dg/dfp/dfp.exp | 16 ++++ gcc/testsuite/gcc.dg/dfp/func-array.c | 1 - gcc/testsuite/gcc.dg/dfp/func-mixed.c | 1 - gcc/testsuite/gcc.dg/dfp/func-scalar.c | 1 - gcc/testsuite/gcc.dg/dfp/func-struct.c | 1 - gcc/testsuite/gcc.dg/dfp/func-vararg-dfp.c | 1 - gcc/testsuite/gcc.dg/dfp/func-vararg-mixed.c | 1 - gcc/testsuite/gcc.dg/dfp/func-vararg-size0.c | 1 - gcc/testsuite/gcc.dg/dfp/inf-1.c | 1 - gcc/testsuite/gcc.dg/dfp/loop-index.c | 1 - gcc/testsuite/gcc.dg/dfp/nan-1.c | 1 - gcc/testsuite/gcc.dg/dfp/nan-2.c | 1 - .../gcc.dg/dfp/operator-arith-fold.c | 1 - .../gcc.dg/dfp/operator-assignment.c | 1 - gcc/testsuite/gcc.dg/dfp/operator-comma.c | 1 - gcc/testsuite/gcc.dg/dfp/operator-cond.c | 1 - gcc/testsuite/gcc.dg/dfp/operator-logical.c | 1 - gcc/testsuite/gcc.dg/dfp/operator-unary.c | 1 - gcc/testsuite/gcc.dg/dfp/snan.c | 1 - gcc/testsuite/gcc.dg/dfp/struct-layout-1.c | 1 - gcc/testsuite/gcc.dg/dfp/union-init.c | 1 - gcc/testsuite/gcc.dg/dfp/usual-arith-conv.c | 1 - gcc/testsuite/lib/c-compat.exp | 18 +---- gcc/testsuite/lib/target-supports.exp | 75 +++++++++++++++++-- 45 files changed, 112 insertions(+), 62 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 498e6d3b010..417a811f891 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,27 @@ +2006-01-16 Janis Johnson + + * lib/target-supports.exp (check_effective_target_dfp_nocache, + check_effective_target_dfprt_nocache): New. + (check_effective_target_dfp): Use check_effective_target_dfp_nocache. + (check_effective_target_dfprt): New. + * lib/c-compat.exp (check_dfp): Remove. + (compat_dfp_setup): Use check_effective_target_dfprt_nocache. + * gcc.dg/dfp/dfp.exp: Compile, execute, or skip tests based on + level of support for decimal float. + * gcc.dg/dfp/call-by-value.c, cast.c, compare-eq-const.c, + compare-eq-d128.c, compare-eq-d32.c, compare-eq-d64.c, + compare-eq-dfp.c, compare-rel-const.c, compare-rel-d128.c, + compare-rel-d32.c, compare-rel-d64.c, compare-rel-dfp.c, + convert-bfp.c, convert-bfp-fold.c, convert-complex.c, convert-dfp.c, + convert-dfp-fold.c, convert-dfp-round.c, convert-int-fold.c, + convert-int-saturate.c, func-array.c, func-mixed.c, func-scalar.c, + func-struct.c, func-vararg-dfp.c, func-vararg-mixed.c, + func-vararg-size0.c, inf-1.c, loop-index.c, nan-1.c, nan-2.c, + operator-arith-fold.c, operator-assignment.c, operator-comma.c, + operator-cond.c, operator-logical.c, operator-unary.c, snan.c, + struct-layout-1.c, union-init.c, usual-arith-conv.c: Remove dg-do + directives. + 2006-01-16 H.J. Lu PR testsuite/25741 diff --git a/gcc/testsuite/gcc.dg/dfp/call-by-value.c b/gcc/testsuite/gcc.dg/dfp/call-by-value.c index 1fba25f1d1a..4232a30186c 100644 --- a/gcc/testsuite/gcc.dg/dfp/call-by-value.c +++ b/gcc/testsuite/gcc.dg/dfp/call-by-value.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.9.1(9) Function definitions; parameter has automatic storage. diff --git a/gcc/testsuite/gcc.dg/dfp/cast.c b/gcc/testsuite/gcc.dg/dfp/cast.c index 7b2b6d83519..2cc8c1a683a 100644 --- a/gcc/testsuite/gcc.dg/dfp/cast.c +++ b/gcc/testsuite/gcc.dg/dfp/cast.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.4 Cast operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-eq-const.c b/gcc/testsuite/gcc.dg/dfp/compare-eq-const.c index 55cb5661545..dd295200f2a 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-eq-const.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-eq-const.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.9 Equality operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-eq-d128.c b/gcc/testsuite/gcc.dg/dfp/compare-eq-d128.c index 0635aa6a6b2..158e2f90ba5 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-eq-d128.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-eq-d128.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.9 Equality operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-eq-d32.c b/gcc/testsuite/gcc.dg/dfp/compare-eq-d32.c index d006fbe223d..d5e3bb378c9 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-eq-d32.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-eq-d32.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.9 Equality operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-eq-d64.c b/gcc/testsuite/gcc.dg/dfp/compare-eq-d64.c index 4f2367a497f..8fa39dfcd8f 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-eq-d64.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-eq-d64.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.9 Equality operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-eq-dfp.c b/gcc/testsuite/gcc.dg/dfp/compare-eq-dfp.c index b5c302eaa2f..4203470a4be 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-eq-dfp.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-eq-dfp.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.9 Equality operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-rel-const.c b/gcc/testsuite/gcc.dg/dfp/compare-rel-const.c index 50fc9d81bd3..d2dda48e614 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-rel-const.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-rel-const.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.8 Relational operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-rel-d128.c b/gcc/testsuite/gcc.dg/dfp/compare-rel-d128.c index db58f5b20ed..0d46925c2bb 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-rel-d128.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-rel-d128.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.8 Relational operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-rel-d32.c b/gcc/testsuite/gcc.dg/dfp/compare-rel-d32.c index 128e26494c7..257a3c2b4df 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-rel-d32.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-rel-d32.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.8 Relational operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-rel-d64.c b/gcc/testsuite/gcc.dg/dfp/compare-rel-d64.c index e1b9f95ca55..73cbcee44d7 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-rel-d64.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-rel-d64.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.8 Relational operators. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-rel-dfp.c b/gcc/testsuite/gcc.dg/dfp/compare-rel-dfp.c index f4fd6be87b7..58523b6ab02 100644 --- a/gcc/testsuite/gcc.dg/dfp/compare-rel-dfp.c +++ b/gcc/testsuite/gcc.dg/dfp/compare-rel-dfp.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.8 Relational operators. diff --git a/gcc/testsuite/gcc.dg/dfp/convert-bfp-fold.c b/gcc/testsuite/gcc.dg/dfp/convert-bfp-fold.c index bb865075a94..7724e1d2c82 100644 --- a/gcc/testsuite/gcc.dg/dfp/convert-bfp-fold.c +++ b/gcc/testsuite/gcc.dg/dfp/convert-bfp-fold.c @@ -1,4 +1,3 @@ -/* { dg-do compile } */ /* { dg-options "-std=gnu99 -O" } */ /* N1150 5.2 Conversions among decimal floating types and between diff --git a/gcc/testsuite/gcc.dg/dfp/convert-bfp.c b/gcc/testsuite/gcc.dg/dfp/convert-bfp.c index 53efdd12b50..53258489ebb 100644 --- a/gcc/testsuite/gcc.dg/dfp/convert-bfp.c +++ b/gcc/testsuite/gcc.dg/dfp/convert-bfp.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* N1150 5.2 Conversions among decimal floating types and between diff --git a/gcc/testsuite/gcc.dg/dfp/convert-complex.c b/gcc/testsuite/gcc.dg/dfp/convert-complex.c index 5600dd4c742..9fa8ebe68fb 100644 --- a/gcc/testsuite/gcc.dg/dfp/convert-complex.c +++ b/gcc/testsuite/gcc.dg/dfp/convert-complex.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-O3" } */ /* N1150 5.3 Conversions between decimal floating and complex. diff --git a/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold.c b/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold.c index e87bfc62739..8ccf22e7157 100644 --- a/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold.c +++ b/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold.c @@ -1,4 +1,3 @@ -/* { dg-do compile } */ /* { dg-options "-std=gnu99 -O" } */ /* N1150 5.2 Conversions among decimal floating types and between diff --git a/gcc/testsuite/gcc.dg/dfp/convert-dfp-round.c b/gcc/testsuite/gcc.dg/dfp/convert-dfp-round.c index 50f616a1801..87867fad8b2 100644 --- a/gcc/testsuite/gcc.dg/dfp/convert-dfp-round.c +++ b/gcc/testsuite/gcc.dg/dfp/convert-dfp-round.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-O0 -std=gnu99" } */ /* N1150 5.2: Conversions among decimal floating types and between diff --git a/gcc/testsuite/gcc.dg/dfp/convert-dfp.c b/gcc/testsuite/gcc.dg/dfp/convert-dfp.c index 5fbbaade258..bafe0894b63 100644 --- a/gcc/testsuite/gcc.dg/dfp/convert-dfp.c +++ b/gcc/testsuite/gcc.dg/dfp/convert-dfp.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* N1150 5.2 Conversions among decimal floating types and between diff --git a/gcc/testsuite/gcc.dg/dfp/convert-int-fold.c b/gcc/testsuite/gcc.dg/dfp/convert-int-fold.c index 38516ed059f..99eaad833b8 100644 --- a/gcc/testsuite/gcc.dg/dfp/convert-int-fold.c +++ b/gcc/testsuite/gcc.dg/dfp/convert-int-fold.c @@ -1,4 +1,3 @@ -/* { dg-do compile } */ /* { dg-options "-std=gnu99 -O" } */ /* N1150 5.1 Conversion between decimal floating integer. diff --git a/gcc/testsuite/gcc.dg/dfp/convert-int-saturate.c b/gcc/testsuite/gcc.dg/dfp/convert-int-saturate.c index 3b7b5ca0e71..9aeb1d70c6e 100644 --- a/gcc/testsuite/gcc.dg/dfp/convert-int-saturate.c +++ b/gcc/testsuite/gcc.dg/dfp/convert-int-saturate.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* N1150 5.1 Conversion between decimal floating integer. diff --git a/gcc/testsuite/gcc.dg/dfp/dfp.exp b/gcc/testsuite/gcc.dg/dfp/dfp.exp index 52b485204b6..db5dde78175 100644 --- a/gcc/testsuite/gcc.dg/dfp/dfp.exp +++ b/gcc/testsuite/gcc.dg/dfp/dfp.exp @@ -25,6 +25,19 @@ if { ![check_effective_target_dfp] } { return; } +# If the decimal float is supported in the compiler but not yet in the +# runtime, treat all tests as compile-only. +global dg-do-what-default +set save-dg-do-what-default ${dg-do-what-default} +if { ![check_effective_target_dfprt] } { + verbose "dfp.exp: runtime support for decimal float does not exist" 2 + set dg-do-what-default compile +} else { + verbose "dfp.exp: runtime support for decimal float exists, use it" 2 + set dg-do-what-default run +} +verbose "dfp.exp: dg-do-what-default is ${dg-do-what-default}" 2 + # If a testcase doesn't have special options, use these. global DEFAULT_CFLAGS if ![info exists DEFAULT_CFLAGS] then { @@ -40,3 +53,6 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ # All done. dg-finish + +set dg-do-what-default ${save-dg-do-what-default} +verbose "dfp.exp: dg-do-what-default is ${dg-do-what-default}" 2 diff --git a/gcc/testsuite/gcc.dg/dfp/func-array.c b/gcc/testsuite/gcc.dg/dfp/func-array.c index e71410f032c..04242802071 100644 --- a/gcc/testsuite/gcc.dg/dfp/func-array.c +++ b/gcc/testsuite/gcc.dg/dfp/func-array.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.2.2 Function calls. diff --git a/gcc/testsuite/gcc.dg/dfp/func-mixed.c b/gcc/testsuite/gcc.dg/dfp/func-mixed.c index c5d9650c1e2..0c9fbc98b7d 100644 --- a/gcc/testsuite/gcc.dg/dfp/func-mixed.c +++ b/gcc/testsuite/gcc.dg/dfp/func-mixed.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -Wall" } */ /* C99 6.5.2.2 Function calls. diff --git a/gcc/testsuite/gcc.dg/dfp/func-scalar.c b/gcc/testsuite/gcc.dg/dfp/func-scalar.c index 743411e56cc..66cf2e24b29 100644 --- a/gcc/testsuite/gcc.dg/dfp/func-scalar.c +++ b/gcc/testsuite/gcc.dg/dfp/func-scalar.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.2.2 Function calls. diff --git a/gcc/testsuite/gcc.dg/dfp/func-struct.c b/gcc/testsuite/gcc.dg/dfp/func-struct.c index 5f1be13223a..c2674e62009 100644 --- a/gcc/testsuite/gcc.dg/dfp/func-struct.c +++ b/gcc/testsuite/gcc.dg/dfp/func-struct.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.2.2 Function calls. diff --git a/gcc/testsuite/gcc.dg/dfp/func-vararg-dfp.c b/gcc/testsuite/gcc.dg/dfp/func-vararg-dfp.c index 07340edcee3..0763ca7d412 100644 --- a/gcc/testsuite/gcc.dg/dfp/func-vararg-dfp.c +++ b/gcc/testsuite/gcc.dg/dfp/func-vararg-dfp.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.2.2 Function calls. diff --git a/gcc/testsuite/gcc.dg/dfp/func-vararg-mixed.c b/gcc/testsuite/gcc.dg/dfp/func-vararg-mixed.c index 6ee882de5ef..b6c2dc05b78 100644 --- a/gcc/testsuite/gcc.dg/dfp/func-vararg-mixed.c +++ b/gcc/testsuite/gcc.dg/dfp/func-vararg-mixed.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.2.2 Function calls. diff --git a/gcc/testsuite/gcc.dg/dfp/func-vararg-size0.c b/gcc/testsuite/gcc.dg/dfp/func-vararg-size0.c index 674a522d140..dc94709c108 100644 --- a/gcc/testsuite/gcc.dg/dfp/func-vararg-size0.c +++ b/gcc/testsuite/gcc.dg/dfp/func-vararg-size0.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.2.2 Function calls. */ diff --git a/gcc/testsuite/gcc.dg/dfp/inf-1.c b/gcc/testsuite/gcc.dg/dfp/inf-1.c index ae4f286a2d1..86aa9e4cfaa 100644 --- a/gcc/testsuite/gcc.dg/dfp/inf-1.c +++ b/gcc/testsuite/gcc.dg/dfp/inf-1.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* N1150 4: Characteristics of decimal floating types (not explicit) diff --git a/gcc/testsuite/gcc.dg/dfp/loop-index.c b/gcc/testsuite/gcc.dg/dfp/loop-index.c index 511d70cd4b0..ff52189bc15 100644 --- a/gcc/testsuite/gcc.dg/dfp/loop-index.c +++ b/gcc/testsuite/gcc.dg/dfp/loop-index.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.8.5.2: The for statement. */ diff --git a/gcc/testsuite/gcc.dg/dfp/nan-1.c b/gcc/testsuite/gcc.dg/dfp/nan-1.c index 8f2f2086048..50972e0eb00 100644 --- a/gcc/testsuite/gcc.dg/dfp/nan-1.c +++ b/gcc/testsuite/gcc.dg/dfp/nan-1.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* N1150 4: Characteristics of decimal floating types (not explicit) diff --git a/gcc/testsuite/gcc.dg/dfp/nan-2.c b/gcc/testsuite/gcc.dg/dfp/nan-2.c index 848861449fa..e8a663e74e1 100644 --- a/gcc/testsuite/gcc.dg/dfp/nan-2.c +++ b/gcc/testsuite/gcc.dg/dfp/nan-2.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* N1150 4: Characteristics of decimal floating types (not explicit) diff --git a/gcc/testsuite/gcc.dg/dfp/operator-arith-fold.c b/gcc/testsuite/gcc.dg/dfp/operator-arith-fold.c index d7531046fef..2c09e760a76 100644 --- a/gcc/testsuite/gcc.dg/dfp/operator-arith-fold.c +++ b/gcc/testsuite/gcc.dg/dfp/operator-arith-fold.c @@ -1,4 +1,3 @@ -/* { dg-do compile } */ /* { dg-options "-std=gnu99 -O" } */ /* C99 6.5.5: Multiplicative operators. diff --git a/gcc/testsuite/gcc.dg/dfp/operator-assignment.c b/gcc/testsuite/gcc.dg/dfp/operator-assignment.c index 79f91b47aaf..490748f50ac 100644 --- a/gcc/testsuite/gcc.dg/dfp/operator-assignment.c +++ b/gcc/testsuite/gcc.dg/dfp/operator-assignment.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.16 Assignment operators. diff --git a/gcc/testsuite/gcc.dg/dfp/operator-comma.c b/gcc/testsuite/gcc.dg/dfp/operator-comma.c index 764e1769456..904f9b3a676 100644 --- a/gcc/testsuite/gcc.dg/dfp/operator-comma.c +++ b/gcc/testsuite/gcc.dg/dfp/operator-comma.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.17: Comma operator. diff --git a/gcc/testsuite/gcc.dg/dfp/operator-cond.c b/gcc/testsuite/gcc.dg/dfp/operator-cond.c index cade2dce1d9..ff712bda30b 100644 --- a/gcc/testsuite/gcc.dg/dfp/operator-cond.c +++ b/gcc/testsuite/gcc.dg/dfp/operator-cond.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* C99 6.5.15 Conditional operator. diff --git a/gcc/testsuite/gcc.dg/dfp/operator-logical.c b/gcc/testsuite/gcc.dg/dfp/operator-logical.c index 5130b113e98..90a94b078fa 100644 --- a/gcc/testsuite/gcc.dg/dfp/operator-logical.c +++ b/gcc/testsuite/gcc.dg/dfp/operator-logical.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 Logical AND operator. diff --git a/gcc/testsuite/gcc.dg/dfp/operator-unary.c b/gcc/testsuite/gcc.dg/dfp/operator-unary.c index c3f67f6939b..bcf50683c0c 100644 --- a/gcc/testsuite/gcc.dg/dfp/operator-unary.c +++ b/gcc/testsuite/gcc.dg/dfp/operator-unary.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* C99 6.5.3 Unary operators. */ diff --git a/gcc/testsuite/gcc.dg/dfp/snan.c b/gcc/testsuite/gcc.dg/dfp/snan.c index 26ea2594611..efc6e70ee83 100644 --- a/gcc/testsuite/gcc.dg/dfp/snan.c +++ b/gcc/testsuite/gcc.dg/dfp/snan.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "" } */ /* FIXME: this test needs to be conditional to systems with POSIX signals. */ diff --git a/gcc/testsuite/gcc.dg/dfp/struct-layout-1.c b/gcc/testsuite/gcc.dg/dfp/struct-layout-1.c index abb532771da..9e54e48c726 100644 --- a/gcc/testsuite/gcc.dg/dfp/struct-layout-1.c +++ b/gcc/testsuite/gcc.dg/dfp/struct-layout-1.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ #include diff --git a/gcc/testsuite/gcc.dg/dfp/union-init.c b/gcc/testsuite/gcc.dg/dfp/union-init.c index e4078470cfa..fede76ba328 100644 --- a/gcc/testsuite/gcc.dg/dfp/union-init.c +++ b/gcc/testsuite/gcc.dg/dfp/union-init.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99" } */ /* Cast to union is a GNU C extension. */ diff --git a/gcc/testsuite/gcc.dg/dfp/usual-arith-conv.c b/gcc/testsuite/gcc.dg/dfp/usual-arith-conv.c index 0c97b6ccf80..584058b8cc4 100644 --- a/gcc/testsuite/gcc.dg/dfp/usual-arith-conv.c +++ b/gcc/testsuite/gcc.dg/dfp/usual-arith-conv.c @@ -1,4 +1,3 @@ -/* { dg-do run } */ /* { dg-options "-std=gnu99 -O0" } */ /* N1150 5.4: Usual arithmetic conversions. diff --git a/gcc/testsuite/lib/c-compat.exp b/gcc/testsuite/lib/c-compat.exp index 527058d445f..232ed3315db 100644 --- a/gcc/testsuite/lib/c-compat.exp +++ b/gcc/testsuite/lib/c-compat.exp @@ -1,4 +1,4 @@ -# Copyright (C) 2002, 2003, 2005, 02005 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -69,13 +69,13 @@ proc compat_setup_dfp { } { # If there is an alternate compiler, does it support decimal float types? if { $compat_use_alt == 1 && $compat_same_alt == 0 } { compat-use-alt-compiler - set compat_have_dfp [check_dfp] + set compat_have_dfp [check_effective_target_dfprt_nocache] compat-use-tst-compiler verbose "compat_have_dfp for alt compiler: $compat_have_dfp" 2 } # Does the compiler under test support it? if { $compat_have_dfp == 1 } { - set compat_have_dfp [check_dfp] + set compat_have_dfp [check_effective_target_dfprt_nocache] verbose "compat_have_dfp for tst compiler: $compat_have_dfp" 2 } @@ -87,18 +87,6 @@ proc compat_setup_dfp { } { } } -# Return 1 if the compiler supports decimal float types, 0 otherwise. -# -# Don't use check_effective_target since this will differ depending -# on the compiler, not the target. -# -proc check_dfp { } { - set result [string match "" [get_compiler_messages dfp2 object { - _Decimal32 x; _Decimal64 y; _Decimal128 z; - }]] - return $result -} - # If either compiler does not support decimal float types, skip this test. proc dg-require-compat-dfp { args } { diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 04ead203480..cadef960460 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -1,4 +1,5 @@ -# Copyright (C) 1999, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 1999, 2001, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -1055,7 +1056,54 @@ proc check_effective_target_lp64 { } { return $et_lp64_saved } -# Return 1 if the target supports Decimal Floating Point, 0 otherwise. +# Return 1 if the target supports compiling decimal floating point, +# 0 otherwise. + +proc check_effective_target_dfp_nocache { } { + verbose "check_effective_target_dfp_nocache: compiling source" 2 + set ret [string match "" [get_compiler_messages dfp object { + _Decimal32 x; _Decimal64 y; _Decimal128 z; + }]] + verbose "check_effective_target_dfp_nocache: returning $ret" 2 + return $ret +} + +proc check_effective_target_dfprt_nocache { } { + global tool + + set ret 0 + + verbose "check_effective_target_dfprt_nocache: compiling source" 2 + # Set up, compile, and execute a test program containing decimal + # float operations. + set src dfprt[pid].c + set exe dfprt[pid].x + + set f [open $src "w"] + puts $f "_Decimal32 x = 1.2df; _Decimal64 y = 2.3dd; _Decimal128 z;" + puts $f "int main () { z = x + y; return 0; }" + close $f + + verbose "check_effective_target_dfprt_nocache: compiling testfile $src" 2 + set lines [${tool}_target_compile $src $exe executable ""] + file delete $src + + if [string match "" $lines] then { + # No error message, compilation succeeded. + set result [${tool}_load "./$exe" "" ""] + set status [lindex $result 0] + remote_file build delete $exe + verbose "check_effective_target_dfprt_nocache: testfile status is <$status>" 2 + if { $status == "pass" } then { + set ret 1 + } + } + return $ret + verbose "check_effective_target_dfprt_nocache: returning $ret" 2 +} + +# Return 1 if the target supports compiling Decimal Floating Point, +# 0 otherwise. # # This won't change for different subtargets so cache the result. @@ -1065,15 +1113,30 @@ proc check_effective_target_dfp { } { if [info exists et_dfp_saved] { verbose "check_effective_target_dfp: using cached result" 2 } else { - verbose "check_effective_target_dfp: compiling source" 2 - set et_dfp_saved [string match "" [get_compiler_messages dfp object { - _Decimal32 x; _Decimal64 y; _Decimal128 z; - }]] + set et_dfp_saved [check_effective_target_dfp_nocache] } verbose "check_effective_target_dfp: returning $et_dfp_saved" 2 return $et_dfp_saved } +# Return 1 if the target supports linking and executing Decimal Floating +# Point, # 0 otherwise. +# +# This won't change for different subtargets so cache the result. + +proc check_effective_target_dfprt { } { + global et_dfprt_saved + global tool + + if [info exists et_dfprt_saved] { + verbose "check_effective_target_dfprt: using cached result" 2 + } else { + set et_dfprt_saved [check_effective_target_dfprt_nocache] + } + verbose "check_effective_target_dfprt: returning $et_dfprt_saved" 2 + return $et_dfprt_saved +} + # Return 1 if the target needs a command line argument to enable a SIMD # instruction set. # -- 2.30.2