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