aaron.ballman added a comment.

This currently has no codegen, so it only adds the attribute to the AST and 
does nothing with it. Can you also add the codegen components to this patch?



================
Comment at: clang/include/clang/Basic/Attr.td:1835
+  let Args = [StringArgument<"BTFTag">];
+  let Subjects = SubjectList<[Var, Function, Record, Field], ErrorDiag>;
+  let Documentation = [BTFTagDocs];
----------------
ObjC method declarations?

Also, can this apply to *any* kind of variable declaration? e.g., does it do 
something useful on a `constexpr` variable that never gets emitted at runtime?


================
Comment at: clang/include/clang/Basic/AttrDocs.td:2019
+targets. This attribute may be attached to a struct/union, struct/union field,
+function or variables declaration. If -g is specified, the ARGUMENT info will
+be preserved in IR and be emitted to dwarf. For BPF target, the ARGUMENT info
----------------
yonghong-song wrote:
> anakryiko wrote:
> > can it be also applied to function's argument?
> The attribute does apply to function argument. I missed it in the 
> documentation. Will add it.



================
Comment at: clang/include/clang/Basic/AttrDocs.td:2020
+function or variables declaration. If -g is specified, the ARGUMENT info will
+be preserved in IR and be emitted to dwarf. For BPF target, the ARGUMENT info
+will be emitted to .BTF ELF section too.
----------------



================
Comment at: clang/test/Sema/attr-btf_tag.c:15
+  return arg->a;
+}
----------------
There are quite a few test cases that are missing. Can you please add tests for 
applying the attribute to something invalid (like an enumeration), not given 
any arguments, given too many arguments.

Also missing are test cases for how this attribute merges on redeclarations, 
especially with conflicting arguments. e.g.,
```
void __attribute__((btf_tag("tag"))) bar();
void __attribute__((btf_tag("derp"))) bar() {} // Which argument "wins" or 
should this be an error?
```
Should it be valid to apply this to an incomplete structure declaration? e.g.,
```
struct __attribute__((btf_tag("tag"))) S; // Should this be valid or invalid?
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D106614

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

Reply via email to