[PATCH] D62653: [Mips][DSP] Fix physregs incorrectly marked as dead.

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 5 15:40:56 PDT 2019


efriedma added a comment.

I think fundamentally, the problem here is that the registers in question aren't being handled consistently.

Looking briefly, at the IR level, the DSPCtrl registers are implicit: it's equivalent to some unknown location in memory.  Then, during isel, some instructions acquire explicit references to those registers.  Then, after isel, some other instructions acquire explicit references to those registers.  This is fundamentally broken; you have to transition from modeling DSPCtrl as unknown memory to modeling it as an explicit set of registers at exactly one point, for all operations which refer to DSPCtrl.  Otherwise the dependencies are wrong.  This doesn't just affect the dead/undef markings; this could also have implications for scheduling.  For example, if we don't model the dependency between wrdsp and pick.qb, we could schedule them in the wrong order.

Not sure where the best place to convert from arbitrary "memory" to specific registers is.  Probably the simplest is to do it all in post-isel hooks?


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

https://reviews.llvm.org/D62653





More information about the llvm-commits mailing list