[PATCH] D66459: Make ShrinkWrap more consistent.

zuojian lin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 18 17:55:38 PDT 2019


linzj added a comment.

In D66459#1674189 <https://reviews.llvm.org/D66459#1674189>, @thegameg wrote:

> In D66459#1673510 <https://reviews.llvm.org/D66459#1673510>, @linzj wrote:
>
> > In D66459#1673212 <https://reviews.llvm.org/D66459#1673212>, @thegameg wrote:
> >
> > > You can try to reproduce the behavior of the calling convention through a MIR test: https://llvm.org/docs/MIRLangRef.html, using `$REG = IMPLICIT_DEF` to clobber a CSR.
> >
> >
> > Not that simple. Your solution just handles the call instructions. The the prologue is inserted by the prologue inserter. I can't simply add a prologue to a function's MIR script, right?
>
>
> What I was suggesting is to write a MIR test that starts the compilation from the ShrinkWrap pass and goes through PrologEpilogInserter (or all the way to the end), then check the output.
>
> To do that, you can generate the MIR test with `llc -stop-before shrink-wrap` with your patch applied, and use `$REG = IMPLICIT_DEF` to strip out everything related to your downstream code. Then using `llc -start-before shrink-wrap -stop-after prologepilog` should allow you to check if the prologue/epilogue has been inserted at the right place.
>  Another solution would be to use the debug output of the ShrinkWrap pass (`llc -run-pass shrink-wrap -debug-only=shrink-wrap`), but that will only be tested with asserts enabled.
>
> I may be getting all of this wrong, so let me know if that doesn't make sense for your use case.


Thank you for your suggestion.  Let me give it a try to see what I get.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66459/new/

https://reviews.llvm.org/D66459





More information about the llvm-commits mailing list