[clang] [FixBUG][llvm-tblgen] : The correct td file ending with #endif cannot be compiled (PR #69411)
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)
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