diff --git a/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp b/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp index 76107924095..ecc7f0b1650 100644 --- a/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp +++ b/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp @@ -77,7 +77,10 @@ static bool getITDeprecationInfo(MCInst &MI, MCSubtargetInfo &STI, static bool getARMStoreDeprecationInfo(MCInst &MI, MCSubtargetInfo &STI, std::string &Info) { - assert(MI.getNumOperands() > 4 && "expected >4 arguments"); + if (STI.getFeatureBits() & llvm::ARM::ModeThumb) + return false; + + assert(MI.getNumOperands() >= 4 && "expected >= 4 arguments"); for (unsigned OI = 4, OE = MI.getNumOperands(); OI < OE; ++OI) { assert(MI.getOperand(OI).isReg() && "expected register"); if (MI.getOperand(OI).getReg() == ARM::SP || diff --git a/test/MC/ARM/arm-store-deprecated.s b/test/MC/ARM/arm-store-deprecated.s index d8c10e2f94a..8a598abc424 100644 --- a/test/MC/ARM/arm-store-deprecated.s +++ b/test/MC/ARM/arm-store-deprecated.s @@ -145,3 +145,9 @@ push: @ CHECK: push {sp} @ CHECK: ^ + .global single + .type single,%function +single: + stmdaeq r0, {r0} +@ CHECK-NOT: warning +