erichkeane added a comment.

I only looked at the 'new type' code, and it generally looks correct with the 
exception of the comments below.



================
Comment at: clang/include/clang/AST/Type.h:4793
+
+  QualType ModifiedType;
+  QualType EquivalentType;
----------------
I suspect both of these aren't necessary.  If the intent here is to just wrap a 
single type, I think we can have only 1.  Then the fields here are just the 
Tag, and the WrappedType.


================
Comment at: clang/include/clang/Serialization/ASTRecordReader.h:131
 
+  StringRef readStringRef() { return readString(); }
+
----------------
This is a bug.  readString returns a std::string temporary, which creating the 
StringRef to, it now no longer exists.


================
Comment at: clang/lib/Sema/SemaType.cpp:194
+        std::pair<const BTFTagAttributedType*, const Attr*>;
+    SmallVector<BTFTagTypeAttrPair, 8> AttrsForBTFTagTypes;
+    bool AttrsForBTFTagTypesSorted = true;
----------------
This seems pretty absurdly expensive here... Should we instead have the 
BTFTagAttributedType store its Attr here?


================
Comment at: clang/lib/Sema/TreeTransform.h:6872
+  const BTFTagAttributedType *oldType = TL.getTypePtr();
+  StringRef Tag = oldType->getTag();
+  QualType modifiedType = getDerived().TransformType(TLB, TL.getModifiedLoc());
----------------
Most of this tree-transform doesn't really do much, since this is a 'C' only 
type, but otherwise we'd probably want to allow the tag itself to be dependent. 
 

We still need this though, since there are other non-template tree-transforms.

You also might need to make this not contain a `StringRef` based on the 
serialization issues above.


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