aaron.ballman added a comment.

Thank you for your patience with the delays getting to your review! Along with 
the documentation question, one line of thinking I'm also not clear on is 
whether this should be a type-based attribute rather than a declaration-based 
attribute. For instance, if you want to write an assumption about the 
parameters to a function, those are not in scope for a declaration attribute 
but are for a type attribute. But also, it seems like this assumption 
information is something that would be useful to carry around as part of the 
function's identity. For instance, would users want to be able to make a call 
through a function pointer and have the same set of assumptions conveyed to the 
backend?



================
Comment at: clang/include/clang/Basic/AttrDocs.td:3931
+expression that can be assumed to be non-zero, the assumption is expressed as
+a string and it holds for the entire function.
+
----------------
It's not clear to me how this string literal relates to program constructs 
being assumed. I think adding some example usage would be very instructive, but 
I also think the string literal needs more documentation. e.g.,
```
__attribute__((assume("the parameter 'i' will be nonnegative"))) void func(int 
i);
```
seems reasonable from the existing text but probably isn't what we're looking 
for. ;-)

If we're going to require the assumption to be a valid expression, then I'm not 
certain a string literal is doing us any favors given that there won't be any 
expression validity checking done on the string. Why not support an expression 
as the argument directly?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D91979/new/

https://reviews.llvm.org/D91979

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to