1*94d2d09cSAaron Ballman // RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -verify %s 2*94d2d09cSAaron Ballman // RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fsyntax-only -verify %s 3*94d2d09cSAaron Ballman 4*94d2d09cSAaron Ballman // In C++, the bitfield promotion from long to int does not occur, unlike C. 5*94d2d09cSAaron Ballman // expected-no-diagnostics 6*94d2d09cSAaron Ballman 7*94d2d09cSAaron Ballman int printf(const char *restrict, ...); 8*94d2d09cSAaron Ballman 9*94d2d09cSAaron Ballman struct bitfields { 10*94d2d09cSAaron Ballman long a : 2; 11*94d2d09cSAaron Ballman unsigned long b : 2; 12*94d2d09cSAaron Ballman long c : 32; // assumes that int is 32 bits 13*94d2d09cSAaron Ballman unsigned long d : 32; // assumes that int is 32 bits 14*94d2d09cSAaron Ballman } bf; 15*94d2d09cSAaron Ballman bitfield_promotion()16*94d2d09cSAaron Ballmanvoid bitfield_promotion() { 17*94d2d09cSAaron Ballman printf("%ld", bf.a); 18*94d2d09cSAaron Ballman printf("%lu", bf.b); 19*94d2d09cSAaron Ballman printf("%ld", bf.c); 20*94d2d09cSAaron Ballman printf("%lu", bf.d); 21*94d2d09cSAaron Ballman } 22