yonghong-song added a comment.

@aaron.ballman Thanks for the review! I will address all your comments and will 
also add tests with `_Generic` and `__attribute__((overloadable))`.



================
Comment at: clang/include/clang/AST/Type.h:4797
+
+  BTFTagAttributedType(QualType canon, QualType wrapped,
+                       BTFTypeTagAttr *attr)
----------------
aaron.ballman wrote:
> You should fix the formatting issue, but also, the parameter names don't 
> match the usual naming conventions (please don't replace `attr` with `Attr` 
> though; that's a type name, so go with something else like `BTFAttr`).
Will do. Sorry, I didn't spend effort on formatting itself as I know I will 
need to make revisions. But indeed should do it regardless!


================
Comment at: clang/include/clang/AST/Type.h:4804
+  QualType getWrappedType() const { return WrappedType; }
+  BTFTypeTagAttr *getAttr() const { return Attr; }
+
----------------
aaron.ballman wrote:
> Should this be returning a `const BTFTypeTagAttr *` instead?
Yes, will use 'const BTFTypeTagAttr *` in the next revision.


================
Comment at: clang/include/clang/AST/TypeLoc.h:904-917
+struct BTFTagAttributedLocInfo {
+  const Attr *TypeAttr;
+};
+
+/// Type source information for an btf_tag attributed type.
+class BTFTagAttributedTypeLoc
+    : public ConcreteTypeLoc<UnqualTypeLoc, BTFTagAttributedTypeLoc,
----------------
aaron.ballman wrote:
> This seems a bit suspicious to me -- we are store the same attribute twice 
> (once on the `BTFTagAttributedType` and once on its type loc). Do we need to 
> do that, or can we have the type loc reach through the type pointer to get 
> the attribute from there? (Alternatively, do we want to require callers to 
> have access to an `BTFTagAttributedTypeLoc` in order to query the attribute, 
> similar to how `AttributedType`/`AttributedTypeLoc` work?)
Good point. Will change
```
struct BTFTagAttributedLocInfo {
  const Attr *TypeAttr;
};
```
to
```
struct BTFTagAttributedLocInfo {
};
```
since we can get the attribute from the `BTFTagAttributedType` itself.


================
Comment at: clang/include/clang/AST/TypeLoc.h:925
+
+  void initializeLocal(ASTContext &Context, SourceLocation loc) {
+    setAttr(nullptr);
----------------
aaron.ballman wrote:
> `loc` is unused? (and should have its identifier removed if this is on 
> purpose)
loc is needed in the parameter for this function. For example, in 
QualifiedTypeLoc, we have
```
  /// Initializes the local data of this type source info block to
  /// provide no information.
  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
    // do nothing
  }
```


================
Comment at: clang/include/clang/Serialization/ASTRecordWriter.h:126-127
 
+  /// Write an Attr object.
+  void writeAttr(Attr *attr) { AddAttr(attr); }
+
----------------
aaron.ballman wrote:
> This doesn't appear to be used? Or is this called automagically because of 
> the changes in `TypeProperties.td`?
It is used because the changes in `TypeProperties.td`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D120296

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

Reply via email to