summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-17 00:09:27 +0000
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-17 00:09:27 +0000
commit73492ab6218406ea044270438c137344e2466fb8 (patch)
treecd1bcd4b60463425318e6505d696026fa0c50f91 /gcc/testsuite
parente3acaece1fd0ca4151ad42271106d970325b29d8 (diff)
downloadgcc-73492ab6218406ea044270438c137344e2466fb8.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109779 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog24
-rw-r--r--gcc/testsuite/gcc.dg/dfp/call-by-value.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/cast.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-eq-const.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-eq-d128.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-eq-d32.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-eq-d64.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-eq-dfp.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-rel-const.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-rel-d128.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-rel-d32.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-rel-d64.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-rel-dfp.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/convert-bfp-fold.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/convert-bfp.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/convert-complex.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/convert-dfp-fold.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/convert-dfp-round.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/convert-dfp.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/convert-int-fold.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/convert-int-saturate.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/dfp.exp16
-rw-r--r--gcc/testsuite/gcc.dg/dfp/func-array.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/func-mixed.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/func-scalar.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/func-struct.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/func-vararg-dfp.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/func-vararg-mixed.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/func-vararg-size0.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/inf-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/loop-index.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/nan-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/nan-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/operator-arith-fold.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/operator-assignment.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/operator-comma.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/operator-cond.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/operator-logical.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/operator-unary.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/snan.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/struct-layout-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/union-init.c1
-rw-r--r--gcc/testsuite/gcc.dg/dfp/usual-arith-conv.c1
-rw-r--r--gcc/testsuite/lib/c-compat.exp18
-rw-r--r--gcc/testsuite/lib/target-supports.exp75
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 <janis187@us.ibm.com>
+
+ * 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 <hongjiu.lu@intel.com>
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 <stdarg.h>
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.
#