[PATCH] D109033: [InlineCost] Introduce attributes to override InlineCost for inliner testing

Daniil Suchkov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 31 17:00:54 PDT 2021


DaniilSuchkov created this revision.
DaniilSuchkov added reviewers: davidxl, aeubanks, kazu, apilipenko.
Herald added subscribers: dexonsmith, wenlei, jdoerfert, haicheng, hiraditya, eraman.
DaniilSuchkov requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

This patch introduces four new string attributes: `function-inline-cost`, `function-inline-threshold`, `call-inline-cost` and `call-threshold-bonus`.
These attributes allow you to selectively override some aspects of InlineCost analysis. That would allow us to test inliner separately from the InlineCost analysis.

That could be useful when you're trying to write tests for inliner and you need to test some very specific situation, like "the inline cost has to be this high", or "the threshold has to be this low". Right now every time someone does that, they have get creative to come up with a way to make the InlineCost give them the number they need (like adding ~30 load/add pairs for a trivial test). This process can be somewhat tedious which can discourage some people from writing enough tests for their changes. Also, that results in tests that are fragile and can be easily broken without anyone noticing it because the test writer can't explicitly control what input the inliner will get from the inline cost analysis.

These new attributes will alleviate those problems to an extent.
I decided to make them string attributes because enum attributes seem to me way too invasive for such a narrow use-case.


https://reviews.llvm.org/D109033

Files:
  llvm/include/llvm/IR/InstrTypes.h
  llvm/lib/Analysis/InlineCost.cpp
  llvm/test/Transforms/Inline/inline-call-penalty-option.ll
  llvm/test/Transforms/Inline/inline-cold-callee.ll
  llvm/test/Transforms/Inline/inline-cold-callsite-pgo.ll
  llvm/test/Transforms/Inline/inline-cold-callsite.ll
  llvm/test/Transforms/Inline/inline-cold.ll
  llvm/test/Transforms/Inline/inline-cost-attributes.ll
  llvm/test/Transforms/Inline/inline-threshold.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D109033.369818.patch
Type: text/x-patch
Size: 18164 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210901/49598ef2/attachment.bin>


More information about the llvm-commits mailing list