1diff --git a/include/clang/Basic/TokenKinds.def b/include/clang/Basic/TokenKinds.def
2index ef0dad0f2..afd101b00 100644
3--- a/include/clang/Basic/TokenKinds.def
4+++ b/include/clang/Basic/TokenKinds.def
5@@ -753,7 +753,7 @@ KEYWORD(__builtin_sycl_unique_stable_name, KEYSYCL)
6
7 // Keywords defined by Attr.td.
8 #ifndef KEYWORD_ATTRIBUTE
9-#define KEYWORD_ATTRIBUTE(X) KEYWORD(X, KEYALL)
10+#define KEYWORD_ATTRIBUTE(X, EMPTY) KEYWORD(EMPTY ## X, KEYALL)
11 #endif
12 #include "clang/Basic/AttrTokenKinds.inc"
13
14diff --git a/include/clang/Basic/TokenKinds.h b/include/clang/Basic/TokenKinds.h
15index e4857405b..ff117bd5a 100644
16--- a/include/clang/Basic/TokenKinds.h
17+++ b/include/clang/Basic/TokenKinds.h
18@@ -109,7 +109,7 @@ bool isPragmaAnnotation(TokenKind K);
19
20 inline constexpr bool isRegularKeywordAttribute(TokenKind K) {
21 return (false
22-#define KEYWORD_ATTRIBUTE(X) || (K == tok::kw_##X)
23+#define KEYWORD_ATTRIBUTE(X, ...) || (K == tok::kw_##X)
24 #include "clang/Basic/AttrTokenKinds.inc"
25 );
26 }
27diff --git a/utils/TableGen/ClangAttrEmitter.cpp b/utils/TableGen/ClangAttrEmitter.cpp
28index b5813c6ab..79db17501 100644
29--- a/utils/TableGen/ClangAttrEmitter.cpp
30+++ b/utils/TableGen/ClangAttrEmitter.cpp
31@@ -3430,7 +3430,7 @@ void EmitClangAttrTokenKinds(RecordKeeper &Records, raw_ostream &OS) {
32 "RegularKeyword attributes with arguments are not "
33 "yet supported");
34 OS << "KEYWORD_ATTRIBUTE("
35- << S.getSpellingRecord().getValueAsString("Name") << ")\n";
36+ << S.getSpellingRecord().getValueAsString("Name") << ", )\n";
37 }
38 OS << "#undef KEYWORD_ATTRIBUTE\n";
39 }