diff options
| author | Simon Atanasyan <simon@atanasyan.com> | 2018-02-12 07:51:21 +0000 |
|---|---|---|
| committer | Simon Atanasyan <simon@atanasyan.com> | 2018-02-12 07:51:21 +0000 |
| commit | e08f2a19d487bde254860bb3f9368a86105e16f9 (patch) | |
| tree | 695ab64e1616bbd25898fbf89b4d2ca5e1532a32 /llvm/lib/Target/Mips | |
| parent | bf82e99691c890d00de0d411326bc4a592e15eb0 (diff) | |
| download | bcm5719-llvm-e08f2a19d487bde254860bb3f9368a86105e16f9.tar.gz bcm5719-llvm-e08f2a19d487bde254860bb3f9368a86105e16f9.zip | |
[mips] Fix 'l' constraint handling for types smaller than 32 bits
In case of correct using of the 'l' constraint llvm now generates valid
code; otherwise it shows an error message. Initially these triggers an
assertion.
llvm-svn: 324869
Diffstat (limited to 'llvm/lib/Target/Mips')
| -rw-r--r-- | llvm/lib/Target/Mips/MipsISelLowering.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/MipsISelLowering.cpp b/llvm/lib/Target/Mips/MipsISelLowering.cpp index ba05b0f48df..3d383b3dfe3 100644 --- a/llvm/lib/Target/Mips/MipsISelLowering.cpp +++ b/llvm/lib/Target/Mips/MipsISelLowering.cpp @@ -3868,7 +3868,7 @@ MipsTargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI, return std::make_pair(0U, nullptr); case 'l': // use the `lo` register to store values // that are no bigger than a word - if (VT == MVT::i32) + if (VT == MVT::i32 || VT == MVT::i16 || VT == MVT::i8) return std::make_pair((unsigned)Mips::LO0, &Mips::LO32RegClass); return std::make_pair((unsigned)Mips::LO0_64, &Mips::LO64RegClass); case 'x': // use the concatenated `hi` and `lo` registers |

