diff mbox

[testsuite] Add effective target signal

Message ID 29fae78d-6113-4533-5df8-bedcb0b46aa0@mentor.com
State New
Headers show

Commit Message

Tom de Vries June 9, 2017, 8:25 a.m. UTC
Hi,

this patch adds effective target signal.


Atm, -DSIGNAL_SUPPRESS is defined at top-level in gcc_target_compile 
resulting in the macro being passed down to ~30k compilations. The macro 
is used in just 17 testcases.

The patch defines an effective target signal, which is used in:
- individual test-cases to add -DSIGNAL_SUPPRESS using
   dg-additional-options
- ieee.exp to add -DSIGNAL_SUPPRESS to additional_flags (because
   dg-additional-options is not supported there)

Lightly tested sofar.

OK for trunk if x86_64 and nvptx testing succeeds?

Thanks,
- Tom

Comments

Mike Stump June 9, 2017, 3:11 p.m. UTC | #1
On Jun 9, 2017, at 1:25 AM, Tom de Vries <Tom_deVries@mentor.com> wrote:
> 
> Atm, -DSIGNAL_SUPPRESS is defined at top-level in gcc_target_compile resulting in the macro being passed down to ~30k compilations. The macro is used in just 17 test cases.

> OK for trunk if x86_64 and nvptx testing succeeds?

Ok.
diff mbox

Patch

Add effective target signal

2017-06-09  Tom de Vries  <tom@codesourcery.com>

	* lib/target-supports.exp (check_effective_target_signal): New proc.
	* lib/gcc.exp (gcc_target_compile): Remove appending of
	-DSIGNAL_SUPPRESS to additional_flags.
	* gcc.c-torture/execute/ieee/ieee.exp: Add -DSIGNAL_SUPPRESS to
	additional_flags if effective target signal is not supported by the
	target.
	* gcc.c-torture/execute/20101011-1.c: Same.
	* gcc.dg/c99-stdint-1.c: Same.
	* gcc.dg/c99-stdint-2.c: Same.
	* gcc.dg/c99-stdint-5.c: Same.
	* gcc.dg/c99-stdint-6.c: Same.
	* gcc.dg/stdint-width-1.c: Same.

	* doc/sourcebuild.texi (Effective-Target Keywords, Environment
	attributes): Document signal effective target.

---
 gcc/doc/sourcebuild.texi                          | 3 +++
 gcc/testsuite/gcc.c-torture/execute/20101011-1.c  | 1 +
 gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp | 4 ++++
 gcc/testsuite/gcc.dg/c99-stdint-1.c               | 1 +
 gcc/testsuite/gcc.dg/c99-stdint-2.c               | 2 ++
 gcc/testsuite/gcc.dg/c99-stdint-5.c               | 1 +
 gcc/testsuite/gcc.dg/c99-stdint-6.c               | 1 +
 gcc/testsuite/gcc.dg/stdint-width-1.c             | 1 +
 gcc/testsuite/lib/gcc.exp                         | 3 ---
 gcc/testsuite/lib/target-supports.exp             | 9 +++++++++
 10 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 841e75a..c55b168 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -1973,6 +1973,9 @@  time) should be run on this target.  This can be enabled by setting the
 Test system runs executables on a simulator (i.e. slowly) rather than
 hardware (i.e. fast).
 
+@item signal
+Target has @code{signal.h}.
+
 @item stabs
 Target supports the stabs debugging format.
 
diff --git a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c
index 899a401..dda49a5 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c
@@ -1,5 +1,6 @@ 
 /* { dg-options "-fnon-call-exceptions" } */
 /* With -fnon-call-exceptions 0 / 0 should not be eliminated.  */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
 
 #ifdef SIGNAL_SUPPRESS
 # define DO_TEST 0
diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
index 26247d6..043e02d 100644
--- a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
+++ b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
@@ -53,6 +53,10 @@  if { [istarget "alpha*-*-*"]
   lappend additional_flags "-mieee"
 }
 
+if { ![check_effective_target_signal] } {
+    lappend additional_flags "-DSIGNAL_SUPPRESS"
+}
+
 # load support procs
 load_lib c-torture.exp
 
diff --git a/gcc/testsuite/gcc.dg/c99-stdint-1.c b/gcc/testsuite/gcc.dg/c99-stdint-1.c
index 530d130..f5c2cda 100644
--- a/gcc/testsuite/gcc.dg/c99-stdint-1.c
+++ b/gcc/testsuite/gcc.dg/c99-stdint-1.c
@@ -10,6 +10,7 @@ 
 /* { dg-do compile } */
 /* { dg-options "-std=iso9899:1999 -pedantic-errors -fhosted" } */
 /* { dg-require-effective-target ptr32plus } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
 
 #include <limits.h>
 #include <stdint.h>
diff --git a/gcc/testsuite/gcc.dg/c99-stdint-2.c b/gcc/testsuite/gcc.dg/c99-stdint-2.c
index 1784b0c..08d9f60 100644
--- a/gcc/testsuite/gcc.dg/c99-stdint-2.c
+++ b/gcc/testsuite/gcc.dg/c99-stdint-2.c
@@ -3,6 +3,8 @@ 
 /* { dg-do compile } */
 /* { dg-options "-std=iso9899:1999 -pedantic-errors -ffreestanding" } */
 /* { dg-require-effective-target ptr32plus } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
+
 /* The test is that there are no diagnostics, so just include the
    hosted version.  */
 #include "c99-stdint-1.c"
diff --git a/gcc/testsuite/gcc.dg/c99-stdint-5.c b/gcc/testsuite/gcc.dg/c99-stdint-5.c
index 9c224ed..6051323 100644
--- a/gcc/testsuite/gcc.dg/c99-stdint-5.c
+++ b/gcc/testsuite/gcc.dg/c99-stdint-5.c
@@ -3,6 +3,7 @@ 
    compilations).  */
 /* { dg-do compile } */
 /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
 
 #include <stdint.h>
 #ifndef SIGNAL_SUPPRESS
diff --git a/gcc/testsuite/gcc.dg/c99-stdint-6.c b/gcc/testsuite/gcc.dg/c99-stdint-6.c
index 150666c..60ac31f 100644
--- a/gcc/testsuite/gcc.dg/c99-stdint-6.c
+++ b/gcc/testsuite/gcc.dg/c99-stdint-6.c
@@ -2,6 +2,7 @@ 
    with any system <inttypes.h> header.  */
 /* { dg-do compile { target inttypes_types } } */
 /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
 
 #include <inttypes.h>
 #ifndef SIGNAL_SUPPRESS
diff --git a/gcc/testsuite/gcc.dg/stdint-width-1.c b/gcc/testsuite/gcc.dg/stdint-width-1.c
index a28feee..3eba9f6 100644
--- a/gcc/testsuite/gcc.dg/stdint-width-1.c
+++ b/gcc/testsuite/gcc.dg/stdint-width-1.c
@@ -1,6 +1,7 @@ 
 /* Test TS 18661-1 width macros in <stdint.h>.  */
 /* { dg-do compile } */
 /* { dg-options "-std=c11 -ffreestanding" } */
+/* { dg-additional-options "-DSIGNAL_SUPPRESS" { target { ! signal } } } */
 
 #include <stddef.h>
 #define __STDC_WANT_IEC_60559_BFP_EXT__
diff --git a/gcc/testsuite/lib/gcc.exp b/gcc/testsuite/lib/gcc.exp
index fd32a30..30fb083 100644
--- a/gcc/testsuite/lib/gcc.exp
+++ b/gcc/testsuite/lib/gcc.exp
@@ -144,9 +144,6 @@  proc gcc_target_compile { source dest type options } {
     if [target_info exists gcc,stack_size] {
 	lappend options "additional_flags=-DSTACK_SIZE=[target_info gcc,stack_size]"
     }
-    if [target_info exists gcc,signal_suppress] {
-	lappend options "additional_flags=-DSIGNAL_SUPPRESS"
-    }
 
     # TEST_ALWAYS_FLAGS are flags that should be passed to every
     # compilation.  They are passed first to allow individual
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index d0b35be..d3d5eb4 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -504,6 +504,15 @@  proc check_effective_target_trampolines { } {
     return 1
 }
 
+# Return 1 if signal.h is supported.
+
+proc check_effective_target_signal { } {
+    if [target_info exists gcc,signal_suppress] {
+      return 0
+    }
+    return 1
+}
+
 # Return 1 if according to target_info struct and explicit target list
 # target disables -fdelete-null-pointer-checks.  Targets should return 0
 # if they simply default to -fno-delete-null-pointer-checks but obey