ptx testsuite fixes for issues like indirect jumps and jump labels.
authorBernd Schmidt <bernds@codesourcery.com>
Mon, 10 Nov 2014 16:30:50 +0000 (16:30 +0000)
committerBernd Schmidt <bernds@gcc.gnu.org>
Mon, 10 Nov 2014 16:30:50 +0000 (16:30 +0000)
* 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.

From-SVN: r217299

75 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/20000518-1.c
gcc/testsuite/gcc.c-torture/compile/20011029-1.c
gcc/testsuite/gcc.c-torture/compile/20021108-1.c
gcc/testsuite/gcc.c-torture/compile/20040614-1.c
gcc/testsuite/gcc.c-torture/compile/20050510-1.c
gcc/testsuite/gcc.c-torture/compile/920415-1.c
gcc/testsuite/gcc.c-torture/compile/920428-3.c
gcc/testsuite/gcc.c-torture/compile/920501-7.c
gcc/testsuite/gcc.c-torture/compile/920502-1.c
gcc/testsuite/gcc.c-torture/compile/920826-1.c
gcc/testsuite/gcc.c-torture/compile/920831-1.c
gcc/testsuite/gcc.c-torture/compile/950613-1.c
gcc/testsuite/gcc.c-torture/compile/981006-1.c
gcc/testsuite/gcc.c-torture/compile/991213-3.c
gcc/testsuite/gcc.c-torture/compile/complex-6.c
gcc/testsuite/gcc.c-torture/compile/labels-2.c
gcc/testsuite/gcc.c-torture/compile/labels-3.c
gcc/testsuite/gcc.c-torture/compile/pr17913.c
gcc/testsuite/gcc.c-torture/compile/pr21356.c
gcc/testsuite/gcc.c-torture/compile/pr21728.c
gcc/testsuite/gcc.c-torture/compile/pr25224.c
gcc/testsuite/gcc.c-torture/compile/pr27863.c
gcc/testsuite/gcc.c-torture/compile/pr28489.c
gcc/testsuite/gcc.c-torture/compile/pr29128.c
gcc/testsuite/gcc.c-torture/compile/pr30984.c
gcc/testsuite/gcc.c-torture/compile/pr32919.c
gcc/testsuite/gcc.c-torture/compile/pr42559.c
gcc/testsuite/gcc.c-torture/compile/pr46107.c
gcc/testsuite/gcc.c-torture/compile/pr51495.c
gcc/testsuite/gcc.c-torture/compile/pr58164.c
gcc/testsuite/gcc.c-torture/execute/20040302-1.c
gcc/testsuite/gcc.c-torture/execute/20041214-1.c
gcc/testsuite/gcc.c-torture/execute/20071210-1.c
gcc/testsuite/gcc.c-torture/execute/20071220-1.c
gcc/testsuite/gcc.c-torture/execute/20071220-2.c
gcc/testsuite/gcc.c-torture/execute/980526-1.c
gcc/testsuite/gcc.c-torture/execute/built-in-setjmp.c
gcc/testsuite/gcc.c-torture/execute/pr51447.c
gcc/testsuite/gcc.c-torture/execute/pr56982.c
gcc/testsuite/gcc.c-torture/execute/pr60003.c
gcc/testsuite/gcc.dg/20021029-1.c
gcc/testsuite/gcc.dg/comp-goto-1.c
gcc/testsuite/gcc.dg/comp-goto-2.c
gcc/testsuite/gcc.dg/non-local-goto-1.c
gcc/testsuite/gcc.dg/non-local-goto-2.c
gcc/testsuite/gcc.dg/pr26983.c
gcc/testsuite/gcc.dg/pr43379.c
gcc/testsuite/gcc.dg/pr45259.c
gcc/testsuite/gcc.dg/pr49994-1.c
gcc/testsuite/gcc.dg/pr52139.c
gcc/testsuite/gcc.dg/pr57287-2.c
gcc/testsuite/gcc.dg/pr57287.c
gcc/testsuite/gcc.dg/pr59920-1.c
gcc/testsuite/gcc.dg/pr59920-2.c
gcc/testsuite/gcc.dg/pr59920-3.c
gcc/testsuite/gcc.dg/setjmp-3.c
gcc/testsuite/gcc.dg/setjmp-4.c
gcc/testsuite/gcc.dg/setjmp-5.c
gcc/testsuite/gcc.dg/torture/pr33848.c
gcc/testsuite/gcc.dg/torture/pr48542.c
gcc/testsuite/gcc.dg/torture/pr53695.c
gcc/testsuite/gcc.dg/torture/pr57036-2.c
gcc/testsuite/gcc.dg/torture/pr57147-2.c
gcc/testsuite/gcc.dg/torture/pr57584.c
gcc/testsuite/gcc.dg/torture/pr59993.c
gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-1.c
gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-2.c
gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-3.c
gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-4.c
gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c
gcc/testsuite/gcc.dg/torture/stackalign/setjmp-1.c
gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
gcc/testsuite/lib/target-supports.exp

index ef35dbfdd16aaaa50cac9988261b58b6995a4106..241034d622065356b7b36ff82e4244fdb1b84743 100644 (file)
@@ -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-*-*.
index d2087796a8473850ae9000a9a70f0d280ed5a905..4034932b1da0fc482d0ea0be30c70cf599c9ce49 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target label_values } */
+
 void callit1(void*);
 
 extern __inline__ void test()
index 3b2bcdf2e9d35d34451ebedd5a7bcac9f7bba040..538b4e4f4bea9fe3646777af3a9e59b6b2841834 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target indirect_jumps } */
+
 void foo (void *) __attribute__ ((noreturn));
 
 void
index 01b6e4ed7aa84b2529aa058addbf1d237045e50e..3ac5d2eb799436c1d16dbb5f4bb6d9b81eec3b5b 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target label_values } */
+
 int
 main()
 {
index d99d2789664036b2ee082bea31207cbdda0ffcc4..b692ab569f277b7c1a9e0b72e949fec771886778 100644 (file)
@@ -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
index 3570f4f35b442aba7e581f4dd180de7b8c766954..84f198fa8f7f84b91f93ec2cdf516d324e05d507 100644 (file)
@@ -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;
index 1636adeaf446db7c85213f633dcf7c9287545f38..96ac7fe9be476d64bb2889da8f1920d27f21bac7 100644 (file)
@@ -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
index 13640c98ad2d9ffb6e8e0d39821d5bdd8ce01522..0e9031e6fea558aa9280312e7102effea9b72c57 100644 (file)
@@ -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
index aed88045e54465387da2f593ec952ddf19907284..2af15e3b7ec4e84ded179bf9d4cf608231e5f796 100644 (file)
@@ -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
index b576c6c990ca0dca428a9e2b38898af6365dd581..ec2405a7b6394471de07d1f71226f800f42edec2 100644 (file)
@@ -1 +1,3 @@
+/* { dg-require-effective-target indirect_jumps } */
+
 extern void*t[];x(i){goto*t[i];}
index d19eff2cec6537c2739ec012f4f61ce9607fdef9..c2d8843c82471c0b33b101e1d438b2476cae106c 100644 (file)
@@ -1 +1,3 @@
+/* { dg-require-effective-target indirect_jumps } */
+
 f(int*x){goto*(char)*x;}
index ff2fd6360bf502cacd5a614c3333bf30db22787d..9e422a98becce196dde4dc8f171e34bfa512a71e 100644 (file)
@@ -1 +1,3 @@
+/* { dg-require-effective-target indirect_jumps } */
+
 f(x){goto*(char)x;}
index 8aa757f476cc2c104ac14f8959b3acebd12ebc14..595f9efd8b48cc5ecdc6cc285bfbae8995ae8382 100644 (file)
@@ -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
index d77c115f2146ee5f532c1c3a5a8bd32ea2eeba03..9c6687552ee97632dc7e1c4f6ee735d2c12c6913 100644 (file)
@@ -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)
 {
index ce8347f5ddf468850e33b99f7dcd3e27e895561c..bda7490abb7a948184151e7e8ccdf50278c24636 100644 (file)
@@ -1,2 +1,4 @@
+/* { dg-require-effective-target indirect_jumps } */
+
 int jump () { goto * (int (*) ()) 0xbabebec0; }
 
index eb89040abf3ae0f3842dd1450ad626730ffb5ceb..9724bf278635b9845519e12d299b37b8c48abd15 100644 (file)
@@ -1,4 +1,5 @@
 /* PR tree-opt/35737 */
+/* { dg-require-effective-target indirect_jumps } */
 
 long buf[10];
 
index cf4f116e6a86eb6b22d66a4c1eecaf25cf60be4a..316a380b3ce91c0eaee1f376d2f93f77e83376e4 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target label_values } */
+
 struct bp { void *v, *b, *e; };
 f ()
 {
index 51ac88380b828a49da54237cd5d6636758072e8c..6a0f7c23927e1df9e9ba1204ab14c4ed987f549a 100644 (file)
@@ -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)
 {
index 30654a395d6f5939d3ae78cca36ef76bacf9014f..cf58700d4a098083afd7f938f7fd324871bb14f9 100644 (file)
@@ -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;
index b072b5165188287c907f6fc7a24524920103021f..229108f037d72558df4896604558bd494f09dbe0 100644 (file)
@@ -1,3 +1,6 @@
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
 int a;
 void* p;
 
index 991cb3886f85681bdd2892e74bc67bd2ad9e7adb..d37f44bd68b891e9d672ba819faa263616c83a43 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target indirect_jumps } */
+
 int main (void)
 {
   __label__ l1;
index 0ccf0cdf333040f4fd2c820bfd80d8591d011867..56f46986242b6701b16c1a48fbeb2d1b9362e873 100644 (file)
@@ -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 *);
 
index 86abc06860d2bc566937fae2ca18b5503bdf1ab2..926312e4cea4a445cbee51cbc1e184a2d891ac14 100644 (file)
@@ -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)
 {
index 766880fef25bf3afbc6f7a617dc0dde69c92c982..60d23b18faa90a754421674ecf82955401ec4dad 100644 (file)
@@ -1,3 +1,6 @@
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
 typedef int c_int;
 union c_insn
 {
index 2afeae3ce22538461d27dea20f176b4b4b18ba21..3358b47019840f63100b41106f2e536d799ac8b9 100644 (file)
@@ -1,3 +1,6 @@
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
+
 typedef unsigned long Eterm;
 process_main (void)
 {
index 265a6f3616b16962d979b09922b5ee6a492fa5b5..befe977149a64635a5aa872abd1d0e08160584bd 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target indirect_jumps } */
+
 int fs_exec(int ino)
 {
  void *src = 0;
index 33956c8c0b2b58c5421a5ecd73d8b7703276b6c3..204c6a6126e90de0648da017063daf28c10b3822 100644 (file)
@@ -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 };
index 25f7fd6e85c84f396676caf276b1a6b5e7de8aac..60475e13e2063b19f29afbfbd7d5798fbe965ab6 100644 (file)
@@ -1,3 +1,5 @@
+/* { dg-require-effective-target label_values } */
+
 void jumpfunc(int copy, void *p)
 {
   void *l = &&jumplabel;
index 41582b8a161a971f112b7d135e32219a47592c03..5c4a8da9daa4e1b48dcf6da260e95e0fbb765d21 100644 (file)
@@ -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));
 
index 34de37b5309e42fcec186700271e46f7a331ad27..13b16419cb600af252aecb729c7b3b2b3a4a8105 100644 (file)
@@ -1,4 +1,6 @@
 /* PR rtl-optimization/51495 */
+/* { dg-require-effective-target indirect_jumps } */
+/* { dg-require-effective-target label_values } */
 
 void bar (void);
 
index 7fe24fa439f1a87f5d9fa47c622f25b2bf7b135d..5af751e0a219b464007f7d3f625b3ce1c58e79d1 100644 (file)
@@ -1,4 +1,5 @@
 /* PR tree-optimization/58164 */
+/* { dg-require-effective-target indirect_jumps } */
 
 int
 foo (void)
index 07056c43f4e39a6dba3b4d1b491c13c7b79f9ccc..10bc133e7fc387ce210bc99b87ceb3b6cca9a913 100644 (file)
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target label_values } */
 int code[]={0,0,0,0,1};
 
 void foo(int x) {
index 89df2be8e3a2f57311f4d5d1040a7eb24d8b11a2..6ce2dc063ec3319960c13306c9f1838ba102c069 100644 (file)
@@ -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 *);
index 0d113c008f7977c628d0e282b32ee58d9fcdf265..79fa0a7f599d7e4874b8031e16fda137e5b2d63c 100644 (file)
@@ -1,4 +1,6 @@
 /* PR rtl-optimization/34302 */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
 
 extern void abort (void);
 
index 00c2fa57bec7588d8d06e1e39698a0e877aa0f12..e832acc8492f61734aa8d1bb9436b9552180ee11 100644 (file)
@@ -1,4 +1,6 @@
 /* PR tree-optimization/29484 */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
 
 extern void abort (void);
 
index 93fa9de0275c3d07e5deb77a8d2cdbe0c43b2bc4..6cd9bb500657ea7c8edad3939f403691a1626cde 100644 (file)
@@ -1,4 +1,5 @@
 /* PR tree-optimization/29484 */
+/* { dg-require-effective-target label_values } */
 
 extern void abort (void);
 
index 57a910e436618f9ea4c2ba5f3f8027936f617f7f..2c9e735da69c62af69d5c436ecab03ab37d82ddf 100644 (file)
@@ -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){
index 4370c3d07ae03c4c347208bcc9a657d03856370b..137bfc5ec6b454f2e556e71b98d07f7c9fa18f31 100644 (file)
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target indirect_jumps } */
 /* { dg-require-effective-target alloca } */
 
 extern int strcmp(const char *, const char *);
index 7b71a2642ad40ca6f1db28b72facc200a41c2848..887ddb7d06778dc85881cdf1bd3fca570b875cf3 100644 (file)
@@ -1,4 +1,6 @@
 /* PR rtl-optimization/51447 */
+/* { dg-require-effective-target label_values } */
+/* { dg-require-effective-target indirect_jumps } */
 
 extern void abort (void);
 
index c7da2affc1cbefa94623a41b5edbca0d7e63e7c9..0fa9c8ab4ba82ae53cb20321c3bdad5f162ddd08 100644 (file)
@@ -1,3 +1,4 @@
+/* { dg-require-effective-target indirect_jumps } */
 #include <setjmp.h>
 
 extern void abort (void);
index 94d9cf886985ad7fba50987bfe34d862fe287b02..92bcc5659807b878974cae3bbd53fe7a8a1545ba 100644 (file)
@@ -1,4 +1,5 @@
 /* PR tree-optimization/60003 */
+/* { dg-require-effective-target indirect_jumps } */
 
 extern void abort (void);
 
index bc330c56f4939b121d02cb5521b820296f880319..9da8e81575b96e9f55014cb69941a4a80182d4b7 100644 (file)
@@ -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)
 {
index 66afac87b9f535efd82c89999daf22e75ff09c33..39baae534d88fde5b73f92809bf8682292138aba 100644 (file)
@@ -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)
index 85b0049fd46c2f437df6d303106e2a0487c2ea7c..54c2111927661ecafe76756386fc73bfb792dba3 100644 (file)
@@ -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)
index 9c2e6cc09c02fa921c686079cd7be2dd234540da..c8202c9908a9de5e814c265718dca98f8d552f87 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-require-effective-target nonlocal_goto } */
 
 extern void abort (void);
 
index 99fb1052e69038a4d0bd1071cfcde004394fbf3d..aa8d63a27c5f18ab402efab6cc105ff8cf40b58a 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-require-effective-target nonlocal_goto } */
 
 extern void abort (void);
 
index 5e2120a1ffe3363967bca72ddd805dd57f6c4030..fc919551d8b41d7dfd5e984cda67a86e7bfcaa23 100644 (file)
@@ -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.  */
index da4e6ba67adf2c5abe9cb09d42478fa9e3d33b64..e4c3eb55a1453c88d282128ed5fe0d409efad6c0 100644 (file)
@@ -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)
 {
index 3b8d6bd176db13ffe5a88d714f80e5ce8a11ad24..7a051af811023310ab2fd8bdca9c157ac1b80072 100644 (file)
@@ -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; };
index 902466110a573c3ff38ad78ebc7d9eebeb269626..62ac23bfc373644e9dfc78c5b8b994ed43c92cd0 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Os -fsched2-use-superblocks -g" } */
+/* { dg-require-effective-target nonlocal_goto } */
 
 void x (int a)
 {
index bd654a2f1515f8d6e671a3e0bd5cc2d6a66303fe..b2a08a623ad543c308efba91186f81fad1d088d5 100644 (file)
@@ -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;
 
index 1ddf76c646169fa913faa6708141fc08588b007e..7d13464e27a3681f2c424d233d4b5bcefd0b0c3f 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wall" } */
+/* { dg-require-effective-target indirect_jumps } */
 
 #include <setjmp.h>
 
index 72225b1193144dfbffe4f12e33e18d4f25ac8127..7ca0f8bc0a3a9f79068d19cb67c9dafa6cf71bd8 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wall" } */
+/* { dg-require-effective-target indirect_jumps } */
 
 #include <setjmp.h>
 
index 3e60d37ae2050a670b70548d40916a629ce79371..a2f07276700205d08b6106608125d2287dedb100 100644 (file)
@@ -1,6 +1,7 @@
 /* PR tree-optimization/59920 */
 /* { dg-do compile } */
 /* { dg-options "-O0" } */
+/* { dg-require-effective-target indirect_jumps } */
 
 #include <setjmp.h>
 
index bee5542748b0cb3c491f064ec900432f117d384a..f22691324bc81bb628bd5d540527c547a03ec745 100644 (file)
@@ -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 **);
index 2159504e363c9af57ee6d0e68668c7fa76bcb892..e1749c72b1d58aa87626c65778b8bcd86dbabe4a 100644 (file)
@@ -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 **);
index 306861d25c3aecd0e0d28d02f5908667f5e21fce..75222420811899db426145ff9650d275ba2367c8 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O" } */
+/* { dg-require-effective-target indirect_jumps } */
 
 #include <setjmp.h>
 
index 53bf0e8724ad75e980c5cb1b6e9abef612382c1a..20765f631d17af99d4998f25618dcefcd7914613 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O" } */
+/* { dg-require-effective-target indirect_jumps } */
 
 #include <setjmp.h>
 
index c6e5f931746115f78be193d7e212623c4eaef5e0..584762915deeaf7b81a6468b54c72cc866a630a0 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wall" } */
+/* { dg-require-effective-target indirect_jumps } */
 
 #include <setjmp.h>
 
index c3b85e9e576b88b65c0913f4b827720d5e27a0b8..5d71d2c933ca1170e9b59ecb61872e1656d64e1e 100644 (file)
@@ -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
index e3e49489f7dcac1d83e736f123727e898bcfdf7c..98cff00071d6b78a70e4ebaedb04388bac666f79 100644 (file)
@@ -1,4 +1,6 @@
 /* { dg-do run } */
+/* { dg-require-effective-target indirect_jumps } */
+
 /* The return-address was clobbered.  */
 #include <stdlib.h>
 #include <setjmp.h>
index eba0843c4a2fc7cc80dec7867239865bcd02ed9e..3f2bfaa9dca105bad1c00cdbb6d3b305ff8a4413 100644 (file)
@@ -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)
index ceb47876d19903d717942847fb0325fd6044e7d7..6e70d3bf79a77806bc0a4571e4fbbcc29bdfa835 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target nonlocal_goto } */
 
 int j_;
 void g (void);
index 521d126e3c70399dc9d8d1c7748e2b89d6b5a648..087c2de15c63f5a26ec46555cc0ae492d910b652 100644 (file)
@@ -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];
index b527b047ab6a2e1f0d43a0bb2c5bb51ca1716e0d..e4affb2e4614f9ab9c41cf27a3c85f9db57362c5 100644 (file)
@@ -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;
index 833d923a302af21634d003673d804cea0b7b1fec..57ecdde6938c2c2ab90cf0453a2f42e55e39f228 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-require-effective-target indirect_jumps } */
 
 #include <setjmp.h>
 
index 263d4486cf72cc2ec742a6a49302b2529b6f47ca..d006396a8eb0354bba3ae3f4cd1e82e229c9cee6 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-require-effective-target nonlocal_goto } */
 
 extern void abort (void);
 
index 5a64d5419649fbde4e5830e8c7b8d6ea5d3c6d99..879992feec2ff05503a9a09453e62beb2a8afbc8 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-require-effective-target nonlocal_goto } */
 
 extern void abort (void);
 
index 3afc8cc6a313bdffd0da3287ee6501ea17e3c8a0..f18366f9c0f0efb06303b6b444eda7e7f8cf9743 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-require-effective-target nonlocal_goto } */
 
 #ifndef NO_TRAMPOLINES
 extern void abort (void);
index d9bc6dec6f43a6cd152ed218571fef09443452d3..d30572364905d987068e17b32e497b71d7fe919b 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-require-effective-target nonlocal_goto } */
 
 extern void abort (void);
 extern void exit (int);
index 0fee82960de93d7aaa6c7743c84728452cec2b92..b034a655ad0181b03c285b7e429e138c749e13f5 100644 (file)
@@ -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)
index 6ab67e395fbe923e9753c2c2df982a74b097f9a1..13cc300584b7bf5156e0adea6d0b395c66ed15c1 100644 (file)
@@ -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 *);
index fee0d281ffaef91bb001a4441fdc6e6a61613d49..2f9840c14a7e85b0cbaf8b4059ae16e5181d41b8 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-require-effective-target indirect_jumps } */
 
 #include <setjmp.h>
 
index d1671223adb020d048842c15482247777eaae81c..b180130c40659a067e196a88a6f294558ec7fec6 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-require-effective-target indirect_jumps } */
 
 #include <setjmp.h>
 
index f2bf6390e5d42c3d50d31d6c1e70fa1bfa87f0cf..123f074040d6ff1437832d92bf87f41c8cd8b08e 100644 (file)
@@ -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.