re PR c/57773 (-Wpedantic incorrect warning for enum bit-field)
PR c/57773 * doc/implement-c.texi: Mention that other integer types are permitted as bit-field types in strictly conforming mode. c/ * c-decl.c (check_bitfield_type_and_width): Warn for implementation defined bit-field types only in ISO C. testsuite/ * gcc.dg/pr57773.c: New test. From-SVN: r206373
This commit is contained in:
parent
aaa15a0d08
commit
96066ce19b
@ -1,3 +1,9 @@
|
||||
2014-01-06 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/57773
|
||||
* doc/implement-c.texi: Mention that other integer types are
|
||||
permitted as bit-field types in strictly conforming mode.
|
||||
|
||||
2014-01-02 Felix Yang <fei.yang0953@gmail.com>
|
||||
|
||||
* modulo-sched.c (schedule_reg_moves): Clear distance1_uses if it
|
||||
|
@ -1,3 +1,9 @@
|
||||
2014-01-06 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/57773
|
||||
* c-decl.c (check_bitfield_type_and_width): Warn for implementation
|
||||
defined bit-field types only in ISO C.
|
||||
|
||||
2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
Update copyright years
|
||||
|
@ -4840,7 +4840,8 @@ check_bitfield_type_and_width (tree *type, tree *width, tree orig_name)
|
||||
if (!in_system_header_at (input_location)
|
||||
&& type_mv != integer_type_node
|
||||
&& type_mv != unsigned_type_node
|
||||
&& type_mv != boolean_type_node)
|
||||
&& type_mv != boolean_type_node
|
||||
&& !flag_isoc99)
|
||||
pedwarn (input_location, OPT_Wpedantic,
|
||||
"type of bit-field %qs is a GCC extension", name);
|
||||
|
||||
|
@ -479,9 +479,8 @@ by the @option{-funsigned-bitfields} option.
|
||||
@cite{Allowable bit-field types other than @code{_Bool}, @code{signed int},
|
||||
and @code{unsigned int} (C99 and C11 6.7.2.1).}
|
||||
|
||||
No other types are permitted in strictly conforming mode.
|
||||
@c Would it be better to restrict the pedwarn for other types to C90
|
||||
@c mode and document the other types for C99/C11 mode?
|
||||
Other integer types, such as @code{long int}, and enumerated types are
|
||||
permitted even in strictly conforming mode.
|
||||
|
||||
@item
|
||||
@cite{Whether atomic types are permitted for bit-fields (C11 6.7.2.1).}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2014-01-06 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/57773
|
||||
* gcc.dg/pr57773.c: New test.
|
||||
|
||||
2014-01-06 Adam Butcher <adam@jessamine.co.uk>
|
||||
|
||||
PR c++/59635
|
||||
|
13
gcc/testsuite/gcc.dg/pr57773.c
Normal file
13
gcc/testsuite/gcc.dg/pr57773.c
Normal file
@ -0,0 +1,13 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=c99 -Wpedantic" } */
|
||||
|
||||
enum e { A };
|
||||
struct { enum e b: 2; } s1;
|
||||
struct { signed char b: 2; } s2;
|
||||
struct { unsigned char b: 2; } s3;
|
||||
struct { short b: 2; } s4;
|
||||
struct { unsigned short b: 2; } s5;
|
||||
struct { long int b: 2; } s6;
|
||||
struct { unsigned long int b: 2; } s7;
|
||||
struct { long long int b: 2; } s8;
|
||||
struct { unsigned long long int b: 2; } s9;
|
Loading…
Reference in New Issue
Block a user