diff options
-rw-r--r-- | upstream/warntrampolins/README | 3 | ||||
-rw-r--r-- | upstream/warntrampolins/gcc_testsuite_gcc.dg_Wtrampolines.c.patch | 61 |
2 files changed, 62 insertions, 2 deletions
diff --git a/upstream/warntrampolins/README b/upstream/warntrampolins/README index 73166ec..137dfbd 100644 --- a/upstream/warntrampolins/README +++ b/upstream/warntrampolins/README @@ -7,6 +7,5 @@ Ported to GCC 4.5.x /Zorry -We are missing testcase -Text in invoke.texi +Missing text in gcc/doc/invoke.texi /Zorry
\ No newline at end of file diff --git a/upstream/warntrampolins/gcc_testsuite_gcc.dg_Wtrampolines.c.patch b/upstream/warntrampolins/gcc_testsuite_gcc.dg_Wtrampolines.c.patch new file mode 100644 index 0000000..4dbe34c --- /dev/null +++ b/upstream/warntrampolins/gcc_testsuite_gcc.dg_Wtrampolines.c.patch @@ -0,0 +1,61 @@ +--- gcc/testsuite/gcc.dg/Wtrampolines.c 2010-05-05 12:53:11.000000000 +0200 ++++ gcc/testsuite/gcc.dg/Wtrampolines.c 2010-05-05 12:50:06.000000000 +0200 +@@ -0,0 +1,58 @@ ++/* PR target/12865 */ ++/* Origin: Waldek Hebisch <hebisch@math.uni.wroc.pl> */ ++/* Test -Wtrampolines */ ++ ++/* { dg-do compile } */ ++/* { dg-require-effective-target trampolines } */ ++/* { dg-options "-O2 -Wtrampolines" } */ ++ ++#ifndef NO_TRAMPOLINES ++ ++/* This used to fail on various versions of Solaris 2 because the ++ trampoline couldn't be made executable. */ ++ ++extern void abort(void); ++extern double fabs(double); ++ ++void foo (void) ++{ ++ const int correct[1100] = {1, 0, -2, 0, 1, 0, 1, -1, -10, -30, -67}; ++ int i; ++ ++ double x1 (void) {return 1; } ++ double x2 (void) {return -1;} ++ double x3 (void) {return -1;} ++ double x4 (void) {return 1; } ++ double x5 (void) {return 0; } ++ ++ typedef double pfun(void); ++ ++ double a (int k, pfun x1, pfun x2, pfun x3, pfun x4, pfun x5) /* { dg-warning "requires executable stack" } */ ++ { ++ double b (void) ++ { ++ k = k - 1; ++ return a (k, b, x1, x2, x3, x4 ); ++ } ++ ++ if (k <= 0) ++ return x4 () + x5 (); ++ else ++ return b (); ++ } ++ ++ for (i=0; i<=10; i++) ++ { ++ if (fabs(a( i, x1, x2, x3, x4, x5 ) - correct [i]) > 0.1) ++ abort(); ++ } ++} ++#endif ++ ++int main (void) ++{ ++#ifndef NO_TRAMPOLINES ++ foo (); ++#endif ++ return 0; ++} |