[PATCH] D104972: [llvm][Inliner] Templatize PriorityInlineOrder

Kazu Hirata via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 30 13:26:10 PDT 2021


kazu added inline comments.


================
Comment at: llvm/lib/Transforms/IPO/Inliner.cpp:857-861
+    auto IsMoreDesirable = [](int S1, int S2) { return S1 < S2; };
+    auto Evaluate = [](CallBase *CB) {
+      Function *Callee = CB->getCalledFunction();
+      return (int)Callee->getInstructionCount();
+    };
----------------
How about packaging the type `int`, `isMoraDesirable`, and `evaluate` into one class?

```
class Priority {
public:
  static bool isMoreDesirable(const Priority &S1, const Priority &S2) {
    return S1.size < S2.size;
  }
  static Priority evaluate(CallBase *CB) {
    ...
  }
  int size;
};
```

This way, we don't have to pass individual components to `PriorityInlineOrder`.

Once you do this, you should be able to your original definition of `cmp` more or less restore like so:

```
  static bool cmp(const T &P1, const T &P2) {
    return Priority::isMoreDesirable(P2.second, P1.second);
  }
```



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D104972



More information about the llvm-commits mailing list