diff options
author | David Greene <greened@obbligato.org> | 2009-06-08 23:05:37 +0000 |
---|---|---|
committer | David Greene <greened@obbligato.org> | 2009-06-08 23:05:37 +0000 |
commit | 0d973999f3a7973e680e12acdf6def9d769911b6 (patch) | |
tree | d26340225fa5c4ca70833825a305da557017db5e /utils/TableGen/TGParser.cpp | |
parent | 2e7ccfce98b925d07788fdd08cccc9ddb3d7004b (diff) | |
download | llvm-0d973999f3a7973e680e12acdf6def9d769911b6.tar.gz llvm-0d973999f3a7973e680e12acdf6def9d769911b6.tar.bz2 llvm-0d973999f3a7973e680e12acdf6def9d769911b6.tar.xz |
Add a !patsubst operator. Use on string types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73099 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/TGParser.cpp')
-rw-r--r-- | utils/TableGen/TGParser.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/utils/TableGen/TGParser.cpp b/utils/TableGen/TGParser.cpp index 7d3d1b37a9..d2bc6b853d 100644 --- a/utils/TableGen/TGParser.cpp +++ b/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; |