1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s
28e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs// expected-no-diagnostics
36f4a69a3107e7ff1569c747f7c6bdf7cff8cbf55Douglas Gregorstruct {unsigned x : 2;} x;
46f4a69a3107e7ff1569c747f7c6bdf7cff8cbf55Douglas Gregor__typeof__((x.x+=1)+1) y;
56f4a69a3107e7ff1569c747f7c6bdf7cff8cbf55Douglas Gregor__typeof__(x.x<<1) y;
66f4a69a3107e7ff1569c747f7c6bdf7cff8cbf55Douglas Gregorint y;
76f4a69a3107e7ff1569c747f7c6bdf7cff8cbf55Douglas Gregor
86f4a69a3107e7ff1569c747f7c6bdf7cff8cbf55Douglas Gregor
96f4a69a3107e7ff1569c747f7c6bdf7cff8cbf55Douglas Gregorstruct { int x : 8; } x1;
106f4a69a3107e7ff1569c747f7c6bdf7cff8cbf55Douglas Gregorlong long y1;
1104e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman__typeof__(((long long)x1.x + 1)) y1;
1204e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman
1304e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman
1404e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman// Check for extensions: variously sized unsigned bit-fields fitting
1504e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman// into a signed int promote to signed int.
1604e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedmanenum E { ec1, ec2, ec3 };
1704e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedmanstruct S {
1804e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman  enum E          e : 2;
1904e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman  unsigned short us : 4;
2004e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman  unsigned long long ul1 : 8;
2104e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman  unsigned long long ul2 : 50;
2204e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman} s;
2304e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman
2404e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman__typeof(s.e + s.e) x_e;
2504e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedmanint x_e;
2604e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman
2704e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman__typeof(s.us + s.us) x_us;
2804e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedmanint x_us;
2904e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman
3004e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman__typeof(s.ul1 + s.ul1) x_ul1;
3104e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedmanint x_ul1;
3204e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman
3304e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman__typeof(s.ul2 + s.ul2) x_ul2;
3404e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedmanunsigned long long x_ul2;
3504e8357f6801e9ff52673e7e899a67bbabf9de93Eli Friedman
36