diff options
author | Tim Northover <tnorthover@apple.com> | 2014-05-15 13:36:01 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2014-05-15 13:36:01 +0000 |
commit | 60091cfeb9c827187d8877aaef600bdea3d5c17d (patch) | |
tree | ce1f51bd66ff4da9ddcbf333e88beaf00b94dfc1 /llvm/utils/TableGen/CodeGenInstruction.cpp | |
parent | cb7f9c40f872a2d786be318674a403b5ce5fa695 (diff) | |
download | bcm5719-llvm-60091cfeb9c827187d8877aaef600bdea3d5c17d.tar.gz bcm5719-llvm-60091cfeb9c827187d8877aaef600bdea3d5c17d.zip |
TableGen: use correct MIOperand when printing aliases
Previously, TableGen assumed that every aliased operand consumed precisely 1
MachineInstr slot (this was reasonable because until a couple of days ago,
nothing more complicated was eligible for printing).
This allows a couple more ARM64 aliases to print so we can remove the special
code.
On the X86 side, I've gone for explicit AT&T size specifiers as the default, so
turned off a few of the aliases that would have just started printing.
llvm-svn: 208880
Diffstat (limited to 'llvm/utils/TableGen/CodeGenInstruction.cpp')
-rw-r--r-- | llvm/utils/TableGen/CodeGenInstruction.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/CodeGenInstruction.cpp b/llvm/utils/TableGen/CodeGenInstruction.cpp index c924ce8d836..2577ad4d919 100644 --- a/llvm/utils/TableGen/CodeGenInstruction.cpp +++ b/llvm/utils/TableGen/CodeGenInstruction.cpp @@ -536,6 +536,23 @@ bool CodeGenInstAlias::tryAliasOpMatch(DagInit *Result, unsigned AliasOpNo, return false; } +unsigned CodeGenInstAlias::ResultOperand::getMINumOperands() const { + if (!isRecord()) + return 1; + + Record *Rec = getRecord(); + if (!Rec->isSubClassOf("Operand")) + return 1; + + DagInit *MIOpInfo = Rec->getValueAsDag("MIOperandInfo"); + if (MIOpInfo->getNumArgs() == 0) { + // Unspecified, so it defaults to 1 + return 1; + } + + return MIOpInfo->getNumArgs(); +} + CodeGenInstAlias::CodeGenInstAlias(Record *R, unsigned Variant, CodeGenTarget &T) : TheDef(R) { |