summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/TGParser.cpp
diff options
context:
space:
mode:
authorDavid Greene <greened@obbligato.org>2009-06-08 23:05:37 +0000
committerDavid Greene <greened@obbligato.org>2009-06-08 23:05:37 +0000
commit67c05bff319054210f6b643bed53bcb7999f1363 (patch)
tree047dfe1c9acc62fa6e62b1061ab45a9f86c0284a /llvm/utils/TableGen/TGParser.cpp
parent5b1b5b2a8a879a71ee78febb0c71a07f958b1405 (diff)
downloadbcm5719-llvm-67c05bff319054210f6b643bed53bcb7999f1363.tar.gz
bcm5719-llvm-67c05bff319054210f6b643bed53bcb7999f1363.zip
Add a !patsubst operator. Use on string types.
llvm-svn: 73099
Diffstat (limited to 'llvm/utils/TableGen/TGParser.cpp')
-rw-r--r--llvm/utils/TableGen/TGParser.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/TGParser.cpp b/llvm/utils/TableGen/TGParser.cpp
index 7d3d1b37a94..d2bc6b853dc 100644
--- a/llvm/utils/TableGen/TGParser.cpp
+++ b/llvm/utils/TableGen/TGParser.cpp
@@ -878,6 +878,7 @@ Init *TGParser::ParseOperation(Record *CurRec) {
case tgtok::XIf:
case tgtok::XForEach:
+ case tgtok::XPatSubst:
case tgtok::XSubst: { // Value ::= !ternop '(' Value ',' Value ',' Value ')'
TernOpInit::TernaryOp Code;
RecTy *Type = 0;
@@ -896,6 +897,9 @@ Init *TGParser::ParseOperation(Record *CurRec) {
case tgtok::XSubst:
Code = TernOpInit::SUBST;
break;
+ case tgtok::XPatSubst:
+ Code = TernOpInit::PATSUBST;
+ break;
}
if (Lex.getCode() != tgtok::l_paren) {
TokError("expected '(' after ternary operator");
@@ -969,6 +973,10 @@ Init *TGParser::ParseOperation(Record *CurRec) {
Type = RHSt->getType();
break;
}
+ case tgtok::XPatSubst: {
+ Type = new StringRecTy;
+ break;
+ }
}
return (new TernOpInit(Code, LHS, MHS, RHS, Type))->Fold(CurRec, CurMultiClass);
}
@@ -1277,6 +1285,7 @@ Init *TGParser::ParseSimpleValue(Record *CurRec, RecTy *ItemType) {
case tgtok::XNameConcat: // Value ::= !binop '(' Value ',' Value ')'
case tgtok::XIf:
case tgtok::XForEach:
+ case tgtok::XPatSubst:
case tgtok::XSubst: { // Value ::= !ternop '(' Value ',' Value ',' Value ')'
return ParseOperation(CurRec);
break;
OpenPOWER on IntegriCloud