Я пытаюсь найти способ оптимизировать пустые глобальные конструкторы.Предыдущая оптимизация превратит конструкторы в функции, которые ничего не делают.Мне нужно добавить новый проход, чтобы удалить эти функции из llvm.global_ctors
.
Сначала я попытался optimizeGlobalCtorsList
, но эта функция фактически не вызывает обратный вызов, который я ей предоставляю, даже если заполнено llvm.global_ctors
.
Затем я попытался запустить GlobalOptPass
.Я пробовал это:
llvm::GlobalOptPass pass;
llvm::ModuleAnalysisManager MAM{true};
pass.run(module, MAM);
Это приводит к разыменованию нулевого указателя в AnalysisManager::lookupPass
.Я думаю, что мне нужно выполнить какую-то инициализацию или регистрацию, но я не знаю, как это сделать.Все ссылки на "llvm pass registration" говорят о регистрации пропуска с помощью opt
.Я не хочу этого делать.Я просто хочу запустить перевал.