для изучения генетического программирования я хотел бы реализовать эволюционную систему на основе llvm и применить кодовые мутации (возможно, на уровне IR).
Я нашел llvm-mutate, что весьма полезно для выполнения точечных мутаций. Насколько я понял, инструкции получают счет/пронумерованы, тогда можно указать, например, удалите пронумерованную инструкцию.
Однако введение новых инструкций представляется возможным как одно из доступных в коде операторов. Однако настоящая мутация позволила бы вставить любую из разрешенных IR-инструкций, независимо от того, как она использовалась в коде, который должен быть мутирован. Кроме того, должно быть возможно вставить вызовы библиотечных функций связанных библиотек (не используемые в текущем коде, но возможно доступные, поскольку lib был связан в clang).
Я пропустил это в мутации llvm или пока это невозможно?
Существуют ли какие-либо проекты, пытающиеся/уже реализующие (ed) такие мутации для llvm?
llvm имеет множество инструментов анализа кода, которые должны позволить реализовать вышеупомянутый подход. llvm огромен, поэтому я немного дезориентирован. Любые подсказки, какие инструменты могут быть полезны (например, получение списка доступных библиотечных функций и т.д.)?
Спасибо Alex