[PATCH] D117348: [Preprocessor] Reduce the memory overhead of `#define` directives

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 18 09:29:15 PST 2022

aaron.ballman added a comment.

Just some minor nits from me, but generally LG.

Comment at: clang/include/clang/Lex/MacroInfo.h:243
-  using tokens_iterator = SmallVectorImpl<Token>::const_iterator;
+  using tokens_iterator = const Token *;
I think this should be a `const_tokens_iterator` instead (and it's fine that we don't expose a non-const interface for the iterator).

Comment at: clang/include/clang/Lex/MacroInfo.h:256
+  allocateTokens(unsigned NumTokens, llvm::BumpPtrAllocator &PPAllocator) {
+    NumReplacementTokens = NumTokens;
+    Token *NewReplacementTokens = PPAllocator.Allocate<Token>(NumTokens);
Should we assert that we've not already allocated tokens before?

Comment at: clang/lib/Lex/MacroInfo.cpp:33
+// MacroInfo is expected to take 40 bytes on platforms with an 8 byte pointer.
+template <int> class MacroInfoSizeChecker {
Should we do this dance for 32-bit systems as well?

Comment at: clang/lib/Lex/MacroInfo.cpp:59
+  auto ReplacementTokens = tokens();
   if (ReplacementTokens.empty())
Please spell out the type.



More information about the cfe-commits mailing list