blob: cb6e3dda2eaf4e8888de3c5d59bc894d8c4a6ba2 [file] [log] [blame]
/* PR rtl-optimization/93908 */
struct T
{
int b;
int c;
unsigned short d;
unsigned e:1, f:1, g:1, h:2, i:1, j:1;
signed int k:2;
};
struct S
{
struct T s;
char c[64];
} buf[2];
__attribute__ ((noipa)) void *
baz (void)
{
static int cnt;
return (void *) &buf[cnt++];
}
static inline __attribute__ ((always_inline)) struct T *
bar (const char *a)
{
struct T *s;
s = baz ();
s->b = 1;
s->k = -1;
return s;
}
__attribute__ ((noipa)) void
foo (const char *x, struct T **y)
{
struct T *l = bar (x);
struct T *m = bar (x);
y[0] = l;
y[1] = m;
}
int
main ()
{
struct T *r[2];
foo ("foo", r);
if (r[0]->e || r[0]->f || r[0]->g || r[0]->h || r[0]->i || r[0]->j || r[0]->k != -1)
__builtin_abort ();
if (r[1]->e || r[1]->f || r[1]->g || r[1]->h || r[1]->i || r[1]->j || r[1]->k != -1)
__builtin_abort ();
return 0;
}