mirror of git://gcc.gnu.org/git/gcc.git
Remove NO_TRAMPOLINES
2017-06-08 Tom de Vries <tom@codesourcery.com> * gcc.c-torture/compile/930506-2.c: Use dg-require-effective-target trampolines instead of NO_TRAMPOLINES. * gcc.c-torture/execute/20000822-1.c: Same. * gcc.c-torture/execute/920428-2.c: Same. * gcc.c-torture/execute/920501-7.c: Same. * gcc.c-torture/execute/920612-2.c: Same. * gcc.c-torture/execute/921017-1.c: Same. * gcc.c-torture/execute/921215-1.c: Same. * gcc.c-torture/execute/931002-1.c: Same. * gcc.c-torture/execute/comp-goto-2.c: Same. * gcc.c-torture/execute/nestfunc-1.c: Same. * gcc.c-torture/execute/nestfunc-2.c: Same. * gcc.c-torture/execute/nestfunc-3.c: Same. * gcc.c-torture/execute/nestfunc-5.c: Same. * gcc.c-torture/execute/nestfunc-6.c: Same. * gcc.c-torture/execute/pr24135.c: Same. * gcc.dg/Wtrampolines.c: Same. * gcc.dg/torture/stackalign/comp-goto-1.c: Same. * gcc.dg/torture/stackalign/nested-5.c: Same. * gcc.dg/torture/stackalign/nested-6.c: Same. * gcc.dg/torture/stackalign/non-local-goto-3.c: Same. * gcc.dg/torture/stackalign/non-local-goto-4.c: Same. * gcc.dg/torture/stackalign/non-local-goto-5.c: Same. * gcc.dg/trampoline-1.c: Same. * gcc.dg/tree-prof/pr44777.c: Same. * gcc.target/i386/pr67770.c: Same. * lib/gcc.exp (gcc_target_compile): Remove appending of -DNO_TRAMPOLINES to additional_flags. * lib/objc.exp (objc_target_compile): Same. From-SVN: r249027
This commit is contained in:
parent
b9835925b1
commit
73f49ad743
|
|
@ -1,3 +1,35 @@
|
||||||
|
2017-06-08 Tom de Vries <tom@codesourcery.com>
|
||||||
|
|
||||||
|
* gcc.c-torture/compile/930506-2.c: Use dg-require-effective-target
|
||||||
|
trampolines instead of NO_TRAMPOLINES.
|
||||||
|
* gcc.c-torture/execute/20000822-1.c: Same.
|
||||||
|
* gcc.c-torture/execute/920428-2.c: Same.
|
||||||
|
* gcc.c-torture/execute/920501-7.c: Same.
|
||||||
|
* gcc.c-torture/execute/920612-2.c: Same.
|
||||||
|
* gcc.c-torture/execute/921017-1.c: Same.
|
||||||
|
* gcc.c-torture/execute/921215-1.c: Same.
|
||||||
|
* gcc.c-torture/execute/931002-1.c: Same.
|
||||||
|
* gcc.c-torture/execute/comp-goto-2.c: Same.
|
||||||
|
* gcc.c-torture/execute/nestfunc-1.c: Same.
|
||||||
|
* gcc.c-torture/execute/nestfunc-2.c: Same.
|
||||||
|
* gcc.c-torture/execute/nestfunc-3.c: Same.
|
||||||
|
* gcc.c-torture/execute/nestfunc-5.c: Same.
|
||||||
|
* gcc.c-torture/execute/nestfunc-6.c: Same.
|
||||||
|
* gcc.c-torture/execute/pr24135.c: Same.
|
||||||
|
* gcc.dg/Wtrampolines.c: Same.
|
||||||
|
* gcc.dg/torture/stackalign/comp-goto-1.c: Same.
|
||||||
|
* gcc.dg/torture/stackalign/nested-5.c: Same.
|
||||||
|
* gcc.dg/torture/stackalign/nested-6.c: Same.
|
||||||
|
* gcc.dg/torture/stackalign/non-local-goto-3.c: Same.
|
||||||
|
* gcc.dg/torture/stackalign/non-local-goto-4.c: Same.
|
||||||
|
* gcc.dg/torture/stackalign/non-local-goto-5.c: Same.
|
||||||
|
* gcc.dg/trampoline-1.c: Same.
|
||||||
|
* gcc.dg/tree-prof/pr44777.c: Same.
|
||||||
|
* gcc.target/i386/pr67770.c: Same.
|
||||||
|
* lib/gcc.exp (gcc_target_compile): Remove appending of
|
||||||
|
-DNO_TRAMPOLINES to additional_flags.
|
||||||
|
* lib/objc.exp (objc_target_compile): Same.
|
||||||
|
|
||||||
2017-06-08 Tom de Vries <tom@codesourcery.com>
|
2017-06-08 Tom de Vries <tom@codesourcery.com>
|
||||||
|
|
||||||
* lib/target-supports.exp (check_effective_target_trampolines): Test for
|
* lib/target-supports.exp (check_effective_target_trampolines): Test for
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#ifndef NO_TRAMPOLINES
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
int f1()
|
int f1()
|
||||||
{
|
{
|
||||||
{ int ___() { foo(1); } bar(___); }
|
{ int ___() { foo(1); } bar(___); }
|
||||||
|
|
@ -10,6 +11,3 @@ int f2(int j)
|
||||||
{ int ___() { foo(j); } bar(___); }
|
{ int ___() { foo(j); } bar(___); }
|
||||||
return( { int ___() { foo(j); } bar(___);} );
|
return( { int ___() { foo(j); } bar(___);} );
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
int x;
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#ifndef NO_TRAMPOLINES
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
int f0(int (*fn)(int *), int *p)
|
int f0(int (*fn)(int *), int *p)
|
||||||
{
|
{
|
||||||
return (*fn) (p);
|
return (*fn) (p);
|
||||||
|
|
@ -16,13 +17,11 @@ int f1(void)
|
||||||
|
|
||||||
return f0(f2, &i);
|
return f0(f2, &i);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
if (f1() != 2)
|
if (f1() != 2)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
/* { dg-require-effective-target label_values } */
|
/* { dg-require-effective-target label_values } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
s(i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;}
|
s(i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;}
|
||||||
x(){return s(0)==1&&s(1)==0&&s(2)==1;}
|
x(){return s(0)==1&&s(1)==0&&s(2)==1;}
|
||||||
main(){if(x()!=1)abort();exit(0);}
|
main(){if(x()!=1)abort();exit(0);}
|
||||||
#else
|
|
||||||
main(){ exit (0); }
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
/* { dg-require-effective-target label_values } */
|
/* { dg-require-effective-target label_values } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
#ifdef STACK_SIZE
|
#ifdef STACK_SIZE
|
||||||
#define DEPTH ((STACK_SIZE) / 512 + 1)
|
#define DEPTH ((STACK_SIZE) / 512 + 1)
|
||||||
|
|
@ -6,7 +7,6 @@
|
||||||
#define DEPTH 1000
|
#define DEPTH 1000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
x(a)
|
x(a)
|
||||||
{
|
{
|
||||||
__label__ xlab;
|
__label__ xlab;
|
||||||
|
|
@ -20,13 +20,11 @@ x(a)
|
||||||
xlab:;
|
xlab:;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
if (x (DEPTH) != DEPTH)
|
if (x (DEPTH) != DEPTH)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
@ -7,9 +9,9 @@ main ()
|
||||||
i++, x--;
|
i++, x--;
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
if (a (2) != 0)
|
if (a (2) != 0)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
/* { dg-skip-if "requires alloca" { ! alloca } { "-O0" } { "" } } */
|
/* { dg-skip-if "requires alloca" { ! alloca } { "-O0" } { "" } } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
f(n)
|
f(n)
|
||||||
{
|
{
|
||||||
int a[n];
|
int a[n];
|
||||||
|
|
@ -11,8 +13,7 @@ f(n)
|
||||||
}
|
}
|
||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
if(f(2)!=4711)abort();
|
if(f(2)!=4711)abort();
|
||||||
#endif
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
void p(void ((*f) (void ())))
|
void p(void ((*f) (void ())))
|
||||||
{
|
{
|
||||||
void r()
|
void r()
|
||||||
|
|
@ -17,7 +18,7 @@ main()
|
||||||
}
|
}
|
||||||
|
|
||||||
p(q);
|
p(q);
|
||||||
#endif
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
f (void (*func) ())
|
f (void (*func) ())
|
||||||
{
|
{
|
||||||
func ();
|
func ();
|
||||||
|
|
@ -5,7 +7,6 @@ f (void (*func) ())
|
||||||
|
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
void t0 ()
|
void t0 ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -23,6 +24,6 @@ main ()
|
||||||
t1 ();
|
t1 ();
|
||||||
t1 ();
|
t1 ();
|
||||||
t2 ();
|
t2 ();
|
||||||
#endif
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
/* { dg-require-effective-target label_values } */
|
/* { dg-require-effective-target label_values } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
/* A slight variation of 920501-7.c. */
|
/* A slight variation of 920501-7.c. */
|
||||||
|
|
||||||
|
|
@ -8,7 +9,6 @@
|
||||||
#define DEPTH 1000
|
#define DEPTH 1000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
x(a)
|
x(a)
|
||||||
{
|
{
|
||||||
__label__ xlab;
|
__label__ xlab;
|
||||||
|
|
@ -26,13 +26,12 @@ x(a)
|
||||||
xlab:;
|
xlab:;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
if (x (DEPTH) != DEPTH)
|
if (x (DEPTH) != DEPTH)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
int
|
int
|
||||||
g (int a, int b, int (*gi) (int, int))
|
g (int a, int b, int (*gi) (int, int))
|
||||||
{
|
{
|
||||||
|
|
@ -9,7 +11,6 @@ g (int a, int b, int (*gi) (int, int))
|
||||||
|
|
||||||
f ()
|
f ()
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
int i, j;
|
int i, j;
|
||||||
int f2 (int a, int b)
|
int f2 (int a, int b)
|
||||||
{
|
{
|
||||||
|
|
@ -18,7 +19,6 @@ f ()
|
||||||
|
|
||||||
if (g (1, 2, f2) != 2)
|
if (g (1, 2, f2) != 2)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main ()
|
main ()
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
extern int foo (int, int, int (*) (int, int, int, int, int, int, int));
|
extern int foo (int, int, int (*) (int, int, int, int, int, int, int));
|
||||||
|
|
||||||
int z;
|
int z;
|
||||||
|
|
@ -5,7 +7,6 @@ int z;
|
||||||
int
|
int
|
||||||
main (void)
|
main (void)
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
@ -37,8 +38,7 @@ main (void)
|
||||||
|
|
||||||
if (z != 0x1b)
|
if (z != 0x1b)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
extern long foo (long, long, long (*) (long, long));
|
extern long foo (long, long, long (*) (long, long));
|
||||||
extern long use (long (*) (long, long), long, long);
|
extern long use (long (*) (long, long), long, long);
|
||||||
|
|
@ -5,7 +6,6 @@ extern long use (long (*) (long, long), long, long);
|
||||||
int
|
int
|
||||||
main (void)
|
main (void)
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
long sum = 0;
|
long sum = 0;
|
||||||
long i;
|
long i;
|
||||||
|
|
||||||
|
|
@ -42,7 +42,6 @@ main (void)
|
||||||
|
|
||||||
if ((sum & 0xffffffff) != 0xbecfcbf5)
|
if ((sum & 0xffffffff) != 0xbecfcbf5)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
extern void exit (int);
|
extern void exit (int);
|
||||||
|
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
static void recursive (int n, void (*proc) (void))
|
static void recursive (int n, void (*proc) (void))
|
||||||
{
|
{
|
||||||
__label__ l1;
|
__label__ l1;
|
||||||
|
|
@ -31,6 +32,3 @@ int main ()
|
||||||
recursive (10, abort);
|
recursive (10, abort);
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
int main () { return 0; }
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
/* Test that the GP gets properly restored, either by the nonlocal
|
/* Test that the GP gets properly restored, either by the nonlocal
|
||||||
receiver or the nested function. */
|
receiver or the nested function. */
|
||||||
|
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
|
|
||||||
typedef __SIZE_TYPE__ size_t;
|
typedef __SIZE_TYPE__ size_t;
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
extern void exit (int);
|
extern void exit (int);
|
||||||
|
|
@ -23,7 +23,3 @@ int main ()
|
||||||
nonlocal:
|
nonlocal:
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
int main() { return 0; }
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#ifndef NO_TRAMPOLINES
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
|
|
||||||
int x(int a, int b)
|
int x(int a, int b)
|
||||||
|
|
@ -41,6 +42,3 @@ int main ()
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
int main() { return 0; }
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@
|
||||||
/* { dg-require-effective-target trampolines } */
|
/* { dg-require-effective-target trampolines } */
|
||||||
/* { dg-options "-O2 -Wtrampolines" } */
|
/* { dg-options "-O2 -Wtrampolines" } */
|
||||||
|
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
|
|
||||||
/* This used to fail on various versions of Solaris 2 because the
|
/* This used to fail on various versions of Solaris 2 because the
|
||||||
trampoline couldn't be made executable. */
|
trampoline couldn't be made executable. */
|
||||||
|
|
||||||
|
|
@ -46,12 +44,10 @@ void foo (void)
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int main (void)
|
int main (void)
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
foo ();
|
foo ();
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
/* { dg-do run } */
|
/* { dg-do run } */
|
||||||
/* { dg-require-effective-target label_values } */
|
/* { dg-require-effective-target label_values } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
#ifdef STACK_SIZE
|
#ifdef STACK_SIZE
|
||||||
#define DEPTH ((STACK_SIZE) / 512 + 1)
|
#define DEPTH ((STACK_SIZE) / 512 + 1)
|
||||||
|
|
@ -10,7 +11,6 @@
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
extern void exit (int);
|
extern void exit (int);
|
||||||
|
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
int
|
int
|
||||||
x(int a)
|
x(int a)
|
||||||
{
|
{
|
||||||
|
|
@ -29,14 +29,12 @@ x(int a)
|
||||||
xlab:;
|
xlab:;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
if (x (DEPTH) != DEPTH)
|
if (x (DEPTH) != DEPTH)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
/* { dg-do run } */
|
/* { dg-do run } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
extern void exit (int);
|
extern void exit (int);
|
||||||
|
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
static void recursive (int n, void (*proc) (void))
|
static void recursive (int n, void (*proc) (void))
|
||||||
{
|
{
|
||||||
__label__ l1;
|
__label__ l1;
|
||||||
|
|
@ -33,6 +33,3 @@ int main ()
|
||||||
recursive (10, abort);
|
recursive (10, abort);
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
int main () { return 0; }
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
/* { dg-do run } */
|
/* { dg-do run } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
|
|
||||||
typedef __SIZE_TYPE__ size_t;
|
typedef __SIZE_TYPE__ size_t;
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
|
|
@ -22,7 +21,3 @@ int main ()
|
||||||
nonlocal:
|
nonlocal:
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
int main() { return 0; }
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/* { dg-do run } */
|
/* { dg-do run } */
|
||||||
/* { dg-require-effective-target nonlocal_goto } */
|
/* { dg-require-effective-target nonlocal_goto } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
|
|
||||||
int x(int a, int b)
|
int x(int a, int b)
|
||||||
|
|
@ -38,6 +38,3 @@ int main ()
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
int main() { return 0; }
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
/* { dg-do run } */
|
/* { dg-do run } */
|
||||||
/* { dg-require-effective-target nonlocal_goto } */
|
/* { dg-require-effective-target nonlocal_goto } */
|
||||||
/* { dg-require-effective-target label_values } */
|
/* { dg-require-effective-target label_values } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
extern void exit (int);
|
extern void exit (int);
|
||||||
|
|
@ -11,7 +12,6 @@ extern void exit (int);
|
||||||
#define DEPTH 1000
|
#define DEPTH 1000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
int
|
int
|
||||||
x(int a)
|
x(int a)
|
||||||
{
|
{
|
||||||
|
|
@ -26,14 +26,12 @@ x(int a)
|
||||||
xlab:;
|
xlab:;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
if (x (DEPTH) != DEPTH)
|
if (x (DEPTH) != DEPTH)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,10 @@
|
||||||
/* { dg-do run } */
|
/* { dg-do run } */
|
||||||
/* { dg-require-effective-target nonlocal_goto } */
|
/* { dg-require-effective-target nonlocal_goto } */
|
||||||
/* { dg-require-effective-target label_values } */
|
/* { dg-require-effective-target label_values } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
|
|
||||||
extern void exit (int);
|
extern void exit (int);
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
extern void abort (void);
|
extern void abort (void);
|
||||||
int s(int i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;}
|
int s(int i){if(i>0){__label__ l1;int f(int i){if(i==2)goto l1;return 0;}return f(i);l1:;}return 1;}
|
||||||
int x(){return s(0)==1&&s(1)==0&&s(2)==1;}
|
int x(){return s(0)==1&&s(1)==0&&s(2)==1;}
|
||||||
int main(){if(x()!=1)abort();exit(0);}
|
int main(){if(x()!=1)abort();exit(0);}
|
||||||
#else
|
|
||||||
int main(){ exit (0); }
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@
|
||||||
/* { dg-require-effective-target trampolines } */
|
/* { dg-require-effective-target trampolines } */
|
||||||
/* { dg-options "-O2" } */
|
/* { dg-options "-O2" } */
|
||||||
|
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
|
|
||||||
/* This used to fail on various versions of Solaris 2 because the
|
/* This used to fail on various versions of Solaris 2 because the
|
||||||
trampoline couldn't be made executable. */
|
trampoline couldn't be made executable. */
|
||||||
|
|
||||||
|
|
@ -46,12 +44,9 @@ void foo (void)
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int main (void)
|
int main (void)
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
foo ();
|
foo ();
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
/* PR middle-end/44777 */
|
/* PR middle-end/44777 */
|
||||||
/* { dg-require-effective-target label_values } */
|
/* { dg-require-effective-target label_values } */
|
||||||
|
/* { dg-require-effective-target trampolines } */
|
||||||
/* { dg-options "-O0" } */
|
/* { dg-options "-O0" } */
|
||||||
/* A variant of gcc.c-torture/execute/comp-goto-2.c. */
|
/* A variant of gcc.c-torture/execute/comp-goto-2.c. */
|
||||||
|
|
||||||
|
|
@ -12,7 +13,6 @@ extern void exit (int);
|
||||||
#define DEPTH 1000
|
#define DEPTH 1000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
int
|
int
|
||||||
x (int a)
|
x (int a)
|
||||||
{
|
{
|
||||||
|
|
@ -31,14 +31,13 @@ x (int a)
|
||||||
xlab:;
|
xlab:;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
#if !defined (NO_TRAMPOLINES)
|
|
||||||
if (x (DEPTH) != DEPTH)
|
if (x (DEPTH) != DEPTH)
|
||||||
abort ();
|
abort ();
|
||||||
#endif
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,18 +3,15 @@
|
||||||
/* { dg-require-effective-target trampolines } */
|
/* { dg-require-effective-target trampolines } */
|
||||||
/* { dg-options "-O2" } */
|
/* { dg-options "-O2" } */
|
||||||
|
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
__attribute__ ((noinline)) void
|
__attribute__ ((noinline)) void
|
||||||
foo (int i, void (* __attribute__ ((regparm (3))) bar) (int))
|
foo (int i, void (* __attribute__ ((regparm (3))) bar) (int))
|
||||||
{
|
{
|
||||||
bar (i);
|
bar (i);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
#ifndef NO_TRAMPOLINES
|
|
||||||
int p = 0;
|
int p = 0;
|
||||||
|
|
||||||
__attribute__ ((regparm (3), noinline)) void
|
__attribute__ ((regparm (3), noinline)) void
|
||||||
|
|
@ -35,6 +32,6 @@ main ()
|
||||||
|
|
||||||
if (p != 2)
|
if (p != 2)
|
||||||
__builtin_abort ();
|
__builtin_abort ();
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,9 +144,6 @@ proc gcc_target_compile { source dest type options } {
|
||||||
if [target_info exists gcc,stack_size] {
|
if [target_info exists gcc,stack_size] {
|
||||||
lappend options "additional_flags=-DSTACK_SIZE=[target_info gcc,stack_size]"
|
lappend options "additional_flags=-DSTACK_SIZE=[target_info gcc,stack_size]"
|
||||||
}
|
}
|
||||||
if [target_info exists gcc,no_trampolines] {
|
|
||||||
lappend options "additional_flags=-DNO_TRAMPOLINES"
|
|
||||||
}
|
|
||||||
if [target_info exists gcc,signal_suppress] {
|
if [target_info exists gcc,signal_suppress] {
|
||||||
lappend options "additional_flags=-DSIGNAL_SUPPRESS"
|
lappend options "additional_flags=-DSIGNAL_SUPPRESS"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -194,9 +194,6 @@ proc objc_target_compile { source dest type options } {
|
||||||
if [target_info exists objc,stack_size] {
|
if [target_info exists objc,stack_size] {
|
||||||
lappend options "additional_flags=-DSTACK_SIZE=[target_info objc,stack_size]"
|
lappend options "additional_flags=-DSTACK_SIZE=[target_info objc,stack_size]"
|
||||||
}
|
}
|
||||||
if [target_info exists objc,no_trampolines] {
|
|
||||||
lappend options "additional_flags=-DNO_TRAMPOLINES"
|
|
||||||
}
|
|
||||||
|
|
||||||
# TEST_ALWAYS_FLAGS are flags that should be passed to every
|
# TEST_ALWAYS_FLAGS are flags that should be passed to every
|
||||||
# compilation. They are passed first to allow individual
|
# compilation. They are passed first to allow individual
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue