diff options
Diffstat (limited to 'gcc/testsuite/gcc.wendy/gnu29.c')
-rwxr-xr-x | gcc/testsuite/gcc.wendy/gnu29.c | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/gcc/testsuite/gcc.wendy/gnu29.c b/gcc/testsuite/gcc.wendy/gnu29.c deleted file mode 100755 index 98f0164..0000000 --- a/gcc/testsuite/gcc.wendy/gnu29.c +++ /dev/null @@ -1,80 +0,0 @@ -/* -Date: 25 Jan 89 14:43:05 GMT -From: meyering@cs.utexas.edu (Jim Meyering) -Subject: 1.32 sun4os4 bug-- passing structures -Message-Id: <150@ai.cs.utexas.edu> -To: bug-gcc@prep.ai.mit.edu - */ - -/* - * gcc-1.32 (sun4-os4) has a problem passing structure arguments. - * - * If the type FLT is changed to float, all problems disappear. - * - * If PRINTF is defined and -O is *not* used, the program terminates - * with a segmentation fault. In all other cases I've tried, the - * program runs, but the arguments to foo are not properly copied. - * To be precise, in foo, the value that one would normally expect - * to find in b.y is overwritten with that of b.x. (see output in - * comments below) - */ - -typedef double FLT; -typedef struct point { FLT x, y; } PT; - -#define N 4 -FLT x[N]; - -#if defined(PRINTF) -#define PRINT(a) for (i=0;i<N;i++) printf("%g ", (a)[i]); printf("\n"); -#endif - -#if defined(FPRINTF) || !defined(PRINTF) -#include <stdio.h> -#define PRINT(a) for (i=0;i<N;i++) fprintf(stdout,"%g ", (a)[i]); \ - fprintf(stdout,"\n"); -#endif - - void -main() -{ - int bad,i; - PT s,t; - FLT w[N]; - void foo(PT,PT); - - s.x = 0; - s.y = 1; - t.x = 999; - t.y = 3; - w[0] = s.x; w[1] = s.y; - w[2] = t.x; w[3] = t.y; - - foo(s,t); - - bad = -1; - for (i=0;i<N;i++) { - if (w[i] != x[i]) { - bad = i; - break; - } - } - - if (bad >= 0) { - PRINT(w); - PRINT(x); - } else { - printf("Test passed.\n"); - } - exit(0); -} - - void -foo(PT a,PT b) -{ - extern FLT x[N]; - x[0] = a.x; - x[1] = a.y; - x[2] = b.x; - x[3] = b.y; -} |