Мой проход модуля пытается заменить вызов функции foo строкой вызова функции. Функции могут иметь разные параметры и типы возврата. Я пробовал следующий фрагмент, но получаю «Неправильные типы для атрибута Ошибка». Каков наилучший способ заменить различные типы функций?
if (CallInst *call_inst = dyn_cast<CallInst>(&*i)) {
if ((call_inst->getCalledFunction()) != nullptr) {
if (strstr(call_inst->getCalledFunction()->getName().data(), "foo") != NULL){
call_inst->setCalledFunction(bar);
}
}
}