// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -verify %s | |
// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fsyntax-only -verify %s | |
// In C++, the bitfield promotion from long to int does not occur, unlike C. | |
// expected-no-diagnostics | |
int printf(const char *restrict, ...); | |
struct bitfields { | |
long a : 2; | |
unsigned long b : 2; | |
long c : 32; // assumes that int is 32 bits | |
unsigned long d : 32; // assumes that int is 32 bits | |
} bf; | |
void bitfield_promotion() { | |
printf("%ld", bf.a); | |
printf("%lu", bf.b); | |
printf("%ld", bf.c); | |
printf("%lu", bf.d); | |
} |