[U-Boot] [PATCH] ARM: socfpga: fix duplicate const specifier warning

Masahiro Yamada yamada.masahiro at socionext.com
Tue Sep 12 16:52:44 UTC 2017


2017-09-12 23:10 GMT+09:00 Marek Vasut <marex at denx.de>:
> On 09/12/2017 03:19 PM, Masahiro Yamada wrote:
>> Hi Marek,
>>
>>
>> 2017-09-12 19:23 GMT+09:00 Marek Vasut <marex at denx.de>:
>>> On 09/12/2017 10:23 AM, Masahiro Yamada wrote:
>>>> GCC 7.1 warns:
>>>> duplicate ‘const’ declaration specifier [-Wduplicate-decl-specifier]
>>>>
>>>> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
>>>> ---
>>>>
>>>>  arch/arm/mach-socfpga/misc_gen5.c | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/arch/arm/mach-socfpga/misc_gen5.c b/arch/arm/mach-socfpga/misc_gen5.c
>>>> index 2f1da74..91ddb79 100644
>>>> --- a/arch/arm/mach-socfpga/misc_gen5.c
>>>> +++ b/arch/arm/mach-socfpga/misc_gen5.c
>>>> @@ -144,7 +144,7 @@ static const struct {
>>>                               ^ Shouldn't you fix it here instead ?
>>>
>>>>       const u16       pn;
>>>>       const char      *name;
>>>>       const char      *var;
>>>> -} const socfpga_fpga_model[] = {
>>>> +} socfpga_fpga_model[] = {
>>>>       /* Cyclone V E */
>>>>       { 0x2b15, "Cyclone V, E/A2", "cv_e_a2" },
>>>>       { 0x2b05, "Cyclone V, E/A4", "cv_e_a4" },
>>>>
>>>
>>
>>
>>
>> "const" and the variable type is interchangeable,
>> so this comes down to a personal preference after all,
>> but think about simpler cases.
>>
>>
>> [1]
>>     const int x = 1;
>>     const struct pinctrl_ops *ops;
>>
>>
>> [2]
>>     int const x = 1;
>>     struct pinctrl_ops const *ops;
>>
>>
>>
>> Both [1] and [2] are correct and equivalent,
>> but my preference is [1] (and I hope you too).
>>
>>
>> In my experience in Linux / U-Boot,
>> source code mostly looks like [1]
>> (of course, [2] is mixed here and there)
>>
>>
>> I prefer style [1] ("const" before variable type),
>> so I removed the second "const" in this patch.
>>
>>
>>
>> Ideally, the following might be more readable:
>>
>>
>> struct fpga_model {
>>         const u16       pn;
>>         const char      *name;
>>         const char      *var;
>> };
>>
>> static const struct fpga_model socfpga_fpga_model[] = {
>>      ...
>> };
>>
>>
>>
>> But, I will not do
>>
>> static struct fpga_model const socfpga_fpga_model[] = {
>>      ...
>> };
>
> Doesn't the position of const in the example above indicate whether it's
> a const applied to the whole array or const applied to it's elements ?
>

Sorry, I could not get what you mean.
Could you explain it in detail, please?


-- 
Best Regards
Masahiro Yamada


More information about the U-Boot mailing list