[PATCH] Fix instruction scheduling live register tracking

Paweł Bylica chfast at gmail.com
Thu May 28 14:27:07 PDT 2015

On Thu, May 28, 2015 at 6:28 PM Andrew Trick <atrick at apple.com> wrote:

> On May 28, 2015, at 3:29 AM, Paweł Bylica <chfast at gmail.com> wrote:
>  Then in backtracking, check BotReadyCycle instead of Height. There may be
> other bugs in backtracking that you're hitting, but that definitely looks
> suspect to me.
> I'll check that solution however I don't fully get it why we need to ever
> rewrite the Gen.
> During scheduling, we reset the Gen when scheduling a Def. That way, next
> time we see a read of that register, it becomes the current Gen.
> The Gen point is used to determine how far backtracking needs to go. Once
> we backtracking all the way to the Gen, we reset it to indicate that the
> register is no longer live. That way, we can schedule a different chain of
> instructions using the same physical register.
> Andy

Thanks for you patience Andy.

I agree that asserts I introduced are wrong. It's a pity that there are no
test for this case in regression tests.

However I'm still not sure about the condition I removed:
I->getSUnit()->getHeight() < LiveRegGens[I->getReg()]->getHeight().
Can you give me an example when it does not hold.

- Paweł
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150528/c5dd7196/attachment.html>

More information about the llvm-commits mailing list