brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 28917ff Raw
48 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-windows-msvc -fsyntax-only -verify -Wpadded %s2// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsyntax-only -verify -Wpadded %s3 4struct __attribute__((ms_struct)) BitfieldStruct { // expected-warning {{padding size of 'BitfieldStruct' with 3 bytes to alignment boundary}}5  char c : 1;6  int : 0; // expected-warning {{padding struct 'BitfieldStruct' with 31 bits to align anonymous bit-field}}7  char i;8};9 10struct __attribute__((ms_struct)) SevenBitfieldStruct { // expected-warning {{padding size of 'SevenBitfieldStruct' with 3 bytes to alignment boundary}}11  char c : 7;12  int : 0; // expected-warning {{padding struct 'SevenBitfieldStruct' with 25 bits to align anonymous bit-field}}13  char i;14};15 16struct __attribute__((ms_struct)) SameUnitSizeBitfield {17  char c : 7;18  char : 1; // Same unit size attributes fall in the same unit + they fill the unit -> no padding19  char i;20};21 22struct __attribute__((ms_struct)) DifferentUnitSizeBitfield { // expected-warning {{padding size of 'DifferentUnitSizeBitfield' with 3 bytes to alignment boundary}}23  char c : 7;24  int : 1; // expected-warning {{padding struct 'DifferentUnitSizeBitfield' with 25 bits to align anonymous bit-field}}25  char i; // expected-warning {{padding struct 'DifferentUnitSizeBitfield' with 31 bits to align 'i'}}26};27 28struct __attribute__((ms_struct)) BitfieldBigPadding { // expected-warning {{padding size of 'BitfieldBigPadding' with 63 bits to alignment boundary}}29  long long x;30  char a : 1;31  long long b : 1; // expected-warning {{padding struct 'BitfieldBigPadding' with 63 bits to align 'b'}}32};33 34struct __attribute__((ms_struct)) SameUnitSizeMultiple { // expected-warning {{padding size of 'SameUnitSizeMultiple' with 2 bits to alignment boundary}}35  char c : 1;36  char cc : 2;37  char ccc : 3;38};39 40int main() {41  BitfieldStruct b;42  SevenBitfieldStruct s;43  SameUnitSizeBitfield su;44  DifferentUnitSizeBitfield du;45  BitfieldBigPadding bbp;46  SameUnitSizeMultiple susm;47}48