Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/kern



On 02.08.2020 16:25, Paul Goyette wrote:
> On Sun, 2 Aug 2020, Kamil Rytarowski wrote:
> 
>> On 02.08.2020 15:57, Taylor R Campbell wrote:
>>> But it sounds like the original motivation is that it triggered
>>> -Wvla...which frankly strikes me as a compiler bug since there's
>>> obviously no actual VLA created in sizeof; as far as I can tell
>>> there's no semantic difference between sizeof(device_t[n]) and
>>> sizeof(device_t) * n.
>>>
>>
>> This is not true:
>>
>> #include <stdio.h>
>>
>> int
>> main(int argc, char **argv)
>> {
>>        printf("sizeof = %zu\n", sizeof(int[argc]));
>>        return 0;
>> }
>>
>> $ ./a.out
>>
>> sizeof = 4
>> $ ./a.out 12 3
>> sizeof = 12
>> $ ./a.out 12 3 45 6
>> sizeof = 20
> 
> Modifying your example slightly, I print both variations:
> 
> #include <stdio.h>
> 
> int
> main(int argc, char **argv)
> {
>     printf("sizeof = %zu\t%zu\n", sizeof(int[argc]), sizeof(int) * argc);
>     return 0;
> }
> speedy:paul {653} ./a.out
> sizeof = 4      4
> speedy:paul {654} ./a.out 12 3
> sizeof = 12     12
> speedy:paul {655} ./a.out 12 3 45 6
> sizeof = 20     20
> 
> 
> Looks the same to me!
> 

The result is the same, but one uses VLA (at least formally), other not.

> 
> +--------------------+--------------------------+-----------------------+
> | Paul Goyette       | PGP Key fingerprint:     | E-mail addresses:     |
> | (Retired)          | FA29 0E3B 35AF E8AE 6651 | paul%whooppee.com@localhost     |
> | Software Developer | 0786 F758 55DE 53BA 7731 | pgoyette%netbsd.org@localhost   |
> +--------------------+--------------------------+-----------------------+


Attachment: signature.asc
Description: OpenPGP digital signature



Home | Main Index | Thread Index | Old Index