[Bug c/108896] provide "element_count" attribute to give more context to __builtin_dynamic_object_size() and -fsanitize=bounds
qinzhao at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Mar 8 16:56:59 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896
--- Comment #23 from qinzhao at gcc dot gnu.org ---
(In reply to Martin Uecker from comment #13)
>
> VLAs and VM types exist since C99 and were made optional in C11.
> The minimal change we adopted to make support for VM types
> (but not VLAs) mandatory again was:
>
> https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2778.pdf
So, this will be official in C23? i.e, VM types will be mandatory, but VLA will
be optional (and later might be deprecated?)
>
> I think using PLACEHOLDER_EXPR that are insert into the size
> expression and then replaced later by the struct being accessed,
> e.g.
>
> struct foo {
> int len;
> char buf[PLACEHOLDER_EXPR.len]
> };
>
> and then later when we have
>
> struct foo x;
>
> x->buf
>
> we would replace in the size of the type for x->buf the placeholder
> with x itself.
I see. Yes, this will resolve the implementation difficulty for filling the
size of the FAM field when the size is the previous declared field in the same
structure.
> Yes, this was what I wanted to do... My main use case is not flexible
> array members but VM types in struct:
>
> struct foo {
> int len;
> char (*buf)[.len];
> };
>
>
> This has less issues because the size of the struct then does not depend
> on the length.
a little confused here:
what's the definition of VM type? it's size will not depend on the ".len" ?
More information about the Gcc-bugs
mailing list