1// RUN: %clang_cc1 -fsyntax-only -verify %s 2// expected-no-diagnostics 3struct {unsigned x : 2;} x; 4__typeof__((x.x+=1)+1) y; 5__typeof__(x.x<<1) y; 6int y; 7 8 9struct { int x : 8; } x1; 10long long y1; 11__typeof__(((long long)x1.x + 1)) y1; 12 13 14// Check for extensions: variously sized unsigned bit-fields fitting 15// into a signed int promote to signed int. 16enum E { ec1, ec2, ec3 }; 17struct S { 18 enum E e : 2; 19 unsigned short us : 4; 20 unsigned long long ul1 : 8; 21 unsigned long long ul2 : 50; 22} s; 23 24__typeof(s.e + s.e) x_e; 25int x_e; 26 27__typeof(s.us + s.us) x_us; 28int x_us; 29 30__typeof(s.ul1 + s.ul1) x_ul1; 31int x_ul1; 32 33__typeof(s.ul2 + s.ul2) x_ul2; 34unsigned long long x_ul2; 35 36