[PATCH] D145516: [Inliner] Avoid excessive inlining through devirtualised calls

Jeremy Morse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 18 11:05:59 PDT 2023

jmorse added inline comments.

Comment at: llvm/lib/Analysis/InlineCost.cpp:683
         // threshold to get the bonus we want to apply, but don't go below zero.
-        Cost -= std::max(0, CA.getThreshold() - CA.getCost());
+        Cost -= std::min(Cost, std::max(0, CA.getThreshold() - CA.getCost()));
aeubanks wrote:
> is this change intended?
It is, it puts a ceiling on the outer subtraction so that the cost is never reduced to be below zero. While the comment says that negative-costs have been considered, I think that only applies to the inner subtraction, as I've seen negative numbers produced here during testing.

I can split this out into a different patch if needs be, but I'm not sure how to write a test for it. As far as I understand it, the cost can only be observed by passing `-debug` to LLVM, and I'm under the impression that that's generally discouraged in tests.



More information about the llvm-commits mailing list