summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips
diff options
context:
space:
mode:
authorSimon Atanasyan <simon@atanasyan.com>2018-02-12 07:51:21 +0000
committerSimon Atanasyan <simon@atanasyan.com>2018-02-12 07:51:21 +0000
commite08f2a19d487bde254860bb3f9368a86105e16f9 (patch)
tree695ab64e1616bbd25898fbf89b4d2ca5e1532a32 /llvm/lib/Target/Mips
parentbf82e99691c890d00de0d411326bc4a592e15eb0 (diff)
downloadbcm5719-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.cpp2
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
OpenPOWER on IntegriCloud