The ARM disassembler was confused with the 16-bit tSTMIA instruction.

According to A8.6.189 STM/STMIA/STMEA (Encoding T1), there's only tSTMIA_UPD available.
Ignore tSTMIA for the decoder emitter and add a test case for that.

llvm-svn: 128246
This commit is contained in:
Johnny Chen 2011-03-24 23:21:14 +00:00
parent c6ed54c434
commit 6345e6a882
2 changed files with 8 additions and 0 deletions

View File

@ -139,3 +139,6 @@
# CHECK: stmdb.w sp, {r0, r2, r3, r8, r11, lr}
0x0d 0xe9 0x0d 0x49
# CHECK: stmia r5!, {r0, r1, r2, r3, r4}
0x1f 0xc5

View File

@ -1615,6 +1615,11 @@ ARMDEBackend::populateInstruction(const CodeGenInstruction &CGI,
if (!thumbInstruction(Form))
return false;
// A8.6.189 STM / STMIA / STMEA -- Encoding T1
// There's only STMIA_UPD for Thumb1.
if (Name == "tSTMIA")
return false;
// On Darwin R9 is call-clobbered. Ignore the non-Darwin counterparts.
if (Name == "tBL" || Name == "tBLXi" || Name == "tBLXr")
return false;