aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYvan Roux <yvan.roux@linaro.org>2017-07-06 14:06:06 +0200
committerYvan Roux <yvan.roux@linaro.org>2017-07-06 14:06:10 +0200
commit0c7d6c4a218b7802e62cadce6e42f9c2544abd67 (patch)
tree7e1a097fff006b7692dc1d5ead6c9fc3356e79ae
parent9de4f56001bf7933aa81341945e6f0119c97b789 (diff)
gcc/testsuite/
Backport from trunk r249592. 2017-06-22 Jeff Law <law@redhat.com> * gcc.c-torture/compile/stack-check-1.c: Require "untyped_assembly". gcc/ Backport from trunk r250013. 2017-07-06 Christophe Lyon <christophe.lyon@linaro.org> * doc/sourcebuild.texi (Test Directives, Variants of dg-require-support): Add documentation for dg-require-stack-check. gcc/testsuite/ Backport from trunk r250013. 2017-07-06 Christophe Lyon <christophe.lyon@linaro.org> * lib/target-supports-dg.exp (dg-require-stack-check): New. * lib/target-supports.exp (check_stack_check_available): New. * g++.dg/other/i386-9.C: Add dg-require-stack-check. * gcc.c-torture/compile/stack-check-1.c: Likewise. * gcc.dg/graphite/run-id-pr47653.c: Likewise. * gcc.dg/pr47443.c: Likewise. * gcc.dg/pr48134.c: Likewise. * gcc.dg/pr70017.c: Likewise. * gcc.target/aarch64/stack-checking.c: Likewise. * gcc.target/arm/stack-checking.c: Likewise. * gcc.target/i386/pr48723.c: Likewise. * gcc.target/i386/pr55672.c: Likewise. * gcc.target/i386/pr67265-2.c: Likewise. * gcc.target/i386/pr67265.c: Likewise. * gnat.dg/opt49.adb: Likewise. * gnat.dg/stack_check1.adb: Likewise. * gnat.dg/stack_check2.adb: Likewise. * gnat.dg/stack_check3.adb: Likewise. Change-Id: Id58d7c3b5ed694745901b0057254635821dbfe3e
-rw-r--r--gcc/doc/sourcebuild.texi5
-rw-r--r--gcc/testsuite/g++.dg/other/i386-9.C1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/stack-check-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr47443.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr48134.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr70017.c1
-rw-r--r--gcc/testsuite/gcc.target/aarch64/stack-checking.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/stack-checking.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr48723.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/pr55672.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/pr67265-2.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/pr67265.c1
-rw-r--r--gcc/testsuite/gnat.dg/opt49.adb1
-rw-r--r--gcc/testsuite/gnat.dg/stack_check1.adb1
-rw-r--r--gcc/testsuite/gnat.dg/stack_check2.adb1
-rw-r--r--gcc/testsuite/gnat.dg/stack_check3.adb1
-rw-r--r--gcc/testsuite/lib/target-supports-dg.exp15
-rw-r--r--gcc/testsuite/lib/target-supports.exp11
19 files changed, 48 insertions, 1 deletions
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 84d9a22ccf7..003199a9a87 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2274,6 +2274,11 @@ the codeset to convert to.
Skip the test if the target does not support profiling with option
@var{profopt}.
+@item dg-require-stack-check @var{check}
+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-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
diff --git a/gcc/testsuite/g++.dg/other/i386-9.C b/gcc/testsuite/g++.dg/other/i386-9.C
index 79640579142..782cf875eef 100644
--- a/gcc/testsuite/g++.dg/other/i386-9.C
+++ b/gcc/testsuite/g++.dg/other/i386-9.C
@@ -2,6 +2,7 @@
// Testcase by Zdenek Sojka <zsojka@seznam.cz>
// { dg-do run { target i?86-*-* x86_64-*-* } }
+/* { dg-require-stack-check "" } */
// { dg-options "-Os -mpreferred-stack-boundary=5 -fstack-check -fno-omit-frame-pointer" }
int main()
diff --git a/gcc/testsuite/gcc.c-torture/compile/stack-check-1.c b/gcc/testsuite/gcc.c-torture/compile/stack-check-1.c
index 4058eb58709..2a03f7c29ae 100644
--- a/gcc/testsuite/gcc.c-torture/compile/stack-check-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/stack-check-1.c
@@ -1,2 +1,4 @@
+/* { dg-require-effective-target untyped_assembly } */
+/* { dg-require-stack-check "" } */
/* { dg-additional-options "-fstack-check" } */
#include "20031023-1.c"
diff --git a/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c b/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c
index 20fdf87565e..27784e991d3 100644
--- a/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c
+++ b/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c
@@ -1,3 +1,4 @@
+/* { dg-require-stack-check "generic" } */
/* { dg-options "-O -fstack-check=generic -ftree-pre -fgraphite-identity" } */
/* nvptx doesn't expose a stack. */
/* { dg-skip-if "" { nvptx-*-* } { "*" } { "" } } */
diff --git a/gcc/testsuite/gcc.dg/pr47443.c b/gcc/testsuite/gcc.dg/pr47443.c
index 47abea27dd7..5a5c43f2537 100644
--- a/gcc/testsuite/gcc.dg/pr47443.c
+++ b/gcc/testsuite/gcc.dg/pr47443.c
@@ -1,5 +1,6 @@
/* PR tree-optimization/47443 */
/* { dg-do compile } */
+/* { dg-require-stack-check "generic" } */
/* { dg-options "-O -fstack-check=generic" } */
static inline int bar (char *c, int i)
diff --git a/gcc/testsuite/gcc.dg/pr48134.c b/gcc/testsuite/gcc.dg/pr48134.c
index 8dc5a6d0d41..446ad01b452 100644
--- a/gcc/testsuite/gcc.dg/pr48134.c
+++ b/gcc/testsuite/gcc.dg/pr48134.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-require-stack-check "specific" } */
/* { dg-options "-O2 -fstack-check=specific -fno-tree-dse -fno-tree-fre -fno-tree-loop-optimize -g" } */
struct S
diff --git a/gcc/testsuite/gcc.dg/pr70017.c b/gcc/testsuite/gcc.dg/pr70017.c
index f544167612b..3489d5baf48 100644
--- a/gcc/testsuite/gcc.dg/pr70017.c
+++ b/gcc/testsuite/gcc.dg/pr70017.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-require-stack-check "generic" } */
/* { dg-options "-fstack-check=generic" } */
/* Check that the expected warning is issued for large frames. */
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-checking.c b/gcc/testsuite/gcc.target/aarch64/stack-checking.c
index 1d1530df62b..eaa40581c86 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-checking.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-checking.c
@@ -1,4 +1,5 @@
/* { dg-do run { target { *-*-linux* } } } */
+/* { dg-require-stack-check "" } */
/* { dg-options "-fstack-check" } */
int main(void)
diff --git a/gcc/testsuite/gcc.target/arm/stack-checking.c b/gcc/testsuite/gcc.target/arm/stack-checking.c
index 88a7e6e8286..4b53bedd97b 100644
--- a/gcc/testsuite/gcc.target/arm/stack-checking.c
+++ b/gcc/testsuite/gcc.target/arm/stack-checking.c
@@ -1,6 +1,6 @@
/* { dg-do run { target { *-*-linux* } } } */
+/* { dg-require-stack-check "" } */
/* { dg-options "-fstack-check" } */
-/* { dg-skip-if "" { arm_thumb1 } } */
int main(void)
{
diff --git a/gcc/testsuite/gcc.target/i386/pr48723.c b/gcc/testsuite/gcc.target/i386/pr48723.c
index ad102090e9f..222c075fbf7 100644
--- a/gcc/testsuite/gcc.target/i386/pr48723.c
+++ b/gcc/testsuite/gcc.target/i386/pr48723.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-require-stack-check "" } */
/* { dg-options "-fstack-check -mavx" } */
struct S0
diff --git a/gcc/testsuite/gcc.target/i386/pr55672.c b/gcc/testsuite/gcc.target/i386/pr55672.c
index 6f1c898c748..f7b0d717e01 100644
--- a/gcc/testsuite/gcc.target/i386/pr55672.c
+++ b/gcc/testsuite/gcc.target/i386/pr55672.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-require-stack-check "generic" } */
/* { dg-options "-O -fstack-check=generic" } */
int main ()
diff --git a/gcc/testsuite/gcc.target/i386/pr67265-2.c b/gcc/testsuite/gcc.target/i386/pr67265-2.c
index a9f2eb460ef..690a7845557 100644
--- a/gcc/testsuite/gcc.target/i386/pr67265-2.c
+++ b/gcc/testsuite/gcc.target/i386/pr67265-2.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-require-stack-check "" } */
/* { dg-options "-O -fstack-check" } */
void foo (int n)
diff --git a/gcc/testsuite/gcc.target/i386/pr67265.c b/gcc/testsuite/gcc.target/i386/pr67265.c
index 7827685fe5f..2671acc043a 100644
--- a/gcc/testsuite/gcc.target/i386/pr67265.c
+++ b/gcc/testsuite/gcc.target/i386/pr67265.c
@@ -2,6 +2,7 @@
/* Reduced testcase by Johannes Dewender <gnu@JonnyJD.net> */
/* { dg-do compile } */
+/* { dg-require-stack-check "" } */
/* { dg-options "-O -fstack-check -fPIC" } */
int a, b, c, d, e;
diff --git a/gcc/testsuite/gnat.dg/opt49.adb b/gcc/testsuite/gnat.dg/opt49.adb
index 4b91973a19d..42ab953a2e0 100644
--- a/gcc/testsuite/gnat.dg/opt49.adb
+++ b/gcc/testsuite/gnat.dg/opt49.adb
@@ -1,4 +1,5 @@
-- { dg-do run }
+-- { dg-require-stack-check "" }
-- { dg-options "-O -fstack-check" }
procedure Opt49 is
diff --git a/gcc/testsuite/gnat.dg/stack_check1.adb b/gcc/testsuite/gnat.dg/stack_check1.adb
index 51ee1a633b3..eaad745bdf6 100644
--- a/gcc/testsuite/gnat.dg/stack_check1.adb
+++ b/gcc/testsuite/gnat.dg/stack_check1.adb
@@ -1,4 +1,5 @@
-- { dg-do run }
+-- { dg-require-stack-check "" }
-- { dg-options "-fstack-check" }
-- This test requires architecture- and OS-specific support code for unwinding
diff --git a/gcc/testsuite/gnat.dg/stack_check2.adb b/gcc/testsuite/gnat.dg/stack_check2.adb
index 4a3008ba02b..f34d647c862 100644
--- a/gcc/testsuite/gnat.dg/stack_check2.adb
+++ b/gcc/testsuite/gnat.dg/stack_check2.adb
@@ -1,4 +1,5 @@
-- { dg-do run }
+-- { dg-require-stack-check "" }
-- { dg-options "-fstack-check" }
-- This test requires architecture- and OS-specific support code for unwinding
diff --git a/gcc/testsuite/gnat.dg/stack_check3.adb b/gcc/testsuite/gnat.dg/stack_check3.adb
index 734ed422733..3bb859c82f8 100644
--- a/gcc/testsuite/gnat.dg/stack_check3.adb
+++ b/gcc/testsuite/gnat.dg/stack_check3.adb
@@ -1,4 +1,5 @@
-- { dg-do compile }
+-- { dg-require-stack-check "" }
-- { dg-options "-O -fstack-check" }
package body Stack_Check3 is
diff --git a/gcc/testsuite/lib/target-supports-dg.exp b/gcc/testsuite/lib/target-supports-dg.exp
index 6400d643409..d50d8b07ada 100644
--- a/gcc/testsuite/lib/target-supports-dg.exp
+++ b/gcc/testsuite/lib/target-supports-dg.exp
@@ -265,6 +265,21 @@ proc dg-require-linker-plugin { args } {
}
}
+# If this target does not support the "stack-check" option, skip this
+# test.
+
+proc dg-require-stack-check { args } {
+ set stack_check_available [ check_stack_check_available [lindex $args 1 ] ]
+ if { $stack_check_available == -1 } {
+ upvar name name
+ unresolved "$name"
+ }
+ if { $stack_check_available != 1 } {
+ upvar dg-do-what dg-do-what
+ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
+ }
+}
+
# Add any target-specific flags needed for accessing the given list
# of features. This must come after all dg-options.
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 342af270ab1..560bb3ff86a 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1029,6 +1029,17 @@ proc check_effective_target_fstack_protector {} {
} "-fstack-protector"]
}
+# Return 1 if the target supports -fstack-check or -fstack-check=$stack_kind
+proc check_stack_check_available { stack_kind } {
+ if [string match "" $stack_kind] then {
+ set stack_opt "-fstack-check"
+ } else { set stack_opt "-fstack-check=$stack_kind" }
+
+ return [check_no_compiler_messages stack_check executable {
+ int main (void) { return 0; }
+ } "$stack_opt"]
+}
+
# Return 1 if compilation with -freorder-blocks-and-partition is error-free
# for trivial code, 0 otherwise. As some targets (ARM for example) only
# warn when -fprofile-use is also supplied we test that combination too.