[llvm] r331351 - [TableGen] Don't quote variable name when printing !foreach.
Simon Tatham via llvm-commits
llvm-commits at lists.llvm.org
Wed May 2 06:17:27 PDT 2018
Author: statham
Date: Wed May 2 06:17:26 2018
New Revision: 331351
URL: http://llvm.org/viewvc/llvm-project?rev=331351&view=rev
Log:
[TableGen] Don't quote variable name when printing !foreach.
An input !foreach expression such as !foreach(a, lst, !add(a, 1))
would be re-emitted by llvm-tblgen -print-records with the first
argument in quotes, giving !foreach("a", lst, !add(a, 1)), which isn't
valid TableGen input syntax.
Reviewers: nhaehnle
Reviewed By: nhaehnle
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D46352
Modified:
llvm/trunk/lib/TableGen/Record.cpp
llvm/trunk/test/TableGen/foreach-leak.td
Modified: llvm/trunk/lib/TableGen/Record.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/TableGen/Record.cpp?rev=331351&r1=331350&r2=331351&view=diff
==============================================================================
--- llvm/trunk/lib/TableGen/Record.cpp (original)
+++ llvm/trunk/lib/TableGen/Record.cpp Wed May 2 06:17:26 2018
@@ -1196,14 +1196,16 @@ Init *TernOpInit::resolveReferences(Reso
std::string TernOpInit::getAsString() const {
std::string Result;
+ bool UnquotedLHS = false;
switch (getOpcode()) {
case SUBST: Result = "!subst"; break;
- case FOREACH: Result = "!foreach"; break;
+ case FOREACH: Result = "!foreach"; UnquotedLHS = true; break;
case IF: Result = "!if"; break;
case DAG: Result = "!dag"; break;
}
- return Result + "(" + LHS->getAsString() + ", " + MHS->getAsString() + ", " +
- RHS->getAsString() + ")";
+ return (Result + "(" +
+ (UnquotedLHS ? LHS->getAsUnquotedString() : LHS->getAsString()) +
+ ", " + MHS->getAsString() + ", " + RHS->getAsString() + ")");
}
static void ProfileFoldOpInit(FoldingSetNodeID &ID, Init *A, Init *B,
Modified: llvm/trunk/test/TableGen/foreach-leak.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/TableGen/foreach-leak.td?rev=331351&r1=331350&r2=331351&view=diff
==============================================================================
--- llvm/trunk/test/TableGen/foreach-leak.td (original)
+++ llvm/trunk/test/TableGen/foreach-leak.td Wed May 2 06:17:26 2018
@@ -1,6 +1,9 @@
// RUN: llvm-tblgen %s | FileCheck %s
// XFAIL: vg_leak
+// CHECK: --- Classes ---
+// CHECK: list<int> ret = !foreach(a,
+
// CHECK: --- Defs ---
// CHECK: def C0 {
More information about the llvm-commits
mailing list