1 /* PR middle-end/37275 */
2 /* { dg-do compile { target ilp32 } } */
3 /* { dg-options "-g -dA -O2 -march=i686 -fstack-protector" } */
5 typedef __SIZE_TYPE__ size_t;
6 extern void *memcpy (void *, const void *, size_t);
7 extern void *malloc (size_t);
49 void (*fn) (void *data);
55 extern void fn1 (A * m);
59 if (!__sync_bool_compare_and_swap (x, 0, 1))
63 extern __thread struct G thr __attribute__ ((visibility ("hidden")));
64 static inline struct G *
70 extern struct B *fn4 (void);
73 static inline struct B *
76 struct E *t = fn3 ()->t;
86 fn6 (struct E *t, struct E *e1_t,
98 test (void (*fn) (void *), void *data, void (*cpyfn) (void *, void *), long x, long y, _Bool z)
100 struct G *thr = fn3 ();
101 struct F *c1 = thr->g1.c1;
102 if (!z || c1 == 0 || (unsigned) c1->f3 > 64 * c1->f1)
106 fn6 (&t, thr->t, fn5 (0));
110 if (__builtin_expect (cpyfn != ((void *) 0), 0))
113 char *arg = (char *) (((unsigned long) buf + y - 1)
114 & ~(unsigned long) (y - 1));
122 struct E *e1 = thr->t;
125 t = malloc (sizeof (*t) + x + y - 1);
126 arg = (char *) (((unsigned long) (t + 1) + y - 1)
127 & ~(unsigned long) (y - 1));
128 fn6 (t, e1, fn5 (0));
133 memcpy (arg, data, x);