Add effective target stack_size
authorTom de Vries <tom@codesourcery.com>
Sat, 10 Jun 2017 06:59:26 +0000 (06:59 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Sat, 10 Jun 2017 06:59:26 +0000 (06:59 +0000)
2017-06-10  Tom de Vries  <tom@codesourcery.com>

* lib/target-supports.exp (check_effective_target_stack_size)
(dg-effective-target-value): New proc.
* lib/gcc.exp (gcc_target_compile): Remove adding of DSTACK_SIZE to
additional_flags.
* lib/objc.exp (objc_target_compile): Same.
* lib/profopt.exp (profopt-get-options): Allow dg-additional-options.
* g++.old-deja/g++.eh/badalloc1.C: Add -DSTACK_SIZE=<value> using
dg-additional-options.
* gcc.c-torture/compile/20080806-1.c: Same.
* gcc.c-torture/compile/920723-1.c: Same.
* gcc.c-torture/compile/930621-1.c: Same.
* gcc.c-torture/compile/991214-2.c: Same.
* gcc.c-torture/compile/bcopy.c: Same.
* gcc.c-torture/compile/memtst.c: Same.
* gcc.c-torture/compile/msp.c: Same.
* gcc.c-torture/compile/stuct.c: Same.
* gcc.c-torture/execute/20011008-3.c: Same.
* gcc.c-torture/execute/20030209-1.c: Same.
* gcc.c-torture/execute/20031012-1.c: Same.
* gcc.c-torture/execute/20040805-1.c: Same.
* gcc.c-torture/execute/920410-1.c: Same.
* gcc.c-torture/execute/920501-7.c: Same.
* gcc.c-torture/execute/921113-1.c: Same.
* gcc.c-torture/execute/921202-1.c: Same.
* gcc.c-torture/execute/921208-2.c: Same.
* gcc.c-torture/execute/930106-1.c: Same.
* gcc.c-torture/execute/930406-1.c: Same.
* gcc.c-torture/execute/950221-1.c: Same.
* gcc.c-torture/execute/960521-1.c: Same.
* gcc.c-torture/execute/980605-1.c: Same.
* gcc.c-torture/execute/comp-goto-1.c: Same.
* gcc.c-torture/execute/comp-goto-2.c: Same.
* gcc.c-torture/execute/memcpy-1.c: Same.
* gcc.c-torture/execute/multi-ix.c: Same.
* gcc.c-torture/execute/nestfunc-4.c: Same.
* gcc.c-torture/execute/pr20621-1.c: Same.
* gcc.c-torture/execute/pr23135.c: Same.
* gcc.c-torture/execute/pr28982b.c: Same.
* gcc.dg/loop-3.c: Same.
* gcc.dg/struct-ret-3.c: Same.
* gcc.dg/torture/stackalign/comp-goto-1.c: Same.
* gcc.dg/torture/stackalign/non-local-goto-4.c: Same.
* gcc.dg/tree-prof/comp-goto-1.c: Same.
* gcc.dg/tree-prof/pr44777.c: Same.

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

From-SVN: r249090

44 files changed:
gcc/ChangeLog
gcc/doc/sourcebuild.texi
gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C
gcc/testsuite/gcc.c-torture/compile/20080806-1.c
gcc/testsuite/gcc.c-torture/compile/920723-1.c
gcc/testsuite/gcc.c-torture/compile/930621-1.c
gcc/testsuite/gcc.c-torture/compile/991214-2.c
gcc/testsuite/gcc.c-torture/compile/bcopy.c
gcc/testsuite/gcc.c-torture/compile/memtst.c
gcc/testsuite/gcc.c-torture/compile/msp.c
gcc/testsuite/gcc.c-torture/compile/stuct.c
gcc/testsuite/gcc.c-torture/execute/20011008-3.c
gcc/testsuite/gcc.c-torture/execute/20030209-1.c
gcc/testsuite/gcc.c-torture/execute/20031012-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/920501-7.c
gcc/testsuite/gcc.c-torture/execute/921113-1.c
gcc/testsuite/gcc.c-torture/execute/921202-1.c
gcc/testsuite/gcc.c-torture/execute/921208-2.c
gcc/testsuite/gcc.c-torture/execute/930106-1.c
gcc/testsuite/gcc.c-torture/execute/930406-1.c
gcc/testsuite/gcc.c-torture/execute/950221-1.c
gcc/testsuite/gcc.c-torture/execute/960521-1.c
gcc/testsuite/gcc.c-torture/execute/980605-1.c
gcc/testsuite/gcc.c-torture/execute/comp-goto-1.c
gcc/testsuite/gcc.c-torture/execute/comp-goto-2.c
gcc/testsuite/gcc.c-torture/execute/memcpy-1.c
gcc/testsuite/gcc.c-torture/execute/multi-ix.c
gcc/testsuite/gcc.c-torture/execute/nestfunc-4.c
gcc/testsuite/gcc.c-torture/execute/pr20621-1.c
gcc/testsuite/gcc.c-torture/execute/pr23135.c
gcc/testsuite/gcc.c-torture/execute/pr28982b.c
gcc/testsuite/gcc.dg/loop-3.c
gcc/testsuite/gcc.dg/struct-ret-3.c
gcc/testsuite/gcc.dg/torture/stackalign/comp-goto-1.c
gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-4.c
gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
gcc/testsuite/gcc.dg/tree-prof/pr44777.c
gcc/testsuite/lib/gcc.exp
gcc/testsuite/lib/objc.exp
gcc/testsuite/lib/profopt.exp
gcc/testsuite/lib/target-supports.exp

index 4ab6f8a168afe770c8d11e24c0211f8127478eef..99c54d1299deef304f409b626a8c497bb0df73e7 100644 (file)
@@ -1,3 +1,8 @@
+2017-06-10  Tom de Vries  <tom@codesourcery.com>
+
+       * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
+       Document effective target stack_size.
+
 2017-06-09  David Malcolm  <dmalcolm@redhat.com>
 
        * diagnostic.c (diagnostic_report_diagnostic): Only add fixits
index 841e75abbd817980cc51a52bcea4393176697b02..cdb3a2c883d5d6401377cba01909e052a044889a 100644 (file)
@@ -2093,6 +2093,13 @@ Target supports section anchors.
 @item short_enums
 Target defaults to short enums.
 
+@item stack_size
+Target has limited stack size.  The stack size limit can be obtained using
+@code{[dg-effective-target-value stack_size]}.  For example:
+@smallexample
+/* @{ dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" @{ target @{ stack_size @} @} @} */
+@end smallexample
+
 @item static
 Target supports @option{-static}.
 
index cc36d7a35b6c8e760ff97775e0600763f682e399..7ffa0c0e634ef45881b83a976f8e712ddd26baee 100644 (file)
@@ -1,3 +1,50 @@
+2017-06-10  Tom de Vries  <tom@codesourcery.com>
+
+       * lib/target-supports.exp (check_effective_target_stack_size)
+       (dg-effective-target-value): New proc.
+       * lib/gcc.exp (gcc_target_compile): Remove adding of DSTACK_SIZE to
+       additional_flags.
+       * lib/objc.exp (objc_target_compile): Same.
+       * lib/profopt.exp (profopt-get-options): Allow dg-additional-options.
+       * g++.old-deja/g++.eh/badalloc1.C: Add -DSTACK_SIZE=<value> using
+       dg-additional-options.
+       * gcc.c-torture/compile/20080806-1.c: Same.
+       * gcc.c-torture/compile/920723-1.c: Same.
+       * gcc.c-torture/compile/930621-1.c: Same.
+       * gcc.c-torture/compile/991214-2.c: Same.
+       * gcc.c-torture/compile/bcopy.c: Same.
+       * gcc.c-torture/compile/memtst.c: Same.
+       * gcc.c-torture/compile/msp.c: Same.
+       * gcc.c-torture/compile/stuct.c: Same.
+       * gcc.c-torture/execute/20011008-3.c: Same.
+       * gcc.c-torture/execute/20030209-1.c: Same.
+       * gcc.c-torture/execute/20031012-1.c: Same.
+       * gcc.c-torture/execute/20040805-1.c: Same.
+       * gcc.c-torture/execute/920410-1.c: Same.
+       * gcc.c-torture/execute/920501-7.c: Same.
+       * gcc.c-torture/execute/921113-1.c: Same.
+       * gcc.c-torture/execute/921202-1.c: Same.
+       * gcc.c-torture/execute/921208-2.c: Same.
+       * gcc.c-torture/execute/930106-1.c: Same.
+       * gcc.c-torture/execute/930406-1.c: Same.
+       * gcc.c-torture/execute/950221-1.c: Same.
+       * gcc.c-torture/execute/960521-1.c: Same.
+       * gcc.c-torture/execute/980605-1.c: Same.
+       * gcc.c-torture/execute/comp-goto-1.c: Same.
+       * gcc.c-torture/execute/comp-goto-2.c: Same.
+       * gcc.c-torture/execute/memcpy-1.c: Same.
+       * gcc.c-torture/execute/multi-ix.c: Same.
+       * gcc.c-torture/execute/nestfunc-4.c: Same.
+       * gcc.c-torture/execute/pr20621-1.c: Same.
+       * gcc.c-torture/execute/pr23135.c: Same.
+       * gcc.c-torture/execute/pr28982b.c: Same.
+       * gcc.dg/loop-3.c: Same.
+       * gcc.dg/struct-ret-3.c: Same.
+       * gcc.dg/torture/stackalign/comp-goto-1.c: Same.
+       * gcc.dg/torture/stackalign/non-local-goto-4.c: Same.
+       * gcc.dg/tree-prof/comp-goto-1.c: Same.
+       * gcc.dg/tree-prof/pr44777.c: Same.
+
 2017-06-09  David Malcolm  <dmalcolm@redhat.com>
 
        * gcc.dg/plugin/diagnostic-test-show-locus-bw.c
index 31c7300c90bd9ede3619d6867834d8029d401a3b..f63d5c63e4adff3961df1ce414563583ab710077 100644 (file)
@@ -3,6 +3,7 @@
 // itself call malloc(), and will fail if there is no more
 // memory available.
 // { dg-do run { xfail { { xstormy16-*-* *-*-darwin[3-7]* } || vxworks_rtp } } }
+// { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } }
 // Copyright (C) 2000, 2002, 2003, 2010, 2012, 2014 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 6 June 2000 <nathan@codesourcery.com>
 
index c54e7397f5d5653f86e27f3f99e8228a48236a04..d0ee9cc2e6c534b485e32a206e51a90cc9bfb04c 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 /* This used to ICE on s390x due to a reload bug.  */
 
 #if defined(STACK_SIZE) && (STACK_SIZE < 65536)
index 69b031e895d850be96d030ad656770d7801bf611..c6351c372619bb2714f35ef68c47e06c9f0003c0 100644 (file)
@@ -1,3 +1,4 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
 
 #if defined(STACK_SIZE) && STACK_SIZE < 65536
 # define GITT_SIZE 75
index 4199bbe0870c6bd4cee40da35fbd222737f2c962..13e997a49ccdfc8fdc7de69bf6731fcdaed6b5b4 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #if defined(STACK_SIZE) && (STACK_SIZE < 65536)
 # define BYTEMEM_SIZE 10000L
 #endif
index 3e18d215e1391c912ccaeb0719d2eda7170d72db..32dad4ff864c8a2c6c6c2e7bdc2baa413a0e932b 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #if defined(STACK_SIZE) && (STACK_SIZE < 65536)
 # define HISTO_SIZE 9
 #else
index aed994e578a0d0c453e514ff9cc2a47aef156e4b..cb7c05dda015f970137d816e26edcb8aff4f93d6 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 void
 bcopy1 (s, d, c)
      long long *s;
index b5ef2607073fbb38a99411dfa9f2740747aa8296..e165a2297e8790adc42836135236605f9d9f49e7 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #ifdef STACK_SIZE
 #define SIZE STACK_SIZE / 8
 #else
index 5d350fd5ee04aaf61cfdaac392d147299889549d..594cecb6721f7fc200ba085165fb1fb2cc5a64cb 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #ifdef STACK_SIZE
 # define A_SIZE (STACK_SIZE/sizeof(int))
 #else
index deb838d809904cc8bc38c0ad1ac9e5ce7116b4e5..59acd571ba67597386ff13ddbde0945bccb9fe55 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #ifdef STACK_SIZE
 #define SIZE STACK_SIZE / 8
 #else
index 3244b0a97ae4202a20d920d5ce310b81474cd6c2..2fd6871e757b3ed862b7a8cf8c8d731cb567f2aa 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 extern void exit (int);
 extern void abort (void);
 
index 5845d67b3ca1cc681c806d38093094359cdfdb64..72c1e55f88bc02065ebcdba96f7d20e7ae415fad 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #ifdef STACK_SIZE
 #if STACK_SIZE < 8*100*100
 #define SKIP
index a1f3de8baeff37afeeebb551a4d02b67d3ea75ad..db7f3fa97adc6e0798a683befe47fe889dec61f4 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 /* PR optimization/8750
    Used to fail under Cygwin with 
    -O2 -fomit-frame-pointer        
index f09fc49a26884c49e8f33c3a3be808277a0f1713..4e978f519bcee8d0e154c5ea1c56992d3ba01b0c 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #if __INT_MAX__ < 32768 || (defined(STACK_SIZE) && STACK_SIZE < 0x12000)
 int main () { exit (0); }
 #else
index f5180f06a9ce499675a932c0b5f012169cd01677..50bc41770e8a3f42de5abf606eaf31eeea0d6160 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #define STACK_REQUIREMENT (40000 * 4 + 256)
 #if defined (STACK_SIZE) && STACK_SIZE < STACK_REQUIREMENT
 main () { exit (0); }
index d05ac61d48c604020a38561f9f83431454984315..5cced09dc04b5165ea689f7022b99485fe2b6aa0 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-require-effective-target label_values } */
 /* { dg-require-effective-target trampolines } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
 
 #ifdef STACK_SIZE
 #define DEPTH ((STACK_SIZE) / 512 + 1)
index 78972bc975ee20e2362cedc31a3c753c78b7bb1c..24c4952279a61343a4f901925a99f144477d2460 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #define STACK_REQUIREMENT (128 * 128 * 4 + 1024)
 #if defined (STACK_SIZE) && STACK_SIZE < STACK_REQUIREMENT
 main () { exit (0); }
index 935975dd3ad0743a95e81fed16877fcff1f7cab5..530fad006febc9952537a3e4d57d4452f3896213 100644 (file)
@@ -1,4 +1,6 @@
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #ifndef STACK_SIZE
 #define        VLEN    2055
 #else
index f01b5728ee524bb5114a1ac5d5078bcf0e1b404b..f18f2c8faaae4072a8626b8972016437468dd165 100644 (file)
@@ -1,4 +1,6 @@
 /* { dg-require-effective-target untyped_assembly } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #define STACK_REQUIREMENT (100000 * 4 + 1024)
 #if defined (STACK_SIZE) && STACK_SIZE < STACK_REQUIREMENT
 main () { exit (0); }
index 8081f92601376f552d1525c196509cedf2cad6c5..41add7dc25d8a9f6b4712cf968f4f7e35fba838b 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #if defined (STACK_SIZE)
 #define DUMMY_SIZE 9
 #else
index 9728eabd7eda436ba5c7f83183f5ac5fffe00f08..0d6b0fbc948cfd1e55aea4a31053a6ac2afef57b 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 f()
 {
   int x = 1;
index d67da5b0c8c172cfe34f38ba660d6c609fd7328a..aa71024b2dbe948650b498b5e704c5856e8a86de 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 struct parsefile
 {
   long fd;
index 9fc5821495a37059c21107e75b30a05b4e822165..fc69ff92414b598826fcd940f91174575f2d59b0 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #include <stdlib.h>
 
 int *a, *b;
index 2fc2691e535d2f2952cee1ce9ee4e66c2eb25e38..9185f2b9a3c428d75297bdc2ea5589ded2ff87c9 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #include <stdio.h>
 
 #ifndef STACK_SIZE
index d01f96ba70a62347b769c08fbc3721f9e1abfe84..3bc00ef9a9cfff59e67c68b7cd1e9bf6d68cf09d 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target label_values } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
 
 #include <stdlib.h>
 
index eaf83d870a178c4152b53f6894542a18bfeaa778..21a1e6f2ae23bf9d2ce06c16cea6ae41355cfad9 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-require-effective-target label_values } */
 /* { dg-require-effective-target trampolines } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
 
 /* A slight variation of 920501-7.c.  */
 
index 684854b66dc01a06a2a8c62b87d4d01311187464..e94ab8aad88c3ed7d2e52600ea2a30858ad951e3 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #include <string.h>
 
 #if defined (STACK_SIZE)
index 377f08c115cb918db47988ee9687e5196e8261bb..8ab041b4a534f5cf98e81c604a827ba404ad418a 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 /* Test for a reload bug:
    if you have a memory reference using the indexed addressing
    mode, and the base address is a pseudo containing an address in the frame
index e028166b60876e27cad77add778e1cd7470761de..ee5b376f9b8f9c5d8dfccbf02a39ab3bd1188333 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 /* Origin: hp@bitrange.com
    Test that return values come out right from a 1000-level call chain to
    functions without parameters that each need at least one "long"
index 57b3df764b757ee31b167a067bcd079dfbe1bc6a..4a55c970b8612556ced759eed1fbb1209959ae67 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 /* 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]; };
index 378ebe741d9d2b994252d27a08d318659a05eee8..31b4f8f9c1494c5ad9866127f85b8c676ff6ffd0 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 /* Based on execute/simd-1.c, modified by joern.rennecke@st.com to
    trigger a reload bug.  Verified for gcc mainline from 20050722 13:00 UTC
    for sh-elf -m4 -O2.  */
index 3f9f5bafce5290eae8fc7f92dd50c3965d7de3d0..90d4a931ab8194272cd45ed0815dfadf8b30a336 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 /* 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.  */
index 6bdb5ef5697793ac979652bd6845867d08731b9c..2c500d022177224a3412dbb98204d165eaec5631 100644 (file)
@@ -4,6 +4,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 /* { dg-options "-O3 -mtune=i386" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
 
 #if defined(STACK_SIZE) && (STACK_SIZE < 65536)
 # define BYTEMEM_SIZE 10000L
index 36cc87e7d0e9ab8e112a1158ad69e036408c1eab..c6f87acba9d5e361ef584e869c4e79643ab42974 100644 (file)
@@ -2,7 +2,8 @@
 /* Origin: Peeter Joot <peeterj@ca.ibm.com> */
 
 /* { dg-do run { target *-*-linux* *-*-gnu* } } */
-
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
 #include <sys/mman.h>
 #include <string.h>
 #include <stdio.h>
index 98a47a8ce96f9507419d623ed6484fbbf8d1d803..726bb209a94d940f477a59f2f27f3aed7d35e611 100644 (file)
@@ -1,6 +1,7 @@
 /* { dg-do run } */
 /* { dg-require-effective-target label_values } */
 /* { dg-require-effective-target trampolines } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
 
 #ifdef STACK_SIZE
 #define DEPTH ((STACK_SIZE) / 512 + 1)
index 591428d08b726c1c1bb731cccdc8b738c9d58f24..90ca71c9e2da919a4207a3acbe3354105bd58d2f 100644 (file)
@@ -2,6 +2,7 @@
 /* { dg-require-effective-target nonlocal_goto } */
 /* { dg-require-effective-target label_values } */
 /* { dg-require-effective-target trampolines } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
 
 extern void abort (void);
 extern void exit (int);
index 86e88adb89d3beed65942a7b7078cf2c09b46ec0..dd6774f2826355ff29b2e3007b74b2e5989f8bd0 100644 (file)
@@ -1,6 +1,8 @@
 /* { dg-require-effective-target freorder } */
 /* { dg-require-effective-target label_values } */
 /* { dg-options "-O2 -freorder-blocks-and-partition" } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 #include <stdlib.h>
 
 #if (!defined(STACK_SIZE) || STACK_SIZE >= 4000) && __INT_MAX__ >= 2147483647
index 4074b750645a1a8618cfc1788c36f6d262c9e795..1249b5b251d95ceed9568b0c4b9e925124d32401 100644 (file)
@@ -2,6 +2,8 @@
 /* { dg-require-effective-target label_values } */
 /* { dg-require-effective-target trampolines } */
 /* { dg-options "-O0" } */
+/* { dg-additional-options "-DSTACK_SIZE=[dg-effective-target-value stack_size]" { target { stack_size } } } */
+
 /* A variant of gcc.c-torture/execute/comp-goto-2.c.  */
 
 extern void abort (void);
index fd32a30fdf6ecd49728786fa3f90fe475ebc9a64..e4ac239e418f3eeb8008933fd67195141b021d0c 100644 (file)
@@ -141,9 +141,6 @@ proc gcc_target_compile { source dest type options } {
        lappend options "ldflags=$TEST_EXTRA_LIBS"
     }
 
-    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"
     }
index c8b9741eeda6a27413bbf916dcb8206e7059f91d..431754f65b3896c2db84f32448345699f04eccec 100644 (file)
@@ -191,10 +191,6 @@ proc objc_target_compile { source dest type options } {
        lappend options "ldflags=$wrap_flags"
     }
 
-    if [target_info exists objc,stack_size] {
-       lappend options "additional_flags=-DSTACK_SIZE=[target_info objc,stack_size]"
-    }
-
     # TEST_ALWAYS_FLAGS are flags that should be passed to every
     # compilation.  They are passed first to allow individual
     # tests to override them.
index 77ffae0267f256602fb2c70a4f27b693f13f43d0..6519c44ce333ab0ff2c4330403d3b86b2aac84ca 100644 (file)
@@ -248,6 +248,7 @@ proc profopt-get-options { src } {
     foreach op $tmp {
        set cmd [lindex $op 0]
        if { ![string compare "dg-options" $cmd] \
+            || ![string compare "dg-additional-options" $cmd] \
             || ![string compare "dg-skip-if" $cmd] \
             || ![string compare "dg-final-generate" $cmd] \
             || ![string compare "dg-final-use" $cmd] \
index 9c9a26fe1dc75b01c77cb11f3db5d862287f202c..d7efc19c0183be81a9ec4a79146679b27631b2a7 100644 (file)
@@ -504,6 +504,27 @@ proc check_effective_target_trampolines { } {
     return 1
 }
 
+# Return 1 if target has limited stack size.
+
+proc check_effective_target_stack_size { } {
+    if [target_info exists gcc,stack_size] {
+       return 1
+    }
+    return 0
+}
+
+# Return the value attribute of an effective target, otherwise return 0.
+
+proc dg-effective-target-value { effective_target } {
+    if { "$effective_target" == "stack_size" } {
+       if [check_effective_target_stack_size] {
+           return [target_info gcc,stack_size]
+       }
+    }
+
+    return 0
+}
+
 # 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