Встроить вызов конкретной функции с помощью LLVM - PullRequest
0 голосов
/ 24 января 2019

Учитывая llvm::CallInst *, как я могу сказать инлайнеру встроить этот конкретный вызов. Я мог бы пометить целевую функцию как AlwaysInline, и это будет встроить вызов, но оно также встроит каждый вызов. Может быть, есть какой-то способ вызвать лайнер на определенный звонок, пока я его посылаю? Инжиниринг всех вызовов внутри базового блока тоже будет работать.

1 Ответ

0 голосов
/ 28 января 2019

Вы можете использовать утилиту InlineFunction , присутствующую в llvm/Transforms/Utils/Cloning.h. Он может принять CallInst* в качестве аргумента:

llvm::CallInst* call = /* ... */;
llvm::InlineFunctionInfo ifi;

llvm::InlineFunction(call, ifi);
...