testing a back-end pre-emit pass


Does anyone have any direction for me on testing a back-end pre-emit pass independently of other passes? The pass I’m looking at is a MachineFunctionPass, so the code is already using target-specific instructions.

What I’m really looking to do is to see that the pass is correctly converting certain target-specific instructions sequences into other sequences, but I’m unsure how I can get an input in the correct format to construct a good unit test. Can I generate an “.ll” file using target specific instructions and then pass it through to a back-end MachineFunctionPass to test specifically just that one pass?

Chris Dewhurst,
Lero, University of Limerick.


I’ve been trying all sorts of things to be able to resolve this, but I can’t find way to get this done.

Does anyone know how I might introduce a transform at the ASM level?


You can print the function as MIR and then use that as an input to llc. llc can run individual passes on .mir input with -run-pass.


Try to create a .mir test and use “llc -start-after PASSNAME”.

BTW: If you want to review a patch that adds -start-before: https://reviews.llvm.org/D23089

  • Matthias