[PATCH] D31338: Move ParsedAttrInfos into a registry and point to one in ParsedAttr
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Feb 2 09:57:04 PST 2020
aaron.ballman added inline comments.
================
Comment at: clang/include/clang/Sema/ParsedAttr.h:45
+struct ParsedAttrInfo {
+ /// Corresponds to the Kind enum
+ unsigned AttrKind : 16;
----------------
Please add a full stop to the end of all the comments (here and elsewhere).
================
Comment at: clang/include/clang/Sema/ParsedAttr.h:63
+ unsigned IsSupportedByPragmaAttribute : 1;
+ // The syntaxes supported by this attribute and how they're spelt
+ struct Spelling {
----------------
spelt -> spelled
================
Comment at: clang/include/clang/Sema/ParsedAttr.h:615
AttributeCommonInfo::Kind getKind() const { return getParsedKind(); }
+ ParsedAttrInfo &getInfo() const { return *Info; }
};
----------------
I think this should return a `const ParsedAttrInfo&` so that callers don't try to mutate it.
================
Comment at: clang/lib/Basic/Attributes.cpp:101-103
+ for (ParsedAttrInfoRegistry::iterator it = ParsedAttrInfoRegistry::begin(),
+ ie = ParsedAttrInfoRegistry::end();
+ it != ie; ++it) {
----------------
Range-based for loop? Also, `it` and `ie` don't meet the usual naming conventions.
One thing I'm not keen on with this is the performance hit. We spent a decent amount of effort making this lookup fast and it's now a linear search through all of the attributes and requires memory allocations and deallocations to perform the search.
================
Comment at: clang/lib/Basic/Attributes.cpp:113
+ // If we failed to find a match then the attribute is unknown
+ return std::make_unique<ParsedAttrInfo>();
+}
----------------
This seems surprising because it makes it harder to determine whether you have a valid result from this function or not. I think this should return a null `unique_ptr`.
================
Comment at: clang/lib/Basic/Attributes.cpp:117
+std::unique_ptr<ParsedAttrInfo>
+ParsedAttrInfo::get(AttributeCommonInfo::Kind K) {
+ // Search for a ParsedAttrInfo whose kind matches
----------------
Same concerns in this function as above.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D31338/new/
https://reviews.llvm.org/D31338
More information about the cfe-commits
mailing list