[PATCH, C] Fix PR40563
Shujing Zhao
pearly.zhao@oracle.com
Wed Jul 28 08:45:00 GMT 2010
On 07/27/2010 09:58 PM, Joseph S. Myers wrote:
> On Wed, 21 Jul 2010, Shujing Zhao wrote:
>
>> Index: c-decl.c
>> ===================================================================
>> --- c-decl.c (revision 162361)
>> +++ c-decl.c (working copy)
>> @@ -4103,6 +4103,35 @@ start_decl (struct c_declarator *declara
>> return tem;
>> }
>>
>> +/* Subroutine of finish_decl. Diagnose uninitialized const member of type TYPE.
>> + DECL is the original declaration. */
>
> This comment is unclear. What you seem to mean is: TYPE is the type of an
> uninitialized object DECL. If that object has a const member, diagnose
> this.
>
Thanks.
> Why do you need to recurse down among fields? Why isn't checking
> C_TYPE_FIELDS_READONLY enough?
>
It used to notice which field should be initialized, just like the diagnostics
at c++. If the notice is not very necessary, C_TYPE_FIELDS_READONLY is enough.
> What if the original uninitialized object is not a structure but an array
> of structures? Will you diagnose things in that case?
C++ would not error an uninitialized array of structure that has a const member.
So I think it doesn't need warn at C?
>
> You don't appear to have any testcases where the recursion is needed for
> diagnosis, or where the member in question is an array, only tests
> directly involving a const scalar element of the structure or union.
>
Yes, they should be added.
Pearly
More information about the Gcc-patches
mailing list