diff options
author | Tim Northover <tnorthover@apple.com> | 2013-11-14 17:15:39 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2013-11-14 17:15:39 +0000 |
commit | bf7329d9a0169abbd6ec837dc8b682b2f2fd98cd (patch) | |
tree | 43da4cec9c16756e2d25ae62996ac91cb24ad01a /lib | |
parent | 5e9f8c3948ddeee5d40d525e076fa63fc7b8ae40 (diff) | |
download | external_llvm-bf7329d9a0169abbd6ec837dc8b682b2f2fd98cd.zip external_llvm-bf7329d9a0169abbd6ec837dc8b682b2f2fd98cd.tar.gz external_llvm-bf7329d9a0169abbd6ec837dc8b682b2f2fd98cd.tar.bz2 |
ARM: produce friendly error for invalid inline asm
We used to perform an invalid operation on an MVT and crash, which wasn't much
fun.
Patch by Oliver Stannard.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194714 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/ARM/ARMISelLowering.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index 9dee931..76a0a83 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -10860,6 +10860,8 @@ ARMTargetLowering::getRegForInlineAsmConstraint(const std::string &Constraint, case 'r': return RCPair(0U, &ARM::GPRRegClass); case 'w': + if (VT == MVT::Other) + break; if (VT == MVT::f32) return RCPair(0U, &ARM::SPRRegClass); if (VT.getSizeInBits() == 64) @@ -10868,6 +10870,8 @@ ARMTargetLowering::getRegForInlineAsmConstraint(const std::string &Constraint, return RCPair(0U, &ARM::QPRRegClass); break; case 'x': + if (VT == MVT::Other) + break; if (VT == MVT::f32) return RCPair(0U, &ARM::SPR_8RegClass); if (VT.getSizeInBits() == 64) |