diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp index baefd8d0758..6e1283b4d33 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp @@ -228,10 +228,13 @@ WebAssemblyTargetLowering::getRegForInlineAsmConstraint(    if (Constraint.size() == 1) {      switch (Constraint[0]) {      case 'r': -      if (VT == MVT::i32) -        return std::make_pair(0U, &WebAssembly::I32RegClass); -      if (VT == MVT::i64) -        return std::make_pair(0U, &WebAssembly::I64RegClass); +      assert(VT != MVT::iPTR && "Pointer MVT not expected here"); +      if (VT.isInteger() && !VT.isVector()) { +        if (VT.getSizeInBits() <= 32) +          return std::make_pair(0U, &WebAssembly::I32RegClass); +        if (VT.getSizeInBits() <= 64) +          return std::make_pair(0U, &WebAssembly::I64RegClass); +      }        break;      default:        break; | 

