diff options
author | Jim Grosbach <grosbach@apple.com> | 2011-08-19 20:33:06 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2011-08-19 20:33:06 +0000 |
commit | a7b2d444b61f8a63f132542a25245aaab1c310d7 (patch) | |
tree | f51c9ad4e40d555bdb864f2eaa3dd36325f90232 /llvm/utils/TableGen/CodeGenInstruction.cpp | |
parent | dbb60f960af7c73617c35f59448b402a218e7d31 (diff) | |
download | llvm-a7b2d444b61f8a63f132542a25245aaab1c310d7.zip llvm-a7b2d444b61f8a63f132542a25245aaab1c310d7.tar.gz llvm-a7b2d444b61f8a63f132542a25245aaab1c310d7.tar.bz2 |
Allow non zero_reg explicit values for OptionalDefOperands in aliases.
llvm-svn: 138073
Diffstat (limited to 'llvm/utils/TableGen/CodeGenInstruction.cpp')
-rw-r--r-- | llvm/utils/TableGen/CodeGenInstruction.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/CodeGenInstruction.cpp b/llvm/utils/TableGen/CodeGenInstruction.cpp index 751326c..b4f9d15 100644 --- a/llvm/utils/TableGen/CodeGenInstruction.cpp +++ b/llvm/utils/TableGen/CodeGenInstruction.cpp @@ -424,6 +424,13 @@ bool CodeGenInstAlias::tryAliasOpMatch(DagInit *Result, unsigned AliasOpNo, // Handle explicit registers. if (ADI && ADI->getDef()->isSubClassOf("Register")) { + if (InstOpRec->isSubClassOf("OptionalDefOperand")) { + DagInit *DI = InstOpRec->getValueAsDag("MIOperandInfo"); + // The operand info should only have a single (register) entry. We + // want the register class of it. + InstOpRec = dynamic_cast<DefInit*>(DI->getArg(0))->getDef(); + } + if (InstOpRec->isSubClassOf("RegisterOperand")) InstOpRec = InstOpRec->getValueAsDef("RegClass"); |