[PATCH] D95695: [clang-tblgen] AnnotateAttr::printPretty has spurious comma when no variadic argument is specified
FĂ©lix Cloutier via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 2 14:22:25 PST 2021
fcloutier added inline comments.
================
Comment at: clang/test/AST/ast-print-attr.c:31
+// CHECK: int fun_annotate() __attribute__((annotate("annotation")))
+int fun_annotate() __attribute__((annotate("annotation")));
----------------
aaron.ballman wrote:
> Can you add a second test that shows we properly print the comma? e.g., `int fun_annotate2() __attribute__((annotate("annotation one", "annotation two")));`
I switched this to use `ownership_holds` and `ownership_returns` because `annotate` has a `VariadicExprArgument` and it doesn't know how to print expressions (it just prints a pointer value). `ownership_holds` and `ownership_returns` are the same attribute, and they have the same bug-triggering configuration (a fixed argument followed by a possibly-empty list):
```c++
int *fun_returns() __attribute__((ownership_returns(fun_returns)));
void fun_holds(int *a) __attribute__((ownership_holds(fun_holds, 1)));
```
In the `ownership_returns` case, without my change, Clang prints `__attribute__((ownership_returns(foo, )));`.
================
Comment at: clang/utils/TableGen/ClangAttrEmitter.cpp:2252
+ // Helper to print the starting character of an attribute argument. If there
+ // hasn't been an argument yet, it prints an opening parenthese; otherwise it
+ // prints a comma.
----------------
aaron.ballman wrote:
> One downside to printing the opening paren is that this can't be used in a generic way for generating any comma-separate list. That said, I think this functionality is clean -- perhaps renaming the function from `Comma` to `PrintAttributeArgListElement` or something would be an improvement?
I went with `DelimitAttributeArgument`.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95695/new/
https://reviews.llvm.org/D95695
More information about the cfe-commits
mailing list