1 /* PR middle-end/37275 */
2 /* { dg-do compile { target ilp32 } } */
3 /* { dg-options "-g -dA -O2 -march=i686 -fstack-protector" } */
4 /* { dg-require-visibility "" } */
6 typedef __SIZE_TYPE__
size_t;
7 extern void *memcpy (void *, const void *, size_t);
8 extern void *malloc (size_t);
50 void (*fn
) (void *data
);
56 extern void fn1 (A
* m
);
60 if (!__sync_bool_compare_and_swap (x
, 0, 1))
64 extern __thread
struct G thr
__attribute__ ((visibility ("hidden")));
65 static inline struct G
*
71 extern struct B
*fn4 (void);
74 static inline struct B
*
77 struct E
*t
= fn3 ()->t
;
87 fn6 (struct E
*t
, struct E
*e1_t
,
99 test (void (*fn
) (void *), void *data
, void (*cpyfn
) (void *, void *), long x
, long y
, _Bool z
)
101 struct G
*thr
= fn3 ();
102 struct F
*c1
= thr
->g1
.c1
;
103 if (!z
|| c1
== 0 || (unsigned) c1
->f3
> 64 * c1
->f1
)
107 fn6 (&t
, thr
->t
, fn5 (0));
111 if (__builtin_expect (cpyfn
!= ((void *) 0), 0))
114 char *arg
= (char *) (((unsigned long) buf
+ y
- 1)
115 & ~(unsigned long) (y
- 1));
123 struct E
*e1
= thr
->t
;
126 t
= malloc (sizeof (*t
) + x
+ y
- 1);
127 arg
= (char *) (((unsigned long) (t
+ 1) + y
- 1)
128 & ~(unsigned long) (y
- 1));
129 fn6 (t
, e1
, fn5 (0));
134 memcpy (arg
, data
, x
);