------- Comment #4 from rguenth at gcc dot gnu dot org  2005-11-21 13:40 -------
Old value = 0
New value = 1
check2495 (arg0={a = 27121, b = {c = {d = true, e = 359101392}}}, 
    arg1=0x5019ec, arg2={a = 30216, b = {c = {d = true, e = 1}}})
    at t026_y.min.i:71
71       if (arg2.b.c.e != a2495[2].b.c.e) ++fails;

Reduced testcase:

void abort(void);
struct S2495 {
    short int a;
    union{
        struct{
            _Bool d;
            int e:31;
        } c;
    } b;
};
struct S2495 x;
void foo(struct S2495 a) __attribute__((noinline));
void foo(struct S2495 a)
{
  if (a.a != x.a)
    abort();
  if (a.b.c.d != x.b.c.d)
    abort();
  if (a.b.c.e != x.b.c.e)
    abort();
}
int main()
{
  x.a = 30216;
  x.b.c.d = 1;
  x.b.c.e = 32766;
  foo(x);
  return 0;
}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24969

Reply via email to