[clang] [FixBUG][llvm-tblgen] : The correct td file ending with #endif cannot be compiled (PR #69411)

2023-10-19 Thread zhao jiangtao via cfe-commits

https://github.com/whousemyname updated 
https://github.com/llvm/llvm-project/pull/69411

>From 043d29cd597a7447037286293fe1a1b3ccf8d79d Mon Sep 17 00:00:00 2001
From: angryZ 
Date: Wed, 18 Oct 2023 10:39:56 +0800
Subject: [PATCH] [llvm][Tablegen][BUG] : The correct td file ending with
 #endif (there are no other characters after #endif, including newlines) still
 cannot be compiled. This PR is to solve this bug.

---
 llvm/lib/TableGen/TGLexer.cpp | 52 +--
 1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/llvm/lib/TableGen/TGLexer.cpp b/llvm/lib/TableGen/TGLexer.cpp
index d5140e91fce9e94..697441abf2a 100644
--- a/llvm/lib/TableGen/TGLexer.cpp
+++ b/llvm/lib/TableGen/TGLexer.cpp
@@ -346,31 +346,31 @@ tgtok::TokKind TGLexer::LexIdentifier() {
   StringRef Str(IdentStart, CurPtr-IdentStart);
 
   tgtok::TokKind Kind = StringSwitch(Str)
-.Case("int", tgtok::Int)
-.Case("bit", tgtok::Bit)
-.Case("bits", tgtok::Bits)
-.Case("string", tgtok::String)
-.Case("list", tgtok::List)
-.Case("code", tgtok::Code)
-.Case("dag", tgtok::Dag)
-.Case("class", tgtok::Class)
-.Case("def", tgtok::Def)
-.Case("true", tgtok::TrueVal)
-.Case("false", tgtok::FalseVal)
-.Case("foreach", tgtok::Foreach)
-.Case("defm", tgtok::Defm)
-.Case("defset", tgtok::Defset)
-.Case("multiclass", tgtok::MultiClass)
-.Case("field", tgtok::Field)
-.Case("let", tgtok::Let)
-.Case("in", tgtok::In)
-.Case("defvar", tgtok::Defvar)
-.Case("include", tgtok::Include)
-.Case("if", tgtok::If)
-.Case("then", tgtok::Then)
-.Case("else", tgtok::ElseKW)
-.Case("assert", tgtok::Assert)
-.Default(tgtok::Id);
+.Case("int", tgtok::Int)
+.Case("bit", tgtok::Bit)
+.Case("bits", tgtok::Bits)
+.Case("string", tgtok::String)
+.Case("list", tgtok::List)
+.Case("code", tgtok::Code)
+.Case("dag", tgtok::Dag)
+.Case("class", tgtok::Class)
+.Case("def", tgtok::Def)
+.Case("true", tgtok::TrueVal)
+.Case("false", tgtok::FalseVal)
+.Case("foreach", tgtok::Foreach)
+.Case("defm", tgtok::Defm)
+.Case("defset", tgtok::Defset)
+.Case("multiclass", tgtok::MultiClass)
+.Case("field", tgtok::Field)
+.Case("let", tgtok::Let)
+.Case("in", tgtok::In)
+.Case("defvar", tgtok::Defvar)
+.Case("include", tgtok::Include)
+.Case("if", tgtok::If)
+.Case("then", tgtok::Then)
+.Case("else", tgtok::ElseKW)
+.Case("assert", tgtok::Assert)
+.Default(tgtok::Id);
 
   // A couple of tokens require special processing.
   switch (Kind) {
@@ -664,7 +664,7 @@ tgtok::TokKind TGLexer::prepIsDirective() const {
   // It looks like TableGen does not support '\r' as the actual
   // carriage return, e.g. getNextChar() treats a single '\r'
   // as '\n'.  So we do the same here.
-  NextChar == '\r')
+  NextChar == '\r' || NextChar == '\0')
 return Kind;
 
   // Allow comments after some directives, e.g.:

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [FixBUG][llvm-tblgen] : The correct td file ending with #endif cannot be compiled (PR #69411)

2023-10-19 Thread zhao jiangtao via cfe-commits

https://github.com/whousemyname updated 
https://github.com/llvm/llvm-project/pull/69411

>From 043d29cd597a7447037286293fe1a1b3ccf8d79d Mon Sep 17 00:00:00 2001
From: angryZ 
Date: Wed, 18 Oct 2023 10:39:56 +0800
Subject: [PATCH] [llvm][Tablegen][BUG] : The correct td file ending with
 #endif (there are no other characters after #endif, including newlines) still
 cannot be compiled. This PR is to solve this bug.

---
 llvm/lib/TableGen/TGLexer.cpp | 52 +--
 1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/llvm/lib/TableGen/TGLexer.cpp b/llvm/lib/TableGen/TGLexer.cpp
index d5140e91fce9e94..697441abf2a 100644
--- a/llvm/lib/TableGen/TGLexer.cpp
+++ b/llvm/lib/TableGen/TGLexer.cpp
@@ -346,31 +346,31 @@ tgtok::TokKind TGLexer::LexIdentifier() {
   StringRef Str(IdentStart, CurPtr-IdentStart);
 
   tgtok::TokKind Kind = StringSwitch(Str)
-.Case("int", tgtok::Int)
-.Case("bit", tgtok::Bit)
-.Case("bits", tgtok::Bits)
-.Case("string", tgtok::String)
-.Case("list", tgtok::List)
-.Case("code", tgtok::Code)
-.Case("dag", tgtok::Dag)
-.Case("class", tgtok::Class)
-.Case("def", tgtok::Def)
-.Case("true", tgtok::TrueVal)
-.Case("false", tgtok::FalseVal)
-.Case("foreach", tgtok::Foreach)
-.Case("defm", tgtok::Defm)
-.Case("defset", tgtok::Defset)
-.Case("multiclass", tgtok::MultiClass)
-.Case("field", tgtok::Field)
-.Case("let", tgtok::Let)
-.Case("in", tgtok::In)
-.Case("defvar", tgtok::Defvar)
-.Case("include", tgtok::Include)
-.Case("if", tgtok::If)
-.Case("then", tgtok::Then)
-.Case("else", tgtok::ElseKW)
-.Case("assert", tgtok::Assert)
-.Default(tgtok::Id);
+.Case("int", tgtok::Int)
+.Case("bit", tgtok::Bit)
+.Case("bits", tgtok::Bits)
+.Case("string", tgtok::String)
+.Case("list", tgtok::List)
+.Case("code", tgtok::Code)
+.Case("dag", tgtok::Dag)
+.Case("class", tgtok::Class)
+.Case("def", tgtok::Def)
+.Case("true", tgtok::TrueVal)
+.Case("false", tgtok::FalseVal)
+.Case("foreach", tgtok::Foreach)
+.Case("defm", tgtok::Defm)
+.Case("defset", tgtok::Defset)
+.Case("multiclass", tgtok::MultiClass)
+.Case("field", tgtok::Field)
+.Case("let", tgtok::Let)
+.Case("in", tgtok::In)
+.Case("defvar", tgtok::Defvar)
+.Case("include", tgtok::Include)
+.Case("if", tgtok::If)
+.Case("then", tgtok::Then)
+.Case("else", tgtok::ElseKW)
+.Case("assert", tgtok::Assert)
+.Default(tgtok::Id);
 
   // A couple of tokens require special processing.
   switch (Kind) {
@@ -664,7 +664,7 @@ tgtok::TokKind TGLexer::prepIsDirective() const {
   // It looks like TableGen does not support '\r' as the actual
   // carriage return, e.g. getNextChar() treats a single '\r'
   // as '\n'.  So we do the same here.
-  NextChar == '\r')
+  NextChar == '\r' || NextChar == '\0')
 return Kind;
 
   // Allow comments after some directives, e.g.:

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits