rjmccall added inline comments.
================
Comment at: clang/include/clang/Basic/Builtins.h:65
enum ID {
+#define INTERESTING_IDENTIER(ID, TYPE, ATTRS) ID,
NotBuiltin = 0, // This is not a builtin function.
----------------
You shouldn't muddle this into `Builtin::ID`.
================
Comment at: clang/include/clang/Basic/IdentifierTable.h:79
+static constexpr int FirstInterestingIdentifierID = 1;
+static constexpr int FirstBuiltinID = 3;
----------------
```
// The "layout" of ObjCOrBuiltinID is:
// - The first value (0) represents "not a special identifier".
// - The next (NUM_OBJC_KEYWORDS - 1) values represent ObjCKeywordKinds (not
// including objc_not_keyword).
// - The next (NUM_INTERESTING_IDENTIFIERS - 1) values represent
InterestingIdentifierKinds
// (not including not_interesting).
// - The rest of the values represent builtin IDs (not including not_builtin).
static constexpr int FirstObjCKeywordID = 1;
static constexpr int LastObjCKeywordID = FirstObjCKeywordID +
tok::NUM_OBJC_KEYWORDS - 2;
static constexpr int FirstInterestingIdentifierID = LastObjCKeywordID + 1;
static constexpr int LastInterestingIdentifierID = LastObjCKeywordID +
tok::NUM_INTERESTING_IDENTIFIERS - 2;
static constexpr int FirstBuiltinID = LastInterestingIdentifierID + 1;
```
================
Comment at: clang/include/clang/Basic/IdentifierTable.h:295
tok::ObjCKeywordKind getObjCKeywordID() const {
if (ObjCOrBuiltinID < tok::NUM_OBJC_KEYWORDS)
return tok::ObjCKeywordKind(ObjCOrBuiltinID);
----------------
```
static_assert(FirstObjCKeywordID == 1, "hard-coding this assumption to
simplify code");
if (ObjCOrBuiltinID <= LastObjCKeywordID)
return tok::ObjCKeywordKind(ObjCOrBuiltinID);
else
return tok::objc_not_keyword;
```
================
Comment at: clang/include/clang/Basic/IdentifierTable.h:306
unsigned getBuiltinID() const {
- if (ObjCOrBuiltinID >= tok::NUM_OBJC_KEYWORDS)
- return ObjCOrBuiltinID - tok::NUM_OBJC_KEYWORDS;
+ if (ObjCOrBuiltinID >=
+ (tok::NUM_OBJC_KEYWORDS + tok::NUM_INTERESTING_IDENTIFIERS))
----------------
```
if (ObjCOrBuiltinID >= FirstBuiltinID)
return 1 + (ObjCOrBuiltinID - FirstBuiltinID);
else
return 0;
```
================
Comment at: clang/include/clang/Basic/IdentifierTable.h:314
void setBuiltinID(unsigned ID) {
- ObjCOrBuiltinID = ID + tok::NUM_OBJC_KEYWORDS;
- assert(ObjCOrBuiltinID - unsigned(tok::NUM_OBJC_KEYWORDS) == ID
- && "ID too large for field!");
+ ObjCOrBuiltinID =
+ ID + tok::NUM_OBJC_KEYWORDS + tok::NUM_INTERESTING_IDENTIFIERS;
----------------
```
assert(ID != NotBuiltin);
ObjCOrBuiltinID = FirstBuiltinID + (ID - 1);
assert(getBuiltinID() == ID && "ID too large for field!");
```
================
Comment at: clang/include/clang/Basic/IdentifierTable.h:323
+ unsigned getInterestingIdentifierID() {
+ unsigned LowerID = tok::NUM_INTERESTING_IDENTIFIERS +
tok::NUM_OBJC_KEYWORDS;
+ unsigned UpperID = tok::NUM_INTERESTING_IDENTIFIERS +
tok::NUM_OBJC_KEYWORDS +
----------------
```
tok::InterestingIdentifierKind getInterestingIdentifierID() const {
if (ObjCOrBuiltinID >= FirstInterestingIdentifierID && ObjCOrBuiltinID <=
LastInterestingIdentifierID)
return tok::InterestingIdentifierKind(1 + (ObjCOrBuiltinID -
FirstInterestingIdentifierID));
else
return tok::not_interesting;
}
```
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146148/new/
https://reviews.llvm.org/D146148
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits