/* Verify that we do not IPA-SRA bitfields. */ | |
/* { dg-do run } */ | |
/* { dg-options "-O2" } */ | |
/* { dg-require-effective-target int32plus } */ | |
extern void abort (void); | |
struct S | |
{ | |
int j : 8; | |
int i : 24; | |
int l; | |
}; | |
static int __attribute__((noinline)) foo (struct S *s) | |
{ | |
int z = s->i; | |
if (z != 777) | |
abort (); | |
return 0; | |
} | |
int __attribute__((noinline)) bar (struct S *s) | |
{ | |
return foo (s); | |
} | |
int main (int argc, char *argv[]) | |
{ | |
struct S s; | |
s.j = 5; | |
s.i = 777; | |
s.l = -1; | |
return bar (&s); | |
} |