[RDF] Performance Issues for rdf::Liveness::computePhiInfo()

Hi Krzysztof,

I have been working to debug some performance issues in https://reviews.llvm.org/D75936, and I have found that the main issue is rdf::Liveness::computePhiInfo(). Specifically, a single line introduces 20-30% overhead for the entire llc X86 pipeline:


Linux perf shows that the culprit is MachineDominatorTree::dominates(), which is being invoked on nearly every less-than comparison between nodes. The documentation for dominates() reads “dominates -Returns true iff A dominates B. Note that this is not a constant time operation!”

Do you think that this could be fixed? Maybe some memorization could help?

Thanks and regards,

Scott Constable

Hi Scott,

I’m actually fixing a correctness problem in that function and the node ordering plays a role in it. I will put more attention to trying to reduce the complexity there.