Spurious warning for zero-sized array parameters to a function

Alejandro Colomar alx.manpages@gmail.com
Fri Dec 9 17:15:44 GMT 2022


Hi Richard,

On 12/7/22 09:17, Richard Biener wrote:
[...]

>> The warnings are invalid.  While it's true that I'm referencing a pointer of
>> size 0, it's false that I'm "accessing 1 byte" in that region.  I guess this is
>> all about the bogus design of 'static' in ISO C, where you can have an array
>> parameter of size 0, which is very useful in cases like this one.
> 
> It looks like we run into pass_waccess::maybe_check_access_sizes doing
> 
>        if (sizidx == -1)
>          {
>            /* If only the pointer attribute operand was specified and
>               not size, set SIZE to the greater of MINSIZE or size of
>               one element of the pointed to type to detect smaller
>               objects (null pointers are diagnosed in this case only
>               if the pointer is also declared with attribute nonnull.  */
>            if (access.second.minsize
>                && access.second.minsize != HOST_WIDE_INT_M1U)
>              access_nelts = build_int_cstu (sizetype, access.second.minsize);
>            else if (VOID_TYPE_P (argtype) && access.second.mode == access_none)
>              /* Treat access mode none on a void* argument as expecting
>                 as little as zero bytes.  */
>              access_nelts = size_zero_node;
>            else
>              access_nelts = size_one_node;
> 
> and use size_one_node as fallback - it either doesn't consider [0] "valid" or
> for some reason chooses to interpret it as "unknown".  Can you file a bugreport
> please?

Sure;  will do!

Cheers,

Alex

> 
> Martin?
> 
> Richard.

-- 
<http://www.alejandro-colomar.es/>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20221209/5734a493/attachment.sig>


More information about the Gcc mailing list