delcypher wrote:

> > What happens with this?
> > ```
> > struct T {
> >     int count;
> >     void* __counted_by(count) ptr;
> > };
> > 
> > void use(struct T* t) {
> >     t = 0;
> > }
> > ```
> > 
> > 
> >     
> >       
> >     
> > 
> >       
> >     
> > 
> >     
> >   
> > Previously this was completely disallowed and when using the GNU language 
> > mode it will be. I don't think you're testing this.
> > @yeoul We probably need to check what happens when we lift this restriction 
> > in `-fbounds-safety`. I'm not sure our implementation will do the right 
> > thing.
> 
> I don't understand what you mean? This builds with gnu and not with C11. I 
> have tests in this PR for it? I must be misunderstanding something.
> 
> ```shell
> $ clang -std=gnu11 -o wat.o -c wat.c
> $ clang -std=c11 -o wat.o -c wat.c
> wat.c:4:5: error: 'counted_by' cannot be applied to a pointer with pointee of
>       unknown size because 'void' is an incomplete type
>     4 |     void* __counted_by(count) ptr;
>       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 1 error generated.
> ```

Sorry I should've been clearer. What I'm looking for is a Sema test that checks 
that the using a `void* __counted_by(...)` pointer works, not just that 
declaring it works. The change you've made in `Sema::CheckCountedByAttrOnField` 
basically means that a `void* __counted_by` pointer is treated like we treat 
incomplete types that might be completed later (e.g. `struct Foo;`). Those 
kinds of pointer are checked when they are used (e.g. as an rvalue or assigned 
to).

The `clang/test/Sema/attr-counted-by-void-ptr-gnu.c` test you added doesn't 
test this and none of the other Sema tests check this AFAICT. You do have a 
codegen test that checks some of this but it only tests use as an rvalue and 
not assignment to the pointer. Can you add a sema test that checks the behavior 
both in gnu11 and c11?

https://github.com/llvm/llvm-project/pull/164737
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to