[PATCH] D98232: [regalloc] Ensure Query::collectInterferringVregs is called before interval iteration

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 28 11:23:49 PDT 2021


dmgreen added a comment.

> This would be really bad for us, because rust effectively always uses `O3`, and we expect reasonable compile-time tradeoffs to be made for it as well.
>
> Worth noting that D35816 <https://reviews.llvm.org/D35816> discussed a number of alternatives to this, one being to handle this in machine copy propagation instead, which should be both much less complex and not have compile-time concerns. The cited disadvantage is that it would only work inside a block. From the examples I've seen long eviction chains inside a single BB seem to be the main problem, so maybe it would be worthwhile to go back to that option. I don't really have a good view on this topic though.

It sounds like `-O2` might be a better default for you - as a balance between optimizations and compile time. We have users that care deeply about performance and would be happy to spend extra compile time for it.

I'm not particularly interested in the exact test case here, and the compile time tradeoff does seem high. I would love to see an alternative. But it is just a pretty boring matrix multiply kernel that's going very wrong. If that happens in the inner loop of a ML kernel then that can have a large effect on a lot of people.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D98232



More information about the llvm-commits mailing list