aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/ChangeLog85
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20000518-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20011029-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20021108-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20040614-1.c8
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20050510-1.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920415-1.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920428-3.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920501-7.c6
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920502-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920826-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920831-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/950613-1.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/981006-1.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/991213-3.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/complex-6.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/labels-2.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/labels-3.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr17913.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr21356.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr21728.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr25224.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr27863.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr28489.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr29128.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr30984.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr32919.c3
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr42559.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr46107.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr51495.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr58164.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20040302-1.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20041214-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20071210-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20071220-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20071220-2.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/980526-1.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/built-in-setjmp.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr51447.c2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr56982.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr60003.c1
-rw-r--r--gcc/testsuite/gcc.dg/20021029-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/comp-goto-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/comp-goto-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/non-local-goto-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/non-local-goto-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr26983.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr43379.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr45259.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr49994-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr52139.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr57287-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr57287.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr59920-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr59920-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr59920-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/setjmp-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/setjmp-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/setjmp-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr33848.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48542.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr53695.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr57036-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr57147-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr57584.c2
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr59993.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/setjmp-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c1
-rw-r--r--gcc/testsuite/lib/target-supports.exp31
75 files changed, 243 insertions, 20 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ef35dbf..241034d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,90 @@
2014-11-10 Bernd Schmidt <bernds@codesourcery.com>
+ * lib/target-supports.exp (check_effective_target_indirect_jumps):
+ New function.
+ (check_effective_target_nonlocal_goto): New function.
+ (check_effective_target_label_values): New function.
+ * gcc.c-torture/execute/20071220-2.c: Require label_values.
+ * gcc.c-torture/compile/labels-2.c: Likewise.
+ * gcc.c-torture/compile/20000518-1.c: Likewise.
+ * gcc.c-torture/compile/20021108-1.c: Likewise.
+ * gcc.c-torture/compile/981006-1.c: Likewise.
+ * gcc.c-torture/execute/20040302-1.c: Likewise.
+ * gcc.dg/torture/pr33848.c: Likewise.
+
+ * gcc.c-torture/compile/pr46107.c: Require indirect jumps and
+ label values.
+ * gcc.c-torture/compile/pr32919.c: Likewise.
+ * gcc.c-torture/compile/pr17913.c: Likewise.
+ * gcc.c-torture/compile/pr51495.c: Likewise.
+ * gcc.c-torture/compile/pr25224.c: Likewise.
+ * gcc.c-torture/compile/labels-3.c: Likewise.
+ * gcc.c-torture/compile/pr27863.c: Likewise.
+ * gcc.c-torture/compile/20050510-1.c: Likewise.
+ * gcc.c-torture/compile/pr28489.c: Likewise.
+ * gcc.c-torture/compile/pr29128.c: Likewise.
+ * gcc.c-torture/compile/pr21356: Likewise.
+ * gcc.c-torture/execute/20071210-1.c: Likewise.
+ * gcc.c-torture/execute/200701220-1.c: Likewise.
+ * gcc.c-torture/execute/pr51447.c: Likewise.
+ * gcc.c-torture/execute/comp-goto-1.c: Likewise.
+ * gcc.c-torture/execute/comp-goto-2.c: Likewise.
+ * gcc.dg/20021029-1.c: Likewise.
+ * gcc.dg/pr43379.c: Likewise.
+ * gcc.dg/pr45259.c: Likewise.
+ * gcc.dg/torture/pr53695.c: Likewise.
+ * gcc.dg/torture/pr57584.c: Likewise.
+
+ * gcc.c-torture/execute/980526-1.c: Skip if -O0 and neither label_values
+ or indirect_jumps are available.
+ * gcc.c-torture/compile/920415-1.c: Likewise. Remove NO_LABEL_VALUES
+ test.
+ * gcc.c-torture/compile/920428-3.c: Likewise.
+ * gcc.c-torture/compile/950613-1.c: Likewise.
+
+ * gcc.c-torture/compile/pr30984.c: Require indirect jumps.
+ * gcc.c-torture/compile/991213-3.c: Likewise.
+ * gcc.c-torture/compile/920825-1.c: Likewise.
+ * gcc.c-torture/compile/20011029-1.c: Likewise.
+ * gcc.c-torture/compile/complex-6.c: Likewise.
+ * gcc.c-torture/compile/pr27127.c: Likewise.
+ * gcc.c-torture/compile/pr58164.c: Likewise.
+ * gcc.c-torture/compile/20041214-1.c: Likewise.
+ * gcc.c-torture/execute/built-in-setjmp.c: Likewise.
+ * gcc.c-torture/execute/pr56982.c: Likewise.
+ * gcc.c-torture/execute/pr60003.c: Likewise.
+ * gcc.c-torture/execute/pr26983.c: Likewise.
+ * gcc.dg/pr57287-2.c: Likewise.
+ * gcc.dg/pr59920-1.c: Likewise.
+ * gcc.dg/pr59920-2.c: Likewise.
+ * gcc.dg/pr59920-3.c: Likewise.
+ * gcc.dg/setjmp-3.c: Likewise.
+ * gcc.dg/setjmp-4.c: Likewise.
+ * gcc.dg/setjmp-5.c: Likewise.
+ * gcc.dg/torture/pr48542.c: Likewise.
+ * gcc.dg/torture/pr57147-2.c: Likewise.
+ * gcc.dg/torture/pr59993.c: Likewise.
+
+ * gcc.dg/torture/stackalign/non-local-goto-1.c: Require nonlocal_goto.
+ * gcc.dg/torture/stackalign/non-local-goto-2.c: Likewise.
+ * gcc.dg/torture/stackalign/non-local-goto-3.c: Likewise.
+ * gcc.dg/torture/stackalign/non-local-goto-4.c: Likewise.
+ * gcc.dg/torture/stackalign/non-local-goto-5.c: Likewise.
+ * gcc.dg/torture/stackalign/setjmp-1.c: Likewise.
+ * gcc.dg/torture/stackalign/setjmp-3.c: Likewise.
+ * gcc.dg/torture/stackalign/setjmp-4.c: Likewise.
+ * gcc.dg/non-local-goto-1.c: Likewise.
+ * gcc.dg/non-local-goto-2.c: Likewise.
+ * gcc.dg/pr49994-1.c: Likewise.
+ * gcc.dg/torture/pr57036-2.c: Likewise.
+
+ * gcc.c-torture/compile/20040614-1.c: Require label_values. Remove
+ NO_LABEL_VALUES test.
+ * gcc.c-torture/compile/920831-1.c: Likewise.
+ * gcc.c-torture/compile/920502-1.c: Likewise.
+ * gcc.c-torture/compile/920501-7.c: Likewise.
+ * gcc.dg/pr52139.c: Likewise.
+
* lib/target-supports.exp (check_effective_target_trampolines,
check_profiling_available, check_effective_target_lto,
check_effective_target_vect_natural): False for nvptx-*-*.
diff --git a/gcc/testsuite/gcc.c-torture/compile/20000518-1.c b/gcc/testsuite/gcc.c-torture/compile/20000518-1.c
index d208779..4034932 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20000518-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20000518-1.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target label_values } */
+
void callit1(void*);
extern __inline__ void test()
diff --git a/gcc/testsuite/gcc.c-torture/compile/20011029-1.c b/gcc/testsuite/gcc.c-torture/compile/20011029-1.c
index 3b2bcdf..538b4e4 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20011029-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20011029-1.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target indirect_jumps } */
+
void foo (void *) __attribute__ ((noreturn));
void
diff --git a/gcc/testsuite/gcc.c-torture/compile/20021108-1.c b/gcc/testsuite/gcc.c-torture/compile/20021108-1.c
index 01b6e4e..3ac5d2e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20021108-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20021108-1.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target label_values } */
+
int
main()
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/20040614-1.c b/gcc/testsuite/gcc.c-torture/compile/20040614-1.c
index d99d278..b692ab5 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20040614-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20040614-1.c
@@ -1,4 +1,5 @@
-#ifndef NO_LABEL_VALUES
+/* { dg-require-effective-target label_values } */
+
void f(int r1, int *fp)
{
void *hlbl_tbl[] = { &&label1 };
@@ -14,7 +15,6 @@ void f(int r1, int *fp)
goto label0;
label2:
;
-}
-#else
+}
+
int x;
-#endif
diff --git a/gcc/testsuite/gcc.c-torture/compile/20050510-1.c b/gcc/testsuite/gcc.c-torture/compile/20050510-1.c
index 3570f4f..84f198f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/20050510-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/20050510-1.c
@@ -1,3 +1,6 @@
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
void bar (int k)
{
void *label = (k) ? &&x : &&y;
diff --git a/gcc/testsuite/gcc.c-torture/compile/920415-1.c b/gcc/testsuite/gcc.c-torture/compile/920415-1.c
index 1636ade..96ac7fe 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920415-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920415-1.c
@@ -1,7 +1,9 @@
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
extern void abort (void);
extern void exit (int);
-#ifndef NO_LABEL_VALUES
f ()
{
__label__ l;
@@ -15,6 +17,3 @@ f ()
l:
exit (0);
}
-#else
-int x;
-#endif
diff --git a/gcc/testsuite/gcc.c-torture/compile/920428-3.c b/gcc/testsuite/gcc.c-torture/compile/920428-3.c
index 13640c9..0e9031e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920428-3.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920428-3.c
@@ -1,5 +1,4 @@
-#ifndef NO_LABEL_VALUES
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
+
x(a){static void*j[]={&&l1,&&l2};goto*j[a];l1:return 0;l2:return 1;}
-#else
-main(){ exit (0); }
-#endif
diff --git a/gcc/testsuite/gcc.c-torture/compile/920501-7.c b/gcc/testsuite/gcc.c-torture/compile/920501-7.c
index aed8804..2af15e3 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920501-7.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920501-7.c
@@ -1,5 +1,3 @@
-#ifndef NO_LABEL_VALUES
+/* { dg-require-effective-target label_values } */
+
x(){if(&&e-&&b<0)x();b:goto*&&b;e:;}
-#else
-int x;
-#endif
diff --git a/gcc/testsuite/gcc.c-torture/compile/920502-1.c b/gcc/testsuite/gcc.c-torture/compile/920502-1.c
index b576c6c..ec2405a 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920502-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920502-1.c
@@ -1 +1,3 @@
+/* { dg-require-effective-target indirect_jumps } */
+
extern void*t[];x(i){goto*t[i];}
diff --git a/gcc/testsuite/gcc.c-torture/compile/920826-1.c b/gcc/testsuite/gcc.c-torture/compile/920826-1.c
index d19eff2..c2d8843 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920826-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920826-1.c
@@ -1 +1,3 @@
+/* { dg-require-effective-target indirect_jumps } */
+
f(int*x){goto*(char)*x;}
diff --git a/gcc/testsuite/gcc.c-torture/compile/920831-1.c b/gcc/testsuite/gcc.c-torture/compile/920831-1.c
index ff2fd63..9e422a9 100644
--- a/gcc/testsuite/gcc.c-torture/compile/920831-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/920831-1.c
@@ -1 +1,3 @@
+/* { dg-require-effective-target indirect_jumps } */
+
f(x){goto*(char)x;}
diff --git a/gcc/testsuite/gcc.c-torture/compile/950613-1.c b/gcc/testsuite/gcc.c-torture/compile/950613-1.c
index 8aa757f..595f9ef 100644
--- a/gcc/testsuite/gcc.c-torture/compile/950613-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/950613-1.c
@@ -1,4 +1,6 @@
-#ifndef NO_LABEL_VALUES
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
+
f ()
{
long *sp;
@@ -26,6 +28,3 @@ f ()
goto *pc++;
}
}
-#else
-int x;
-#endif
diff --git a/gcc/testsuite/gcc.c-torture/compile/981006-1.c b/gcc/testsuite/gcc.c-torture/compile/981006-1.c
index d77c115..9c66875 100644
--- a/gcc/testsuite/gcc.c-torture/compile/981006-1.c
+++ b/gcc/testsuite/gcc.c-torture/compile/981006-1.c
@@ -7,6 +7,7 @@
/* For MIPS at least, pic is needed to trigger the problem. */
/* { dg-options "-w -Wuninitialized -Werror -fpic" } */
/* { dg-options "-w -Wuninitialized -Werror" { target { { rs6000-*-aix* powerpc*-*-aix* arm*-*-* fr30-*-* sh-*-hms h8300*-*-* cris-*-elf* mmix-*-* } || { ! fpic } } } } */
+/* { dg-require-effective-target label_values } */
int foo (int a, int b)
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/991213-3.c b/gcc/testsuite/gcc.c-torture/compile/991213-3.c
index ce8347f..bda7490 100644
--- a/gcc/testsuite/gcc.c-torture/compile/991213-3.c
+++ b/gcc/testsuite/gcc.c-torture/compile/991213-3.c
@@ -1,2 +1,4 @@
+/* { dg-require-effective-target indirect_jumps } */
+
int jump () { goto * (int (*) ()) 0xbabebec0; }
diff --git a/gcc/testsuite/gcc.c-torture/compile/complex-6.c b/gcc/testsuite/gcc.c-torture/compile/complex-6.c
index eb89040..9724bf2 100644
--- a/gcc/testsuite/gcc.c-torture/compile/complex-6.c
+++ b/gcc/testsuite/gcc.c-torture/compile/complex-6.c
@@ -1,4 +1,5 @@
/* PR tree-opt/35737 */
+/* { dg-require-effective-target indirect_jumps } */
long buf[10];
diff --git a/gcc/testsuite/gcc.c-torture/compile/labels-2.c b/gcc/testsuite/gcc.c-torture/compile/labels-2.c
index cf4f116..316a380 100644
--- a/gcc/testsuite/gcc.c-torture/compile/labels-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/labels-2.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target label_values } */
+
struct bp { void *v, *b, *e; };
f ()
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/labels-3.c b/gcc/testsuite/gcc.c-torture/compile/labels-3.c
index 51ac883..6a0f7c2 100644
--- a/gcc/testsuite/gcc.c-torture/compile/labels-3.c
+++ b/gcc/testsuite/gcc.c-torture/compile/labels-3.c
@@ -1,4 +1,6 @@
/* Verify that we can narrow the storage associated with label diffs. */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
int foo (int a)
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr17913.c b/gcc/testsuite/gcc.c-torture/compile/pr17913.c
index 30654a3..cf58700 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr17913.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr17913.c
@@ -1,4 +1,7 @@
/* Test for computed jump into cond_expr: bug 17913. */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
void f (void)
{
void *p = &&a;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr21356.c b/gcc/testsuite/gcc.c-torture/compile/pr21356.c
index b072b51..229108f 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr21356.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr21356.c
@@ -1,3 +1,6 @@
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
int a;
void* p;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr21728.c b/gcc/testsuite/gcc.c-torture/compile/pr21728.c
index 991cb38..d37f44b 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr21728.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr21728.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target indirect_jumps } */
+
int main (void)
{
__label__ l1;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr25224.c b/gcc/testsuite/gcc.c-torture/compile/pr25224.c
index 0ccf0cdf..56f4698 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr25224.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr25224.c
@@ -1,4 +1,7 @@
/* { dg-options "-funswitch-loops" } */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
static float rgam;
extern void *jmp(void *);
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr27863.c b/gcc/testsuite/gcc.c-torture/compile/pr27863.c
index 86abc06..926312e4 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr27863.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr27863.c
@@ -1,4 +1,7 @@
/* This test used to ICE on IA64. */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
long stack[100];
int main(int argc,char**argv,char **envp)
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr28489.c b/gcc/testsuite/gcc.c-torture/compile/pr28489.c
index 766880f..60d23b1 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr28489.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr28489.c
@@ -1,3 +1,6 @@
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
typedef int c_int;
union c_insn
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr29128.c b/gcc/testsuite/gcc.c-torture/compile/pr29128.c
index 2afeae3..3358b47 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr29128.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr29128.c
@@ -1,3 +1,6 @@
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
typedef unsigned long Eterm;
process_main (void)
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr30984.c b/gcc/testsuite/gcc.c-torture/compile/pr30984.c
index 265a6f3..befe977 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr30984.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr30984.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target indirect_jumps } */
+
int fs_exec(int ino)
{
void *src = 0;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr32919.c b/gcc/testsuite/gcc.c-torture/compile/pr32919.c
index 33956c8..204c6a6 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr32919.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr32919.c
@@ -1,3 +1,6 @@
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
void _IO_vfprintf_internal ( char *f )
{
static const void *const step0_jumps[] = { &&do_form_unknown, &&do_flag_plus, &&do_form_float };
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr42559.c b/gcc/testsuite/gcc.c-torture/compile/pr42559.c
index 25f7fd6..60475e1 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr42559.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr42559.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target label_values } */
+
void jumpfunc(int copy, void *p)
{
void *l = &&jumplabel;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr46107.c b/gcc/testsuite/gcc.c-torture/compile/pr46107.c
index 41582b8..5c4a8da 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr46107.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr46107.c
@@ -1,4 +1,6 @@
/* PR tree-optimization/46107 */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
int foo (void) __attribute__ ((noreturn));
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr51495.c b/gcc/testsuite/gcc.c-torture/compile/pr51495.c
index 34de37b..13b1641 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr51495.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr51495.c
@@ -1,4 +1,6 @@
/* PR rtl-optimization/51495 */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
void bar (void);
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr58164.c b/gcc/testsuite/gcc.c-torture/compile/pr58164.c
index 7fe24fa..5af751e 100644
--- a/gcc/testsuite/gcc.c-torture/compile/pr58164.c
+++ b/gcc/testsuite/gcc.c-torture/compile/pr58164.c
@@ -1,4 +1,5 @@
/* PR tree-optimization/58164 */
+/* { dg-require-effective-target indirect_jumps } */
int
foo (void)
diff --git a/gcc/testsuite/gcc.c-torture/execute/20040302-1.c b/gcc/testsuite/gcc.c-torture/execute/20040302-1.c
index 07056c4..10bc133 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20040302-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/20040302-1.c
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target label_values } */
int code[]={0,0,0,0,1};
void foo(int x) {
diff --git a/gcc/testsuite/gcc.c-torture/execute/20041214-1.c b/gcc/testsuite/gcc.c-torture/execute/20041214-1.c
index 89df2be..6ce2dc0 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20041214-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/20041214-1.c
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target indirect_jumps } */
+
typedef long unsigned int size_t;
extern void abort (void);
extern char *strcpy (char *, const char *);
diff --git a/gcc/testsuite/gcc.c-torture/execute/20071210-1.c b/gcc/testsuite/gcc.c-torture/execute/20071210-1.c
index 0d113c0..79fa0a7 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20071210-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/20071210-1.c
@@ -1,4 +1,6 @@
/* PR rtl-optimization/34302 */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.c-torture/execute/20071220-1.c b/gcc/testsuite/gcc.c-torture/execute/20071220-1.c
index 00c2fa5..e832acc 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20071220-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/20071220-1.c
@@ -1,4 +1,6 @@
/* PR tree-optimization/29484 */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.c-torture/execute/20071220-2.c b/gcc/testsuite/gcc.c-torture/execute/20071220-2.c
index 93fa9de..6cd9bb5 100644
--- a/gcc/testsuite/gcc.c-torture/execute/20071220-2.c
+++ b/gcc/testsuite/gcc.c-torture/execute/20071220-2.c
@@ -1,4 +1,5 @@
/* PR tree-optimization/29484 */
+/* { dg-require-effective-target label_values } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.c-torture/execute/980526-1.c b/gcc/testsuite/gcc.c-torture/execute/980526-1.c
index 57a910e..2c9e735 100644
--- a/gcc/testsuite/gcc.c-torture/execute/980526-1.c
+++ b/gcc/testsuite/gcc.c-torture/execute/980526-1.c
@@ -1,3 +1,5 @@
+/* { dg-skip-if "requires indirect jumps" { ! indirect_jumps } { "-O0" } { "" } } */
+/* { dg-skip-if "requires label values" { ! label_values } { "-O0" } { "" } } */
int expect_do1 = 1, expect_do2 = 2;
static int doit(int x){
diff --git a/gcc/testsuite/gcc.c-torture/execute/built-in-setjmp.c b/gcc/testsuite/gcc.c-torture/execute/built-in-setjmp.c
index 4370c3d..137bfc5 100644
--- a/gcc/testsuite/gcc.c-torture/execute/built-in-setjmp.c
+++ b/gcc/testsuite/gcc.c-torture/execute/built-in-setjmp.c
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target alloca } */
extern int strcmp(const char *, const char *);
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr51447.c b/gcc/testsuite/gcc.c-torture/execute/pr51447.c
index 7b71a26..887ddb7 100644
--- a/gcc/testsuite/gcc.c-torture/execute/pr51447.c
+++ b/gcc/testsuite/gcc.c-torture/execute/pr51447.c
@@ -1,4 +1,6 @@
/* PR rtl-optimization/51447 */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr56982.c b/gcc/testsuite/gcc.c-torture/execute/pr56982.c
index c7da2af..0fa9c8a 100644
--- a/gcc/testsuite/gcc.c-torture/execute/pr56982.c
+++ b/gcc/testsuite/gcc.c-torture/execute/pr56982.c
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
extern void abort (void);
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr60003.c b/gcc/testsuite/gcc.c-torture/execute/pr60003.c
index 94d9cf8..92bcc56 100644
--- a/gcc/testsuite/gcc.c-torture/execute/pr60003.c
+++ b/gcc/testsuite/gcc.c-torture/execute/pr60003.c
@@ -1,4 +1,5 @@
/* PR tree-optimization/60003 */
+/* { dg-require-effective-target indirect_jumps } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/20021029-1.c b/gcc/testsuite/gcc.dg/20021029-1.c
index bc330c5..9da8e81 100644
--- a/gcc/testsuite/gcc.dg/20021029-1.c
+++ b/gcc/testsuite/gcc.dg/20021029-1.c
@@ -4,6 +4,8 @@
/* { dg-options "-O2 -fpic" } */
/* { dg-options "-O2 -fpic -mpt-fixed" { target sh64*-*-* } } */
/* { dg-final { scan-assembler-not ".data.rel.ro.local" } } */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
int foo (int a)
{
diff --git a/gcc/testsuite/gcc.dg/comp-goto-1.c b/gcc/testsuite/gcc.dg/comp-goto-1.c
index 66afac8..39baae5 100644
--- a/gcc/testsuite/gcc.dg/comp-goto-1.c
+++ b/gcc/testsuite/gcc.dg/comp-goto-1.c
@@ -3,6 +3,8 @@
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-do compile } */
/* { dg-options "" } */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
void
f (void)
diff --git a/gcc/testsuite/gcc.dg/comp-goto-2.c b/gcc/testsuite/gcc.dg/comp-goto-2.c
index 85b0049..54c2111 100644
--- a/gcc/testsuite/gcc.dg/comp-goto-2.c
+++ b/gcc/testsuite/gcc.dg/comp-goto-2.c
@@ -3,6 +3,8 @@
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-do compile } */
/* { dg-options "-pedantic" } */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
void
f (void)
diff --git a/gcc/testsuite/gcc.dg/non-local-goto-1.c b/gcc/testsuite/gcc.dg/non-local-goto-1.c
index 9c2e6cc..c8202c9 100644
--- a/gcc/testsuite/gcc.dg/non-local-goto-1.c
+++ b/gcc/testsuite/gcc.dg/non-local-goto-1.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O2" } */
+/* { dg-require-effective-target nonlocal_goto } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/non-local-goto-2.c b/gcc/testsuite/gcc.dg/non-local-goto-2.c
index 99fb105..aa8d63a 100644
--- a/gcc/testsuite/gcc.dg/non-local-goto-2.c
+++ b/gcc/testsuite/gcc.dg/non-local-goto-2.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O2" } */
+/* { dg-require-effective-target nonlocal_goto } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/pr26983.c b/gcc/testsuite/gcc.dg/pr26983.c
index 5e2120a..fc91955 100644
--- a/gcc/testsuite/gcc.dg/pr26983.c
+++ b/gcc/testsuite/gcc.dg/pr26983.c
@@ -1,4 +1,5 @@
/* { dg-do link } */
+/* { dg-require-effective-target indirect_jumps } */
/* This used to cause a linker failure because GCC would output
assembler code referencing labels that it had not output. */
diff --git a/gcc/testsuite/gcc.dg/pr43379.c b/gcc/testsuite/gcc.dg/pr43379.c
index da4e6ba6..e4c3eb5 100644
--- a/gcc/testsuite/gcc.dg/pr43379.c
+++ b/gcc/testsuite/gcc.dg/pr43379.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2 -ftracer -w" } */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
void *foo(int i, int *p)
{
diff --git a/gcc/testsuite/gcc.dg/pr45259.c b/gcc/testsuite/gcc.dg/pr45259.c
index 3b8d6bd..7a051af 100644
--- a/gcc/testsuite/gcc.dg/pr45259.c
+++ b/gcc/testsuite/gcc.dg/pr45259.c
@@ -2,6 +2,8 @@
/* { dg-do compile } */
/* { dg-options "-g -O2 -w -fpic" { target fpic } } */
/* { dg-options "-g -O2 -w" { target { ! fpic } } } */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
struct S { void (*bar) (long); };
struct T { struct S *t; };
diff --git a/gcc/testsuite/gcc.dg/pr49994-1.c b/gcc/testsuite/gcc.dg/pr49994-1.c
index 9024661..62ac23b 100644
--- a/gcc/testsuite/gcc.dg/pr49994-1.c
+++ b/gcc/testsuite/gcc.dg/pr49994-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-Os -fsched2-use-superblocks -g" } */
+/* { dg-require-effective-target nonlocal_goto } */
void x (int a)
{
diff --git a/gcc/testsuite/gcc.dg/pr52139.c b/gcc/testsuite/gcc.dg/pr52139.c
index bd654a2..b2a08a6 100644
--- a/gcc/testsuite/gcc.dg/pr52139.c
+++ b/gcc/testsuite/gcc.dg/pr52139.c
@@ -2,6 +2,7 @@
/* { dg-do compile } */
/* { dg-options "-O -fno-tree-dominator-opts -fno-tree-fre" } */
/* { dg-additional-options "-fpic" { target fpic } } */
+/* { dg-require-effective-target label_values } */
void *p;
diff --git a/gcc/testsuite/gcc.dg/pr57287-2.c b/gcc/testsuite/gcc.dg/pr57287-2.c
index 1ddf76c..7d13464 100644
--- a/gcc/testsuite/gcc.dg/pr57287-2.c
+++ b/gcc/testsuite/gcc.dg/pr57287-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -Wall" } */
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
diff --git a/gcc/testsuite/gcc.dg/pr57287.c b/gcc/testsuite/gcc.dg/pr57287.c
index 72225b1..7ca0f8b 100644
--- a/gcc/testsuite/gcc.dg/pr57287.c
+++ b/gcc/testsuite/gcc.dg/pr57287.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -Wall" } */
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
diff --git a/gcc/testsuite/gcc.dg/pr59920-1.c b/gcc/testsuite/gcc.dg/pr59920-1.c
index 3e60d37..a2f0727 100644
--- a/gcc/testsuite/gcc.dg/pr59920-1.c
+++ b/gcc/testsuite/gcc.dg/pr59920-1.c
@@ -1,6 +1,7 @@
/* PR tree-optimization/59920 */
/* { dg-do compile } */
/* { dg-options "-O0" } */
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
diff --git a/gcc/testsuite/gcc.dg/pr59920-2.c b/gcc/testsuite/gcc.dg/pr59920-2.c
index bee5542..f226913 100644
--- a/gcc/testsuite/gcc.dg/pr59920-2.c
+++ b/gcc/testsuite/gcc.dg/pr59920-2.c
@@ -1,6 +1,8 @@
/* PR tree-optimization/59920 */
/* { dg-do compile } */
/* { dg-options "-O0" } */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
void *bar (void **);
void *baz (int, void **);
diff --git a/gcc/testsuite/gcc.dg/pr59920-3.c b/gcc/testsuite/gcc.dg/pr59920-3.c
index 2159504..e1749c7 100644
--- a/gcc/testsuite/gcc.dg/pr59920-3.c
+++ b/gcc/testsuite/gcc.dg/pr59920-3.c
@@ -1,6 +1,7 @@
/* PR tree-optimization/59920 */
/* { dg-do compile } */
/* { dg-options "-O0" } */
+/* { dg-require-effective-target nonlocal_goto } */
void *bar (void **);
void *baz (int, void **);
diff --git a/gcc/testsuite/gcc.dg/setjmp-3.c b/gcc/testsuite/gcc.dg/setjmp-3.c
index 306861d..7522242 100644
--- a/gcc/testsuite/gcc.dg/setjmp-3.c
+++ b/gcc/testsuite/gcc.dg/setjmp-3.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O" } */
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
diff --git a/gcc/testsuite/gcc.dg/setjmp-4.c b/gcc/testsuite/gcc.dg/setjmp-4.c
index 53bf0e87..20765f6 100644
--- a/gcc/testsuite/gcc.dg/setjmp-4.c
+++ b/gcc/testsuite/gcc.dg/setjmp-4.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O" } */
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
diff --git a/gcc/testsuite/gcc.dg/setjmp-5.c b/gcc/testsuite/gcc.dg/setjmp-5.c
index c6e5f93..5847629 100644
--- a/gcc/testsuite/gcc.dg/setjmp-5.c
+++ b/gcc/testsuite/gcc.dg/setjmp-5.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -Wall" } */
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
diff --git a/gcc/testsuite/gcc.dg/torture/pr33848.c b/gcc/testsuite/gcc.dg/torture/pr33848.c
index c3b85e9..5d71d2c 100644
--- a/gcc/testsuite/gcc.dg/torture/pr33848.c
+++ b/gcc/testsuite/gcc.dg/torture/pr33848.c
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target label_values } */
/* &&foo should be hoisted, but on most targets, excess register pressure
forces it to be rematerialized before "data != &&foo". On targets that
have a "branch if registers are equal" instruction, this leads to the
diff --git a/gcc/testsuite/gcc.dg/torture/pr48542.c b/gcc/testsuite/gcc.dg/torture/pr48542.c
index e3e4948..98cff00 100644
--- a/gcc/testsuite/gcc.dg/torture/pr48542.c
+++ b/gcc/testsuite/gcc.dg/torture/pr48542.c
@@ -1,4 +1,6 @@
/* { dg-do run } */
+/* { dg-require-effective-target indirect_jumps } */
+
/* The return-address was clobbered. */
#include <stdlib.h>
#include <setjmp.h>
diff --git a/gcc/testsuite/gcc.dg/torture/pr53695.c b/gcc/testsuite/gcc.dg/torture/pr53695.c
index eba0843..3f2bfaa 100644
--- a/gcc/testsuite/gcc.dg/torture/pr53695.c
+++ b/gcc/testsuite/gcc.dg/torture/pr53695.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-ftracer" } */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
void
foo (const void **p)
diff --git a/gcc/testsuite/gcc.dg/torture/pr57036-2.c b/gcc/testsuite/gcc.dg/torture/pr57036-2.c
index ceb4787..6e70d3b 100644
--- a/gcc/testsuite/gcc.dg/torture/pr57036-2.c
+++ b/gcc/testsuite/gcc.dg/torture/pr57036-2.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-require-effective-target nonlocal_goto } */
int j_;
void g (void);
diff --git a/gcc/testsuite/gcc.dg/torture/pr57147-2.c b/gcc/testsuite/gcc.dg/torture/pr57147-2.c
index 521d126..087c2de 100644
--- a/gcc/testsuite/gcc.dg/torture/pr57147-2.c
+++ b/gcc/testsuite/gcc.dg/torture/pr57147-2.c
@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-fdump-tree-optimized" } */
/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */
+/* { dg-require-effective-target indirect_jumps } */
struct __jmp_buf_tag {};
typedef struct __jmp_buf_tag jmp_buf[1];
diff --git a/gcc/testsuite/gcc.dg/torture/pr57584.c b/gcc/testsuite/gcc.dg/torture/pr57584.c
index b527b04..e4affb2 100644
--- a/gcc/testsuite/gcc.dg/torture/pr57584.c
+++ b/gcc/testsuite/gcc.dg/torture/pr57584.c
@@ -1,5 +1,7 @@
/* { dg-do compile } */
/* { dg-require-effective-target int32plus } */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
typedef int int32_t;
typedef unsigned char uint8_t;
diff --git a/gcc/testsuite/gcc.dg/torture/pr59993.c b/gcc/testsuite/gcc.dg/torture/pr59993.c
index 833d923..57ecdde 100644
--- a/gcc/testsuite/gcc.dg/torture/pr59993.c
+++ b/gcc/testsuite/gcc.dg/torture/pr59993.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-1.c b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-1.c
index 263d448..d006396 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-1.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-1.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-require-effective-target nonlocal_goto } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-2.c b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-2.c
index 5a64d54..879992f 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-2.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-2.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-require-effective-target nonlocal_goto } */
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-3.c b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-3.c
index 3afc8cc6..f18366f 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-3.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-3.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-require-effective-target nonlocal_goto } */
#ifndef NO_TRAMPOLINES
extern void abort (void);
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-4.c b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-4.c
index d9bc6de..d305723 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-4.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-4.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-require-effective-target nonlocal_goto } */
extern void abort (void);
extern void exit (int);
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
index 0fee829..b034a65 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-require-effective-target nonlocal_goto } */
extern void exit (int);
#if !defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES)
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-1.c b/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-1.c
index 6ab67e3..13cc300 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-1.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-1.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-require-effective-target indirect_jumps } */
extern int strcmp(const char *, const char *);
extern char *strcpy(char *, const char *);
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c b/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
index fee0d28..2f9840c 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c b/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
index d167122..b180130 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
@@ -1,4 +1,5 @@
/* { dg-do run } */
+/* { dg-require-effective-target indirect_jumps } */
#include <setjmp.h>
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index f2bf639..123f074 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -601,6 +601,37 @@ proc add_options_for_tls { flags } {
return $flags
}
+# Return 1 if indirect jumps are supported, 0 otherwise.
+
+proc check_effective_target_indirect_jumps {} {
+ if { [istarget nvptx-*-*] } {
+ return 0
+ }
+ return 1
+}
+
+# Return 1 if nonlocal goto is supported, 0 otherwise.
+
+proc check_effective_target_nonlocal_goto {} {
+ if { [istarget nvptx-*-*] } {
+ return 0
+ }
+ return 1
+}
+
+# Return 1 if taking label values is supported, 0 otherwise.
+
+proc check_effective_target_label_values {} {
+ if { [istarget nvptx-*-*] } {
+ return 0
+ }
+ return [check_no_compiler_messages label_values assembly {
+ #ifdef NO_LABEL_VALUES
+ #error NO
+ #endif
+ }]
+}
+
# Return 1 if the assembler does not verify function types against
# calls, 0 otherwise. Such verification will typically show up problems
# with K&R C function declarations.