Implement !if, analogous to $(if) in GNU make.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71815 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Greene
2009-05-14 23:26:46 +00:00
parent 11adeed8b3
commit 9bea7c85d7
7 changed files with 63 additions and 2 deletions
+14
View File
@@ -912,6 +912,19 @@ Init *TernOpInit::Fold(Record *CurRec, MultiClass *CurMultiClass) {
}
break;
}
case IF: {
IntInit *LHSi = dynamic_cast<IntInit*>(LHS);
if (LHSi) {
if (LHSi->getValue()) {
return MHS;
}
else {
return RHS;
}
}
break;
}
}
return this;
@@ -932,6 +945,7 @@ std::string TernOpInit::getAsString() const {
switch (Opc) {
case SUBST: Result = "!subst"; break;
case FOREACH: Result = "!foreach"; break;
case IF: Result = "!if"; break;
}
return Result + "(" + LHS->getAsString() + ", " + MHS->getAsString() + ", "
+ RHS->getAsString() + ")";