4 /* { dg-options "-w -fpermissive" } */
8 #define MAP_ANONYMOUS MAP_ANON
59 __attribute__((regparm (3), noinline
)) int
60 fn1 (const char *x
, void *y
, S1
*z
)
62 asm volatile ("" : : : "memory");
66 __attribute__((regparm (3), noinline
)) int
67 fn2 (const char *x
, int y
, S2
*z
)
69 asm volatile ("" : : : "memory");
73 static inline __attribute__ ((always_inline
)) unsigned int
74 fn4 (unsigned short x
)
77 if (len
== ((1 << 16) - 1))
82 static inline __attribute__ ((always_inline
)) S3
*
85 return (S3
*) ((char *) p
+ fn4 (p
->s9
));
88 __attribute__((regparm (3), noinline
)) int
91 asm volatile ("" : : : "memory");
95 static inline __attribute__ ((always_inline
)) int
96 fn6 (S3
*w
, int x
, S2
*y
, S4
*z
)
102 while ((char *) w
< b
+ x
- 2 * sizeof (S4
))
106 fn2 (w
->s12
, w
->s10
, &c
);
109 z
->s13
= (unsigned short) ((char *) w
- b
);
120 __attribute__((regparm (3), noinline
)) unsigned int
121 test (void *u
, S6
*v
, S1
**w
, S7
*x
, S2
*y
, S1
*z
)
123 unsigned b
= v
->s17
->s16
;
128 fn1 (__func__
, u
, x
->s18
);
129 c
= (S4
*) (z
->s3
+ b
);
130 a
= fn6 ((S3
*) (*w
)->s3
, b
, y
, c
);
134 for (i
= a
- 1; ; i
--)
136 if (f
+ (unsigned short) (c
[i
].s14
/ 2) > b
/ 2)
147 char *p
= mmap (NULL
, 131072, PROT_READ
| PROT_WRITE
,
148 MAP_PRIVATE
| MAP_ANONYMOUS
, -1, 0);
157 if (munmap (p
+ 65536, 65536) < 0)
159 memset (&wb
, 0, sizeof (wb
));
160 memset (&z
, 0, sizeof (z
));
161 memset (&v
, 0, sizeof (v
));
162 memset (&x
, 0, sizeof (x
));
163 memset (&y
, 0, sizeof (y
));
164 memset (&vb
, 0, sizeof (vb
));
165 memset (&s4
, 0, sizeof (s4
));
167 z
.s3
= p
+ 65536 - 2 * sizeof (S4
);
170 vb
.s16
= 2 * sizeof (S4
);
171 memcpy (z
.s3
, &s4
, sizeof (s4
));
172 memcpy (z
.s3
+ sizeof (s4
), &s4
, sizeof (s4
));
173 test ((void *) 0, &v
, &w
, &x
, &y
, &z
);