Add dg-require-stack-size
authorTom de Vries <tom@codesourcery.com>
Thu, 19 Oct 2017 08:11:26 +0000 (08:11 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Thu, 19 Oct 2017 08:11:26 +0000 (08:11 +0000)
2017-10-19  Tom de Vries  <tom@codesourcery.com>

* lib/target-supports-dg.exp (dg-require-stack-size): New proc.
* gcc.c-torture/execute/20030209-1.c: Use dg-require-stack-size.
* gcc.c-torture/execute/20040805-1.c: Same.
* gcc.c-torture/execute/920410-1.c: Same.
* gcc.c-torture/execute/921113-1.c: Same.
* gcc.c-torture/execute/921208-2.c: Same.
* gcc.c-torture/execute/comp-goto-1.c: Same.
* gcc.c-torture/execute/pr20621-1.c: Same.
* gcc.c-torture/execute/pr28982b.c: Same.
* gcc.dg/tree-prof/comp-goto-1.c: Same.

* doc/sourcebuild.texi (Test Directives, Variants of
dg-require-support): Add dg-require-stack-size.

From-SVN: r253882

13 files changed:
gcc/ChangeLog
gcc/doc/sourcebuild.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/20030209-1.c
gcc/testsuite/gcc.c-torture/execute/20040805-1.c
gcc/testsuite/gcc.c-torture/execute/920410-1.c
gcc/testsuite/gcc.c-torture/execute/921113-1.c
gcc/testsuite/gcc.c-torture/execute/921208-2.c
gcc/testsuite/gcc.c-torture/execute/comp-goto-1.c
gcc/testsuite/gcc.c-torture/execute/pr20621-1.c
gcc/testsuite/gcc.c-torture/execute/pr28982b.c
gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
gcc/testsuite/lib/target-supports-dg.exp

index 7f5b9f4df878901e15ab895931cde85bdb033517..91a291702256c4721dcdc7cdb5ada61f98afc508 100644 (file)
@@ -1,3 +1,8 @@
+2017-10-19  Tom de Vries  <tom@codesourcery.com>
+
+       * doc/sourcebuild.texi (Test Directives, Variants of
+       dg-require-support): Add dg-require-stack-size.
+
 2017-10-19  Martin Liska  <mliska@suse.cz>
 
        PR sanitizer/82517
index a2f0429119499297ec5ec6ecea2ba46512f02426..7d6d4a381a63d87e0c6b4746537cbc5feeae2d32 100644 (file)
@@ -2358,6 +2358,9 @@ Skip the test if the target does not support the @code{-fstack-check}
 option.  If @var{check} is @code{""}, support for @code{-fstack-check}
 is checked, for @code{-fstack-check=("@var{check}")} otherwise.
 
+@item dg-require-stack-size @var{size}
+Skip the test if the target does not support a stack size of @var{size}.
+
 @item dg-require-visibility @var{vis}
 Skip the test if the target does not support the @code{visibility} attribute.
 If @var{vis} is @code{""}, support for @code{visibility("hidden")} is
index a30186a2f494456dc7cbffa199afb0f45761236a..f48860adb3b9a7a5180c169fd0cf37b709fa5731 100644 (file)
@@ -1,3 +1,16 @@
+2017-10-19  Tom de Vries  <tom@codesourcery.com>
+
+       * lib/target-supports-dg.exp (dg-require-stack-size): New proc.
+       * gcc.c-torture/execute/20030209-1.c: Use dg-require-stack-size.
+       * gcc.c-torture/execute/20040805-1.c: Same.
+       * gcc.c-torture/execute/920410-1.c: Same.
+       * gcc.c-torture/execute/921113-1.c: Same.
+       * gcc.c-torture/execute/921208-2.c: Same.
+       * gcc.c-torture/execute/comp-goto-1.c: Same.
+       * gcc.c-torture/execute/pr20621-1.c: Same.
+       * gcc.c-torture/execute/pr28982b.c: Same.
+       * gcc.dg/tree-prof/comp-goto-1.c: Same.
+
 2017-10-19  Martin Liska  <mliska@suse.cz>
 
        PR sanitizer/82517
index 8f076ecb0c70f05178a6a92857821d9b43634c9c..52f71ec35433cf8ea8672a3a220cb87c5bd91b99 100644 (file)
@@ -1,12 +1,5 @@
-/* { dg-add-options stack_size } */
+/* { dg-require-stack-size "8*100*100" } */
 
-#ifdef STACK_SIZE
-#if STACK_SIZE < 8*100*100
-#define SKIP
-#endif
-#endif
-
-#ifndef SKIP
 double x[100][100];
 int main ()
 {
@@ -18,10 +11,3 @@ int main ()
     abort ();
   exit (0);
 }
-#else
-int
-main ()
-{
-  exit (0);
-}
-#endif
index d3208d69f9d47c414c695d9391b19af6c77467dd..f31109266b1488da93404ca60b393cf673fdc1a1 100644 (file)
@@ -1,6 +1,6 @@
-/* { dg-add-options stack_size } */
+/* { dg-require-stack-size "0x12000" } */
 
-#if __INT_MAX__ < 32768 || (defined(STACK_SIZE) && STACK_SIZE < 0x12000)
+#if __INT_MAX__ < 32768
 int main () { exit (0); }
 #else
 int a[2] = { 2, 3 };
index 44a72bd7bb56a8d5d50dab784382e479d2515dae..daeff5e39904d22fa4fb6d8fdac03005046eb746 100644 (file)
@@ -1,8 +1,4 @@
-/* { dg-add-options stack_size } */
+/* { dg-require-stack-size "40000 * 4 + 256" } */
 
-#define STACK_REQUIREMENT (40000 * 4 + 256)
-#if defined (STACK_SIZE) && STACK_SIZE < STACK_REQUIREMENT
-main () { exit (0); }
-#else
 main(){int d[40000];d[0]=0;exit(0);}
-#endif
+
index d3e44e358d25fdf1fc064cdf6f3971aa0bb3f8e2..824e69f04c4d2f828247b4e639d0eb05d1132934 100644 (file)
@@ -1,9 +1,4 @@
-/* { dg-add-options stack_size } */
-
-#define STACK_REQUIREMENT (128 * 128 * 4 + 1024)
-#if defined (STACK_SIZE) && STACK_SIZE < STACK_REQUIREMENT
-main () { exit (0); }
-#else
+/* { dg-require-stack-size "128 * 128 * 4 + 1024" } */
 
 typedef struct {
   float wsx;
@@ -62,4 +57,3 @@ main()
   exit(0);
 }
 
-#endif
index da9ee524924242d79ba8a38eb436fbece1f7622b..01e14f8cffea12811e081586805d47ee616ffe20 100644 (file)
@@ -1,10 +1,5 @@
 /* { dg-require-effective-target untyped_assembly } */
-/* { dg-add-options stack_size } */
-
-#define STACK_REQUIREMENT (100000 * 4 + 1024)
-#if defined (STACK_SIZE) && STACK_SIZE < STACK_REQUIREMENT
-main () { exit (0); }
-#else
+/* { dg-require-stack-size "100000 * 4 + 1024" } */
 
 g(){}
 
@@ -25,5 +20,3 @@ main ()
   f();
   exit(0);
 }
-
-#endif
index 2a840521487b7920fa57a02e25a0e0063f46c07e..4379fe70e9ceb5270effe4f5d6d0658b7558c17a 100644 (file)
@@ -1,9 +1,9 @@
 /* { dg-require-effective-target label_values } */
-/* { dg-add-options stack_size } */
+/* { dg-require-stack-size "4000" } */
 
 #include <stdlib.h>
 
-#if (!defined(STACK_SIZE) || STACK_SIZE >= 4000) && __INT_MAX__ >= 2147483647
+#if __INT_MAX__ >= 2147483647
 typedef unsigned int uint32;
 typedef signed int sint32;
 
index 9d0119b968903ceba2a435132851c7efb34aa1aa..b2a9785cd6f2162ad843a57b42ff5f3de0f0903a 100644 (file)
@@ -1,12 +1,9 @@
-/* { dg-add-options stack_size } */
+/* { dg-require-stack-size "0x10000" } */
 
 /* When generating o32 MIPS PIC, main's $gp save slot was out of range
    of a single load instruction.  */
 struct big { int i[sizeof (int) >= 4 && sizeof (void *) >= 4 ? 0x4000 : 4]; };
 struct big gb;
 int foo (struct big b, int x) { return b.i[x]; }
-#if defined(STACK_SIZE) && STACK_SIZE <= 0x10000
-int main (void) { return 0; }
-#else
 int main (void) { return foo (gb, 0) + foo (gb, 1); }
-#endif
+
index f28425e8fd7fa5e36be3c589ddc0d2225e1ef173..b68fa9a705143a6701a826e55a31dd02f4c3addf 100644 (file)
@@ -1,11 +1,8 @@
-/* { dg-add-options stack_size } */
+/* { dg-require-stack-size "0x80100" } */
 
 /* Like pr28982a.c, but with the spill slots outside the range of
    a single sp-based load on ARM.  This test tests for cases where
    the addresses in the base and index reloads require further reloads.  */
-#if defined(STACK_SIZE) && STACK_SIZE <= 0x80100
-int main (void) { return 0; }
-#else
 #define NITER 4
 #define NVARS 20
 #define MULTI(X) \
@@ -57,4 +54,3 @@ main (void)
       return 1;
   return 0;
 }
-#endif
index fe768f9a98dbdb24cd0513916ab40ebfde400dd0..baed1e3fa78a0042dce6667f44c3a16477f8ba15 100644 (file)
@@ -1,11 +1,11 @@
 /* { dg-require-effective-target freorder } */
 /* { dg-require-effective-target label_values } */
 /* { dg-options "-O2 -freorder-blocks-and-partition" } */
-/* { dg-add-options stack_size } */
+/* { dg-require-stack-size "4000" } */
 
 #include <stdlib.h>
 
-#if (!defined(STACK_SIZE) || STACK_SIZE >= 4000) && __INT_MAX__ >= 2147483647
+#if __INT_MAX__ >= 2147483647
 typedef unsigned int uint32;
 typedef signed int sint32;
 
index d50d8b07ada525aaeb58100908e47aaec53bc26f..6080421fa9e700801a20e793985bbca5d47c009d 100644 (file)
@@ -180,6 +180,21 @@ proc dg-require-iconv { args } {
     }
 }
 
+# If this target does not have sufficient stack size, skip this test.
+
+proc dg-require-stack-size { args } {
+    if { ![is-effective-target stack_size] } {
+       return
+    }
+    
+    set stack_size [dg-effective-target-value stack_size]
+    set required [expr [lindex $args 1]]
+    if { $stack_size < $required } {
+       upvar dg-do-what dg-do-what
+        set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
+    }
+}
+
 # If this target does not support named sections skip this test.
 
 proc dg-require-named-sections { args } {