diff options
Diffstat (limited to 'test/Sema/bitfield.c')
-rw-r--r-- | test/Sema/bitfield.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/test/Sema/bitfield.c b/test/Sema/bitfield.c index f214b67..810dc79 100644 --- a/test/Sema/bitfield.c +++ b/test/Sema/bitfield.c @@ -6,7 +6,7 @@ struct a { int a : -1; // expected-error{{bit-field 'a' has negative width}} // rdar://6081627 - int b : 33; // expected-error{{size of bit-field 'b' (33 bits) exceeds size of its type (32 bits)}} + int b : 33; // expected-error{{width of bit-field 'b' (33 bits) exceeds width of its type (32 bits)}} int c : (1 + 0.25); // expected-error{{expression is not an integer constant expression}} int d : (int)(1 + 0.25); @@ -22,9 +22,12 @@ struct a { int g : (_Bool)1; // PR4017 - char : 10; // expected-error {{size of anonymous bit-field (10 bits) exceeds size of its type (8 bits)}} + char : 10; // expected-error {{width of anonymous bit-field (10 bits) exceeds width of its type (8 bits)}} unsigned : -2; // expected-error {{anonymous bit-field has negative width (-2)}} float : 12; // expected-error {{anonymous bit-field has non-integral type 'float'}} + + _Bool : 2; // expected-error {{width of anonymous bit-field (2 bits) exceeds width of its type (1 bit)}} + _Bool h : 5; // expected-error {{width of bit-field 'h' (5 bits) exceeds width of its type (1 bit)}} }; struct b {unsigned x : 2;} x; @@ -60,7 +63,8 @@ typedef unsigned Unsigned; typedef signed Signed; struct Test5 { unsigned n : 2; } t5; -typedef __typeof__(t5.n) Unsigned; // Bitfield is unsigned +// Bitfield is unsigned +struct Test5 sometest5 = {-1}; // expected-warning {{implicit truncation from 'int' to bitfield changes value from -1 to 3}} typedef __typeof__(+t5.n) Signed; // ... but promotes to signed. typedef __typeof__(t5.n + 0) Signed; // Arithmetic promotes. |