summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/torture/20110718-1.c
blob: ccabbd914216674104fb541aa9f1b7eaa22b4d98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* { dg-do run } */

extern void abort (void);
struct X {
#if (__SIZEOF_LONG__ != __SIZEOF_INT__) && (__SIZEOF_LONG__ == 8)
  unsigned long i : 33;
#else
  unsigned long i;
#endif
};
unsigned long __attribute__((noinline))
foo (struct X *p)
{
  return ~p->i;
}
int main()
{
  struct X x;
  x.i = -1;
  if (foo (&x) != 0)
    abort ();
  return 0;
}