From: Janis Johnson Date: Tue, 17 Jan 2006 00:09:27 +0000 (+0000) Subject: target-supports.exp (check_effective_target_dfp_nocache, [...]): New. X-Git-Tag: releases/gcc-4.2.0~4833 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=265e7d505cadc1c7b5b0c93b27c4a6c931b8684f;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 498e6d3b0104..417a811f891d 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 1fba25f1d1a2..4232a30186c9 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 7b2b6d835196..2cc8c1a683a5 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 55cb56615458..dd295200f2a0 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 0635aa6a6b27..158e2f90ba5f 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 d006fbe223da..d5e3bb378c92 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 4f2367a497f5..8fa39dfcd8fc 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 b5c302eaa2fa..4203470a4beb 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 50fc9d81bd31..d2dda48e6146 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 db58f5b20edf..0d46925c2bb5 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 128e26494c77..257a3c2b4df2 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 e1b9f95ca550..73cbcee44d7b 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 f4fd6be87b7d..58523b6ab024 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 bb865075a942..7724e1d2c820 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 53efdd12b50f..53258489ebbf 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 5600dd4c742d..9fa8ebe68fb1 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 e87bfc627395..8ccf22e7157b 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 50f616a18017..87867fad8b24 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 5fbbaade2580..bafe0894b63e 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 38516ed059f0..99eaad833b87 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 3b7b5ca0e71a..9aeb1d70c6e0 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 52b485204b64..db5dde781751 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 e71410f032c0..04242802071b 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 c5d9650c1e2e..0c9fbc98b7d5 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 743411e56cc8..66cf2e24b294 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 5f1be13223a1..c2674e62009e 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 07340edcee31..0763ca7d4129 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 6ee882de5ef7..b6c2dc05b78f 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 674a522d140b..dc94709c108d 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 ae4f286a2d15..86aa9e4cfaaa 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 511d70cd4b07..ff52189bc151 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 8f2f20860484..50972e0eb006 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 848861449fae..e8a663e74e1c 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 d7531046fefb..2c09e760a76c 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 79f91b47aafa..490748f50acd 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 764e17694562..904f9b3a676b 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 cade2dce1d9f..ff712bda30b8 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 5130b113e983..90a94b078fa4 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 c3f67f6939b4..bcf50683c0ce 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 26ea25946110..efc6e70ee83b 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 abb532771da5..9e54e48c7264 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 e4078470cfa8..fede76ba3289 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 0c97b6ccf80e..584058b8cc47 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 527058d445f3..232ed3315db6 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 04ead2034806..cadef960460a 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. #