diff options
Diffstat (limited to 'llvm/utils/TableGen/CodeGenInstruction.cpp')
| -rw-r--r-- | llvm/utils/TableGen/CodeGenInstruction.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/llvm/utils/TableGen/CodeGenInstruction.cpp b/llvm/utils/TableGen/CodeGenInstruction.cpp index fde946d0658..095b2653e25 100644 --- a/llvm/utils/TableGen/CodeGenInstruction.cpp +++ b/llvm/utils/TableGen/CodeGenInstruction.cpp @@ -504,16 +504,18 @@ FlattenAsmStringVariants(StringRef Cur, unsigned Variant) { return Res; } -bool CodeGenInstruction::isOperandAPointer(unsigned i) const { - if (DagInit *ConstraintList = TheDef->getValueAsDag("InOperandList")) { - if (i < ConstraintList->getNumArgs()) { - if (DefInit *Constraint = dyn_cast<DefInit>(ConstraintList->getArg(i))) { - return Constraint->getDef()->isSubClassOf("TypedOperand") && - Constraint->getDef()->getValueAsBit("IsPointer"); - } - } - } - return false; +bool CodeGenInstruction::isOperandImpl(unsigned i, + StringRef PropertyName) const { + DagInit *ConstraintList = TheDef->getValueAsDag("InOperandList"); + if (!ConstraintList || i >= ConstraintList->getNumArgs()) + return false; + + DefInit *Constraint = dyn_cast<DefInit>(ConstraintList->getArg(i)); + if (!Constraint) + return false; + + return Constraint->getDef()->isSubClassOf("TypedOperand") && + Constraint->getDef()->getValueAsBit(PropertyName); } //===----------------------------------------------------------------------===// |

