testsuite: no dfp run without dfprt

Message ID or8r4gjzdl.fsf@lxoliva.fsfla.org
State Unresolved
Headers
Series testsuite: no dfp run without dfprt |

Checks

Context Check Description
snail/gcc-patch-check warning Git am fail log

Commit Message

Alexandre Oliva Jan. 23, 2024, 7:13 a.m. UTC
  newlib-src/libc/include/sys/fenv.h doesn't define the FE_* macros that
libgcc expects to enable decimal float support.  Only after newlib is
configured and built does an overriding header that defines those
macros become available in objdir/<target>/newlib/targ-include/, but
by then, libgcc has already been built without dfp and libbid.

This has exposed a number of tests that attempt to link dfp programs
without requiring a dfprt effective target.

dfp.exp already skips if dfp support is missing altogether, and sets
the default to compile rather than run if dfp support is present in
the compiler but missing in the runtime libraries.

However, some of the dfp tests override the default without requiring
dfprt.  Drop the overriders where reasonable, and add the explicit
requirement elsewhere.

Regstrapped on x86_64-linux-gnu; also tested on aarch64-elf with gcc-13,
where the problem was observed.  Ok to install?


for  gcc/testsuite/ChangeLog

	* c-c++-common/dfp/pr36800.c: Drop dg-do overrider.
	* c-c++-common/dfp/pr39034.c: Likewise.
	* c-c++-common/dfp/pr39035.c: Likewise.
	* gcc.dg/dfṕ/bid-non-canonical-d32-1.c: Likewise.
	* gcc.dg/dfṕ/bid-non-canonical-d32-2.c: Likewise.
	* gcc.dg/dfṕ/bid-non-canonical-d64-1.c: Likewise.
	* gcc.dg/dfṕ/bid-non-canonical-d64-2.c: Likewise.
	* gcc.dg/dfṕ/builtin-tgmath-dfp.c: Likewise.
	* gcc.dg/dfṕ/c23-float-dfp-4.c: Likewise.
	* gcc.dg/dfṕ/c23-float-dfp-5.c: Likewise.
	* gcc.dg/dfṕ/c23-float-dfp-6.c: Likewise.
	* gcc.dg/dfṕ/c23-float-dfp-7.c: Likewise.
	* gcc.dg/dfp/pr108068.c: Likewise.
	* gcc.dg/dfp/pr97439.c: Likewise.
	* g++.dg/compat/decimal/pass-1_main.C: Require dfprt.
	* g++.dg/compat/decimal/pass-2_main.C: Likewise.
	* g++.dg/compat/decimal/pass-3_main.C: Likewise.
	* g++.dg/compat/decimal/pass-4_main.C: Likewise.
	* g++.dg/compat/decimal/pass-5_main.C: Likewise.
	* g++.dg/compat/decimal/pass-6_main.C: Likewise.
	* g++.dg/compat/decimal/return-1_main.C: Likewise.
	* g++.dg/compat/decimal/return-2_main.C: Likewise.
	* g++.dg/compat/decimal/return-3_main.C: Likewise.
	* g++.dg/compat/decimal/return-4_main.C: Likewise.
	* g++.dg/compat/decimal/return-5_main.C: Likewise.
	* g++.dg/compat/decimal/return-6_main.C: Likewise.
	* g++.dg/eh/dfp-1.C: Likewise.
	* g++.dg/eh/dfp-2.C: Likewise.
	* g++.dg/eh/dfp-saves-aarch64.C: Likewise.
	* gcc.c-torture/execute/pr80692.c: Likewise.
	* gcc.dg/dfṕ/bid-non-canonical-d128-1.c: Likewise.
	* gcc.dg/dfṕ/bid-non-canonical-d128-2.c: Likewise.
	* gcc.dg/dfṕ/bid-non-canonical-d128-3.c: Likewise.
	* gcc.dg/dfṕ/bid-non-canonical-d128-4.c: Likewise.
---
 gcc/testsuite/c-c++-common/dfp/pr36800.c           |    2 --
 gcc/testsuite/c-c++-common/dfp/pr39034.c           |    1 -
 gcc/testsuite/c-c++-common/dfp/pr39035.c           |    1 -
 gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C  |    1 +
 gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C  |    1 +
 gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C  |    1 +
 gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C  |    1 +
 gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C  |    1 +
 gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C  |    1 +
 .../g++.dg/compat/decimal/return-1_main.C          |    1 +
 .../g++.dg/compat/decimal/return-2_main.C          |    1 +
 .../g++.dg/compat/decimal/return-3_main.C          |    1 +
 .../g++.dg/compat/decimal/return-4_main.C          |    1 +
 .../g++.dg/compat/decimal/return-5_main.C          |    1 +
 .../g++.dg/compat/decimal/return-6_main.C          |    1 +
 gcc/testsuite/g++.dg/eh/dfp-1.C                    |    1 +
 gcc/testsuite/g++.dg/eh/dfp-2.C                    |    1 +
 gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C        |    1 +
 gcc/testsuite/gcc.c-torture/execute/pr80692.c      |    1 +
 .../gcc.dg/dfp/bid-non-canonical-d128-1.c          |    2 +-
 .../gcc.dg/dfp/bid-non-canonical-d128-2.c          |    2 +-
 .../gcc.dg/dfp/bid-non-canonical-d128-3.c          |    2 +-
 .../gcc.dg/dfp/bid-non-canonical-d128-4.c          |    2 +-
 gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c |    1 -
 gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c |    1 -
 gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c |    1 -
 gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c |    1 -
 gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c          |    1 -
 gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c      |    1 -
 gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c         |    1 -
 gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c         |    1 -
 gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c         |    1 -
 gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c         |    1 -
 gcc/testsuite/gcc.dg/dfp/pr108068.c                |    1 -
 gcc/testsuite/gcc.dg/dfp/pr97439.c                 |    1 -
 35 files changed, 20 insertions(+), 20 deletions(-)
  

Comments

Jeff Law Jan. 24, 2024, 5:48 p.m. UTC | #1
On 1/23/24 00:13, Alexandre Oliva wrote:
> 
> newlib-src/libc/include/sys/fenv.h doesn't define the FE_* macros that
> libgcc expects to enable decimal float support.  Only after newlib is
> configured and built does an overriding header that defines those
> macros become available in objdir/<target>/newlib/targ-include/, but
> by then, libgcc has already been built without dfp and libbid.
> 
> This has exposed a number of tests that attempt to link dfp programs
> without requiring a dfprt effective target.
> 
> dfp.exp already skips if dfp support is missing altogether, and sets
> the default to compile rather than run if dfp support is present in
> the compiler but missing in the runtime libraries.
> 
> However, some of the dfp tests override the default without requiring
> dfprt.  Drop the overriders where reasonable, and add the explicit
> requirement elsewhere.
> 
> Regstrapped on x86_64-linux-gnu; also tested on aarch64-elf with gcc-13,
> where the problem was observed.  Ok to install?
> 
> 
> for  gcc/testsuite/ChangeLog
> 
> 	* c-c++-common/dfp/pr36800.c: Drop dg-do overrider.
> 	* c-c++-common/dfp/pr39034.c: Likewise.
> 	* c-c++-common/dfp/pr39035.c: Likewise.
> 	* gcc.dg/dfṕ/bid-non-canonical-d32-1.c: Likewise.
> 	* gcc.dg/dfṕ/bid-non-canonical-d32-2.c: Likewise.
> 	* gcc.dg/dfṕ/bid-non-canonical-d64-1.c: Likewise.
> 	* gcc.dg/dfṕ/bid-non-canonical-d64-2.c: Likewise.
> 	* gcc.dg/dfṕ/builtin-tgmath-dfp.c: Likewise.
> 	* gcc.dg/dfṕ/c23-float-dfp-4.c: Likewise.
> 	* gcc.dg/dfṕ/c23-float-dfp-5.c: Likewise.
> 	* gcc.dg/dfṕ/c23-float-dfp-6.c: Likewise.
> 	* gcc.dg/dfṕ/c23-float-dfp-7.c: Likewise.
> 	* gcc.dg/dfp/pr108068.c: Likewise.
> 	* gcc.dg/dfp/pr97439.c: Likewise.
> 	* g++.dg/compat/decimal/pass-1_main.C: Require dfprt.
> 	* g++.dg/compat/decimal/pass-2_main.C: Likewise.
> 	* g++.dg/compat/decimal/pass-3_main.C: Likewise.
> 	* g++.dg/compat/decimal/pass-4_main.C: Likewise.
> 	* g++.dg/compat/decimal/pass-5_main.C: Likewise.
> 	* g++.dg/compat/decimal/pass-6_main.C: Likewise.
> 	* g++.dg/compat/decimal/return-1_main.C: Likewise.
> 	* g++.dg/compat/decimal/return-2_main.C: Likewise.
> 	* g++.dg/compat/decimal/return-3_main.C: Likewise.
> 	* g++.dg/compat/decimal/return-4_main.C: Likewise.
> 	* g++.dg/compat/decimal/return-5_main.C: Likewise.
> 	* g++.dg/compat/decimal/return-6_main.C: Likewise.
> 	* g++.dg/eh/dfp-1.C: Likewise.
> 	* g++.dg/eh/dfp-2.C: Likewise.
> 	* g++.dg/eh/dfp-saves-aarch64.C: Likewise.
> 	* gcc.c-torture/execute/pr80692.c: Likewise.
> 	* gcc.dg/dfṕ/bid-non-canonical-d128-1.c: Likewise.
> 	* gcc.dg/dfṕ/bid-non-canonical-d128-2.c: Likewise.
> 	* gcc.dg/dfṕ/bid-non-canonical-d128-3.c: Likewise.
> 	* gcc.dg/dfṕ/bid-non-canonical-d128-4.c: Likewise.
OK
jeff
  
Alexandre Oliva Jan. 29, 2024, 6:24 p.m. UTC | #2
On Jan 24, 2024, Jeff Law <jeffreyalaw@gmail.com> wrote:

> OK

Thanks.  FTR, there were typos (s/ṕ/p/g) and a missing entry for
builtin-snan-1.c in the ChangeLog entries, that the ChangeLog checker
kindly pointed out.  Fixed below, just pushed along with the
otherwise-unchanged patch as r14-8505.

for  gcc/testsuite/ChangeLog

	* c-c++-common/dfp/pr36800.c: Drop dg-do overrider.
	* c-c++-common/dfp/pr39034.c: Likewise.
	* c-c++-common/dfp/pr39035.c: Likewise.
	* gcc.dg/dfp/bid-non-canonical-d32-1.c: Likewise.
	* gcc.dg/dfp/bid-non-canonical-d32-2.c: Likewise.
	* gcc.dg/dfp/bid-non-canonical-d64-1.c: Likewise.
	* gcc.dg/dfp/bid-non-canonical-d64-2.c: Likewise.
	* gcc.dg/dfp/builtin-snan-1.c: Likewise.
	* gcc.dg/dfp/builtin-tgmath-dfp.c: Likewise.
	* gcc.dg/dfp/c23-float-dfp-4.c: Likewise.
	* gcc.dg/dfp/c23-float-dfp-5.c: Likewise.
	* gcc.dg/dfp/c23-float-dfp-6.c: Likewise.
	* gcc.dg/dfp/c23-float-dfp-7.c: Likewise.
	* gcc.dg/dfp/pr108068.c: Likewise.
	* gcc.dg/dfp/pr97439.c: Likewise.
	* g++.dg/compat/decimal/pass-1_main.C: Require dfprt.
	* g++.dg/compat/decimal/pass-2_main.C: Likewise.
	* g++.dg/compat/decimal/pass-3_main.C: Likewise.
	* g++.dg/compat/decimal/pass-4_main.C: Likewise.
	* g++.dg/compat/decimal/pass-5_main.C: Likewise.
	* g++.dg/compat/decimal/pass-6_main.C: Likewise.
	* g++.dg/compat/decimal/return-1_main.C: Likewise.
	* g++.dg/compat/decimal/return-2_main.C: Likewise.
	* g++.dg/compat/decimal/return-3_main.C: Likewise.
	* g++.dg/compat/decimal/return-4_main.C: Likewise.
	* g++.dg/compat/decimal/return-5_main.C: Likewise.
	* g++.dg/compat/decimal/return-6_main.C: Likewise.
	* g++.dg/eh/dfp-1.C: Likewise.
	* g++.dg/eh/dfp-2.C: Likewise.
	* g++.dg/eh/dfp-saves-aarch64.C: Likewise.
	* gcc.c-torture/execute/pr80692.c: Likewise.
	* gcc.dg/dfp/bid-non-canonical-d128-1.c: Likewise.
	* gcc.dg/dfp/bid-non-canonical-d128-2.c: Likewise.
	* gcc.dg/dfp/bid-non-canonical-d128-3.c: Likewise.
	* gcc.dg/dfp/bid-non-canonical-d128-4.c: Likewise.
  

Patch

diff --git a/gcc/testsuite/c-c++-common/dfp/pr36800.c b/gcc/testsuite/c-c++-common/dfp/pr36800.c
index 76ff28c98155b..3d3465a465e7e 100644
--- a/gcc/testsuite/c-c++-common/dfp/pr36800.c
+++ b/gcc/testsuite/c-c++-common/dfp/pr36800.c
@@ -1,5 +1,3 @@ 
-/* { dg-do run } */
-
 #include <stdarg.h>
 #include "dfp-dbg.h"
 
diff --git a/gcc/testsuite/c-c++-common/dfp/pr39034.c b/gcc/testsuite/c-c++-common/dfp/pr39034.c
index 2a7eedbdbe20d..d05ccc2b30cab 100644
--- a/gcc/testsuite/c-c++-common/dfp/pr39034.c
+++ b/gcc/testsuite/c-c++-common/dfp/pr39034.c
@@ -1,4 +1,3 @@ 
-/* { dg-do run } */
 /* { dg-options "-O" } */
 
 /* DFP TR 24732 == WG14 / N1176, N1312 */
diff --git a/gcc/testsuite/c-c++-common/dfp/pr39035.c b/gcc/testsuite/c-c++-common/dfp/pr39035.c
index 2c9e8b386ed49..c556985458444 100644
--- a/gcc/testsuite/c-c++-common/dfp/pr39035.c
+++ b/gcc/testsuite/c-c++-common/dfp/pr39035.c
@@ -1,4 +1,3 @@ 
-/* { dg-do run } */
 /* { dg-options "-O" } */
 
 /* DFP TR 24732 == WG14 / N1176, N1312 */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
index 963dc3bbfabf5..cb48c491b27e4 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test passing decimal scalars by value.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C
index 533e4b276dc79..5f2a7212c8023 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test passing decimal classes by value.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C
index de09992c2246f..f095173b23af9 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test passing decimal scalars and classes by value.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C
index d5a0a47d478b0..379f38a4061d8 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test passing decimal classes and scalars by value.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C
index 9b25a49c72e89..436d80d05680a 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test passing decimal scalars and typedef'd classes by value.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C
index 1b686a21dd028..444643cfd05d7 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test passing typedef'd decimal classes and scalars by value.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C
index c663bb01cf3ca..fa8dbefbe9ed5 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test function return values for decimal float scalars.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C
index afa27f269dfbc..ab7fb5d7fa55b 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test function return values for decimal classes.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C
index 468f3fc0c347b..8ee3d31fb2432 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test function return values for decimal float scalars and classes.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C
index 365d8becd5986..a0fe5c72aeb64 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test function return values for decimal float classes and scalars.  */
 
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C
index 2c334832797f2..bea5d9d591c1c 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test function return values for decimal float scalars and typedef'd
    classes.  */
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C
index 94526bdcb8154..4460475424e20 100644
--- a/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 /* Test function return values for typedef'd decimal float classes
    and scalars.  */
diff --git a/gcc/testsuite/g++.dg/eh/dfp-1.C b/gcc/testsuite/g++.dg/eh/dfp-1.C
index b0da13a4cc575..5efd92ccc7886 100644
--- a/gcc/testsuite/g++.dg/eh/dfp-1.C
+++ b/gcc/testsuite/g++.dg/eh/dfp-1.C
@@ -1,5 +1,6 @@ 
 // { dg-do run }
 // { dg-require-effective-target dfp }
+/* { dg-require-effective-target dfprt } */
 
 extern "C" void abort ();
 
diff --git a/gcc/testsuite/g++.dg/eh/dfp-2.C b/gcc/testsuite/g++.dg/eh/dfp-2.C
index aff0e03d1d915..3c65b031b9c91 100644
--- a/gcc/testsuite/g++.dg/eh/dfp-2.C
+++ b/gcc/testsuite/g++.dg/eh/dfp-2.C
@@ -1,5 +1,6 @@ 
 // { dg-do run }
 // { dg-require-effective-target dfp }
+/* { dg-require-effective-target dfprt } */
 
 extern "C" void abort ();
 
diff --git a/gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C b/gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C
index 062034105004c..f1fa7c44a31c4 100644
--- a/gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C
+++ b/gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C
@@ -1,5 +1,6 @@ 
 // { dg-do run { target aarch64*-*-* } }
 // { dg-require-effective-target dfp }
+/* { dg-require-effective-target dfprt } */
 
 /* Test unwinding of AArch64 register saves.  */
 /* We cannot use #include <decimal/decimal> because it defines
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr80692.c b/gcc/testsuite/gcc.c-torture/execute/pr80692.c
index e653c71c91307..0978703bec2fd 100644
--- a/gcc/testsuite/gcc.c-torture/execute/pr80692.c
+++ b/gcc/testsuite/gcc.c-torture/execute/pr80692.c
@@ -1,4 +1,5 @@ 
 /* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target dfprt } */
 
 int main () {
 	_Decimal64 d64 = -0.DD;
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
index f2f6d47b038f2..641d418ba5f19 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
@@ -1,5 +1,5 @@ 
 /* Test non-canonical BID significands: _Decimal128.  Bug 91226.  */
-/* { dg-do run { target lp64 } } */
+/* { dg-do run { target { lp64 && dfprt } } } */
 /* { dg-require-effective-target dfp_bid } */
 /* { dg-options "-std=gnu23 -O2" } */
 
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
index ba4b9cd96946d..d2eedce86e086 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
@@ -1,6 +1,6 @@ 
 /* Test non-canonical BID significands: _Decimal128, case where
    combination field starts 11.  Bug 91226.  */
-/* { dg-do run { target lp64 } } */
+/* { dg-do run { target { lp64 && dfprt } } } */
 /* { dg-require-effective-target dfp_bid } */
 /* { dg-options "-std=gnu23 -O2" } */
 
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
index a16ecf8c624a1..fce415fcec501 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
@@ -1,5 +1,5 @@ 
 /* Test non-canonical BID significands: _Decimal128.  Bug 91226.  */
-/* { dg-do run { target lp64 } } */
+/* { dg-do run { target { lp64 && dfprt } } } */
 /* { dg-require-effective-target dfp_bid } */
 /* { dg-options "-std=gnu23 -O0" } */
 
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
index 1504e07f71405..05ef43d97b5da 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
@@ -1,6 +1,6 @@ 
 /* Test non-canonical BID significands: _Decimal128, case where
    combination field starts 11.  Bug 91226.  */
-/* { dg-do run { target lp64 } } */
+/* { dg-do run { target { lp64 && dfprt } } } */
 /* { dg-require-effective-target dfp_bid } */
 /* { dg-options "-std=gnu23 -O0" } */
 
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
index 593f06b61dd75..b5f45b374b738 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
@@ -1,5 +1,4 @@ 
 /* Test non-canonical BID significands: _Decimal32.  Bug 91226.  */
-/* { dg-do run } */
 /* { dg-require-effective-target dfp_bid } */
 /* { dg-options "-std=gnu23 -O2" } */
 
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
index ae2c9268ac331..e2edb57d4a973 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
@@ -1,5 +1,4 @@ 
 /* Test non-canonical BID significands: _Decimal32.  Bug 91226.  */
-/* { dg-do run } */
 /* { dg-require-effective-target dfp_bid } */
 /* { dg-options "-std=gnu23 -O0" } */
 
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
index bb0cb1a60501f..d48d83079dc43 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
@@ -1,5 +1,4 @@ 
 /* Test non-canonical BID significands: _Decimal64.  Bug 91226.  */
-/* { dg-do run } */
 /* { dg-require-effective-target dfp_bid } */
 /* { dg-options "-std=gnu23 -O2" } */
 
diff --git a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
index 1375ab56e5861..feda104cc2403 100644
--- a/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
+++ b/gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
@@ -1,5 +1,4 @@ 
 /* Test non-canonical BID significands: _Decimal64.  Bug 91226.  */
-/* { dg-do run } */
 /* { dg-require-effective-target dfp_bid } */
 /* { dg-options "-std=gnu23 -O0" } */
 
diff --git a/gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c b/gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
index 49a32c875463c..759e9e8a74b95 100644
--- a/gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
+++ b/gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
@@ -1,6 +1,5 @@ 
 /* Test __builtin_nansd* functions.  Test not requiring runtime
    exceptions support.  */
-/* { dg-do run } */
 /* { dg-options "" } */
 
 volatile _Decimal32 d32 = __builtin_nansd32 ("");
diff --git a/gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c b/gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c
index 256a71e68be41..17e424d5bf979 100644
--- a/gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c
+++ b/gcc/testsuite/gcc.dg/dfp/builtin-tgmath-dfp.c
@@ -1,5 +1,4 @@ 
 /* Test __builtin_tgmath: valid uses, decimal floating-point types.  */
-/* { dg-do run } */
 /* { dg-options "" } */
 
 extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c
index d7d04bd12d94c..fbd52ce3e7bf3 100644
--- a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c
+++ b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-4.c
@@ -1,5 +1,4 @@ 
 /* Test DEC_INFINITY defined in <float.h> with DFP support.  */
-/* { dg-do run } */
 /* { dg-options "-std=c23" } */
 
 #include <float.h>
diff --git a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c
index 19a5fbbba8a01..926649cbf17f7 100644
--- a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c
+++ b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-5.c
@@ -1,5 +1,4 @@ 
 /* Test DEC_NAN defined in <float.h> with DFP support.  */
-/* { dg-do run } */
 /* { dg-options "-std=c23" } */
 
 #include <float.h>
diff --git a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c
index d00c3905a7b29..d6b93a259ddb4 100644
--- a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c
+++ b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-6.c
@@ -2,7 +2,6 @@ 
    quiet not signaling.  (This would only actually fail for a
    signaling NaN in the hardware DFP case, because the software DFP
    support in libgcc does not integrate with hardware exceptions.)  */
-/* { dg-do run } */
 /* { dg-require-effective-target fenv_exceptions } */
 /* { dg-options "-std=c23" } */
 
diff --git a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c
index bc1cd4b58a3fd..d08d5460c3131 100644
--- a/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c
+++ b/gcc/testsuite/gcc.dg/dfp/c23-float-dfp-7.c
@@ -1,5 +1,4 @@ 
 /* Test DEC*_SNAN macros defined in <float.h> with DFP support.  */
-/* { dg-do run } */
 /* { dg-options "-std=c23" } */
 
 #include <float.h>
diff --git a/gcc/testsuite/gcc.dg/dfp/pr108068.c b/gcc/testsuite/gcc.dg/dfp/pr108068.c
index 6cbb0fbe6026a..a8798e9002022 100644
--- a/gcc/testsuite/gcc.dg/dfp/pr108068.c
+++ b/gcc/testsuite/gcc.dg/dfp/pr108068.c
@@ -1,5 +1,4 @@ 
 /* PR tree-optimization/108068 */
-/* { dg-do run } */
 /* { dg-options "-O2" } */
 
 int
diff --git a/gcc/testsuite/gcc.dg/dfp/pr97439.c b/gcc/testsuite/gcc.dg/dfp/pr97439.c
index 7fcf834043cb0..c651ec22e4314 100644
--- a/gcc/testsuite/gcc.dg/dfp/pr97439.c
+++ b/gcc/testsuite/gcc.dg/dfp/pr97439.c
@@ -1,4 +1,3 @@ 
-// { dg-do run }
 // { dg-options "-O1" }
 
 static int