diff options
| author | Chris Dewhurst <chris.dewhurst@lero.ie> | 2016-05-20 09:03:01 +0000 |
|---|---|---|
| committer | Chris Dewhurst <chris.dewhurst@lero.ie> | 2016-05-20 09:03:01 +0000 |
| commit | 0dfa6bc004754ee35395eb7b5c63bf894eca4c9c (patch) | |
| tree | e9dd062164b4e0e1bf0ca032244eeb549a1ee9ce /llvm/lib/Target | |
| parent | 1cea6e553117b25eb1a97e6b95508591af5da63e (diff) | |
| download | bcm5719-llvm-0dfa6bc004754ee35395eb7b5c63bf894eca4c9c.tar.gz bcm5719-llvm-0dfa6bc004754ee35395eb7b5c63bf894eca4c9c.zip | |
[Sparc] Enable more inline assembly constraints.
Note: This is specifically to allow GCC's test pr44707 to pass.
Trivial change, not put for differential revision. Test included.
llvm-svn: 270192
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/Sparc/SparcISelLowering.h | 8 |
2 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp b/llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp index 02c23282611..07948a33cde 100644 --- a/llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp +++ b/llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp @@ -392,6 +392,7 @@ SparcDAGToDAGISel::SelectInlineAsmMemoryOperand(const SDValue &Op, switch (ConstraintID) { default: return true; case InlineAsm::Constraint_i: + case InlineAsm::Constraint_o: case InlineAsm::Constraint_m: // memory if (!SelectADDRrr(Op, Op0, Op1)) SelectADDRri(Op, Op0, Op1); diff --git a/llvm/lib/Target/Sparc/SparcISelLowering.h b/llvm/lib/Target/Sparc/SparcISelLowering.h index 20dfd2cabd0..cdc58d612bf 100644 --- a/llvm/lib/Target/Sparc/SparcISelLowering.h +++ b/llvm/lib/Target/Sparc/SparcISelLowering.h @@ -85,6 +85,14 @@ namespace llvm { std::string &Constraint, std::vector<SDValue> &Ops, SelectionDAG &DAG) const override; + + unsigned + getInlineAsmMemConstraint(StringRef ConstraintCode) const override { + if (ConstraintCode == "o") + return InlineAsm::Constraint_o; + return TargetLowering::getInlineAsmMemConstraint(ConstraintCode); + } + std::pair<unsigned, const TargetRegisterClass *> getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI, StringRef Constraint, MVT VT) const override; |

