1 /* PR middle-end/47893 */
3 /* { dg-options "-O2" } */
4 /* { dg-additional-options "-mtune=atom -fno-omit-frame-pointer -fno-strict-aliasing" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
5 /* { dg-skip-if "Too much RAM needed" { "avr-*-*" } } */
7 extern void abort (void);
11 unsigned s1
:4, s2
:2, s3
:2, s4
:2, s5
:2, s6
:1, s7
:1, s8
:1, s9
:1, s10
:1;
12 int s11
:16; unsigned s12
:4; int s13
:16; unsigned s14
:2;
13 int s15
:16; unsigned s16
:4; int s17
:16; unsigned s18
:2;
30 char w1
[24]; struct V
*w2
; unsigned w3
; char w4
[28912];
31 unsigned int w5
; char w6
[60];
54 volatile struct S v1
= { .s15
= -1, .s16
= 15, .s17
= -1, .s18
= 3 };
56 __attribute__ ((noinline
, noclone
))
61 __asm__
volatile ("" : "=r" (r
) : "0" (1), "r" (x
) : "memory");
67 __attribute__ ((noinline
, noclone
))
69 __attribute__ ((regparm (2)))
72 fn2 (struct Y
*x
, const struct X
*y
)
76 __asm__
volatile ("" : : "r" (x
), "r" (y
) : "memory");
80 __attribute__ ((noinline
, noclone
))
81 void fn3 (void *x
, unsigned y
, const struct S
*z
, unsigned w
)
83 __asm__
volatile ("" : : "r" (x
), "r" (y
), "r" (z
), "r" (w
) : "memory");
88 __attribute__ ((noinline
, noclone
))
90 fn4 (void *x
, unsigned y
)
92 __asm__
volatile ("" : : "r" (x
), "r" (y
) : "memory");
96 __attribute__ ((noinline
, noclone
))
100 __asm__
volatile ("" : : "r" (x
) : "memory");
104 volatile struct T v3
;
106 __attribute__ ((noinline
, noclone
))
107 struct T
fn6 (void *x
)
109 __asm__
volatile ("" : : "r" (x
) : "memory");
113 __attribute__ ((noinline
, noclone
))
114 struct T
fn7 (void *x
, unsigned y
, unsigned z
)
116 __asm__
volatile ("" : : "r" (x
), "r" (y
), "r" (z
) : "memory");
121 fn8 (struct Y
*x
, const struct V
*y
)
127 for (i
= 0; i
< c
; i
++)
128 b
[i
] = fn2 (x
, &y
->v2
[i
]);
129 fn3 (a
, y
->v1
, b
, c
);
133 fn9 (void *x
, struct S y
__attribute__((unused
)))
142 struct T b
__attribute__((unused
)) = fn6 (a
);
146 __attribute__((noinline
, noclone
))
148 fn11 (unsigned int x
, void *y
, const struct W
*z
,
149 unsigned int w
, const char *v
, const char *u
)
154 __builtin_memset (t
, 0, sizeof *t
);
160 for (i
= 0; i
< w
; i
++)
163 t
->y3
[i
] = fn7 (y
, 0, u
[i
]);
169 for (i
= 0; i
< w
; i
++)
170 t
->y3
[i
] = fn7 (y
, v
[i
], u
[i
]);
171 for (i
= 0; i
< z
->w5
; i
++)
177 const char *volatile p
= "";
182 struct V v
= { .v1
= 0 };
183 struct W w
= { .w5
= 1, .w2
= &v
};
184 fn11 (i
+ 1, (void *) p
, &w
, i
, (const char *) p
, (const char *) p
);