Я внедряю новый бэкэнд для LLVM, начиная с цели CBackend.
Конечная цель - использовать «llc» для генерации исходных преобразований входного C-кода.
Тем не менее, я хотел бы сделать ряд оптимизаций, которые, кажется, не очень хорошо поддерживаются в этом контексте.
Код объекта LLVM находится на очень низком уровне, и я должен осмотреть его, чтобы заново обнаружить, что на самом деле происходит. Это было бы намного проще сделать на уровне AST.
Однако, похоже, что уровень AST является внутренней структурой Clang, и нет простого способа подключиться к этому.
Нужно ли мне проверять объектный код LLVM и самостоятельно перепроектировать поток более высокого уровня? (Должен ли это делать каждый сервер? Это кажется расточительным!)