[PATCH] Improve llvm-mc disassembly mode for testing

Tim Northover t.p.northover at gmail.com
Thu Jul 18 10:00:09 PDT 2013


Currently in disassembly mode llvm-mc tries to synchronise the instruction stream on the next byte when a failure occurs.

This is almost never what we actually want for testing particularly on fixed-width targets, where we have a "near miss" instruction in mind and want to start at the next such near miss when we've made sure that fails.

As a result invalid disassembly tests are a nightmare to write (one of the few still present uses of grep) and there are far fewer of them than there probably should be.

This patch modifies llvm-mc so that it accepts variations of its own "show-encoding" syntax as input.
+ Commas are accepted as byte separators (minor detail, but helps copy/paste)
+ A sequence of bytes enclosed in "[" and "]" will be processed by the disassembler atomically.

This means that if a failure occurs within a [...] pair then llvm-mc will resynchronise predictably once it has finished.

I've also changed the ARM tests to match (as a starting point, mostly to test the new feature and illustrate what the new regime can do).

http://llvm-reviews.chandlerc.com/D1177

Files:
  test/MC/Disassembler/ARM/invalid-BFI-arm.txt
  test/MC/Disassembler/ARM/invalid-CDP2-arm.txt
  test/MC/Disassembler/ARM/invalid-CPS-arm.txt
  test/MC/Disassembler/ARM/invalid-CPS2p-arm.txt
  test/MC/Disassembler/ARM/invalid-CPS3p-arm.txt
  test/MC/Disassembler/ARM/invalid-IT-CBNZ-thumb.txt
  test/MC/Disassembler/ARM/invalid-IT-thumb.txt
  test/MC/Disassembler/ARM/invalid-LDC-form-arm.txt
  test/MC/Disassembler/ARM/invalid-LDM-thumb.txt
  test/MC/Disassembler/ARM/invalid-LDR-thumb.txt
  test/MC/Disassembler/ARM/invalid-LDRB_POST-arm.txt
  test/MC/Disassembler/ARM/invalid-LDRD_PRE-thumb.txt
  test/MC/Disassembler/ARM/invalid-LDR_POST-arm.txt
  test/MC/Disassembler/ARM/invalid-LDR_PRE-arm.txt
  test/MC/Disassembler/ARM/invalid-LDRrs-arm.txt
  test/MC/Disassembler/ARM/invalid-MCR-arm.txt
  test/MC/Disassembler/ARM/invalid-MOVTi16-arm.txt
  test/MC/Disassembler/ARM/invalid-MOVr-arm.txt
  test/MC/Disassembler/ARM/invalid-MOVs-arm.txt
  test/MC/Disassembler/ARM/invalid-MRRC2-arm.txt
  test/MC/Disassembler/ARM/invalid-MSRi-arm.txt
  test/MC/Disassembler/ARM/invalid-NEON-thumb.txt
  test/MC/Disassembler/ARM/invalid-RFEorLDMIA-arm.txt
  test/MC/Disassembler/ARM/invalid-SBFX-arm.txt
  test/MC/Disassembler/ARM/invalid-SMLAD-arm.txt
  test/MC/Disassembler/ARM/invalid-SRS-arm.txt
  test/MC/Disassembler/ARM/invalid-STMIA_UPD-thumb.txt
  test/MC/Disassembler/ARM/invalid-STR-thumb.txt
  test/MC/Disassembler/ARM/invalid-SXTB-arm.txt
  test/MC/Disassembler/ARM/invalid-UMAAL-arm.txt
  test/MC/Disassembler/ARM/invalid-VCVT-arm.txt
  test/MC/Disassembler/ARM/invalid-VEXTd-arm.txt
  test/MC/Disassembler/ARM/invalid-VFP-thumb.txt
  test/MC/Disassembler/ARM/invalid-VLD1DUPq8_UPD-arm.txt
  test/MC/Disassembler/ARM/invalid-VLD1LNd32_UPD-thumb.txt
  test/MC/Disassembler/ARM/invalid-VLD3DUPd32_UPD-thumb.txt
  test/MC/Disassembler/ARM/invalid-VLD4DUPd32_UPD-thumb.txt
  test/MC/Disassembler/ARM/invalid-VLD4LNd32_UPD-thumb.txt
  test/MC/Disassembler/ARM/invalid-VLDMSDB_UPD-arm.txt
  test/MC/Disassembler/ARM/invalid-VLDST-arm.txt
  test/MC/Disassembler/ARM/invalid-VMOV-arm.txt
  test/MC/Disassembler/ARM/invalid-VQADD-arm.txt
  test/MC/Disassembler/ARM/invalid-VST1LNd32_UPD-thumb.txt
  test/MC/Disassembler/ARM/invalid-VST1d8Twb_register-thumb.txt
  test/MC/Disassembler/ARM/invalid-VST2b32_UPD-arm.txt
  test/MC/Disassembler/ARM/invalid-VST4LNd32_UPD-thumb.txt
  test/MC/Disassembler/ARM/invalid-arm.txt
  test/MC/Disassembler/ARM/invalid-hint-arm.txt
  test/MC/Disassembler/ARM/invalid-hint-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2Bcc-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2LDRBT-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2LDREXD-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2LDRSHi12-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2LDRSHi8-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2PUSH-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2STRD_PRE-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2STREXB-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2STREXD-thumb.txt
  test/MC/Disassembler/ARM/invalid-t2STR_POST-thumb.txt
  test/MC/Disassembler/ARM/invalid-thumb-xfail.txt
  test/MC/Disassembler/ARM/invalid-thumb.txt
  test/MC/Disassembler/ARM/invalid-v8fp.txt
  tools/llvm-mc/Disassembler.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D1177.1.patch
Type: text/x-patch
Size: 87870 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130718/c9e3933d/attachment.bin>


More information about the llvm-commits mailing list