diff options
Diffstat (limited to 'gcc-4.8/gcc/testsuite/gcc.target/i386/pr37275.c')
-rw-r--r-- | gcc-4.8/gcc/testsuite/gcc.target/i386/pr37275.c | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr37275.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr37275.c deleted file mode 100644 index cf748879e..000000000 --- a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr37275.c +++ /dev/null @@ -1,138 +0,0 @@ -/* PR middle-end/37275 */ -/* { dg-do compile { target ia32 } } */ -/* { dg-options "-g -dA -O2 -march=i686 -fstack-protector" } */ -/* { dg-require-visibility "" } */ - -typedef __SIZE_TYPE__ size_t; -extern void *memcpy (void *, const void *, size_t); -extern void *malloc (size_t); - -typedef int A; - -struct B -{ - int x; -}; - -struct C -{ - struct F *c1; - void *c2; -}; - -enum D -{ - D0, - D1 -}; - -struct E -{ - struct E *e1; - struct E *e2; - struct B e3; - void (*fn) (void *); - void *fn_data; - enum D e4; - _Bool e5; - _Bool e6; -}; - -struct F -{ - unsigned f1; - A f2; - int f3; -}; - -struct G -{ - void (*fn) (void *data); - void *data; - struct C g1; - struct E *t; -}; - -extern void fn1 (A * m); -static inline void -fn2 (A *x) -{ - if (!__sync_bool_compare_and_swap (x, 0, 1)) - fn1 (x); -} - -extern __thread struct G thr __attribute__ ((visibility ("hidden"))); -static inline struct G * -fn3 (void) -{ - return &thr; -} - -extern struct B *fn4 (void); -extern struct B a; - -static inline struct B * -fn5 (_Bool x) -{ - struct E *t = fn3 ()->t; - if (t) - return &t->e3; - else if (x) - return fn4 (); - else - return &a; -} - -void -fn6 (struct E *t, struct E *e1_t, - struct B *prev_e3) -{ - t->e1 = e1_t; - t->e3 = *prev_e3; - t->e4 = D0; - t->e5 = 0; - t->e6 = 0; - t->e2 = ((void *) 0); -} - -void -test (void (*fn) (void *), void *data, void (*cpyfn) (void *, void *), long x, long y, _Bool z) -{ - struct G *thr = fn3 (); - struct F *c1 = thr->g1.c1; - if (!z || c1 == 0 || (unsigned) c1->f3 > 64 * c1->f1) - { - struct E t; - - fn6 (&t, thr->t, fn5 (0)); - if (thr->t) - t.e6 = thr->t->e6; - thr->t = &t; - if (__builtin_expect (cpyfn != ((void *) 0), 0)) - { - char buf[x + y - 1]; - char *arg = (char *) (((unsigned long) buf + y - 1) - & ~(unsigned long) (y - 1)); - cpyfn (arg, data); - fn (arg); - } - } - else - { - struct E *t; - struct E *e1 = thr->t; - char *arg; - - t = malloc (sizeof (*t) + x + y - 1); - arg = (char *) (((unsigned long) (t + 1) + y - 1) - & ~(unsigned long) (y - 1)); - fn6 (t, e1, fn5 (0)); - thr->t = t; - if (cpyfn) - cpyfn (arg, data); - else - memcpy (arg, data, x); - thr->t = e1; - fn2 (&c1->f2); - } -} |