Я пытаюсь создать код API LLVM, который может регенерировать IR-код, который подается в него. Как я обнаружил, с помощью различных вопросов, таких как this question это было в каком-то момент можно сделать следующее для достижения этой цели:Как сгенерировать код LLVM api через ИК-код, в текущих версиях?
clang++ -S -O0 -emit-llvm MyFile.cpp -o MyIR.ll
llc -march=cpp MyIR.ll -o MyIR_Maker.cpp
Однако я получаю следующую ошибку: ооо: ошибка: недопустимая цель «касты». Дальнейшие исследования говорят мне, что the same issue occurred в более ранних версиях LLVM, когда c backend был удален в версии 3.1. Однако я использую cpp, это заставляет меня поверить, что по какой-то причине бэкэнда cpp не существует в моей версии llvm.
Итак, действительно, что я хочу знать отсюда: если мой анализ до сих пор верен, как я могу включить backend cpp или иным образом получить свой llc в состояние, в котором я могу использовать его так, как я хочу? Конечно, если я ошибаюсь, или если есть другой способ, я буду открыт для этого.
Версия, которую мы выбрали для работы, это LLVM 3.6, это было установлено с помощью варки на OS X. Спасибо заранее.
Редактировать: This question был указан как возможно похожий вопрос. Однако этот вопрос задавался в конкретном контексте LLVM 3.2, где мой вопрос касается текущей ситуации в версии 3.6, поскольку в настоящее время может быть реальное решение. Единственный ответ на этот вопрос указывает на общий внешний ресурс и не очень подробно объясняет, что такое фактическое решение.
с бэкэнд и CPP бэкэнд очень разные; и в то время как первый был удален, последний по-прежнему поддерживается, а не построен по умолчанию. Я думаю, что этот вопрос является дубликатом [Generate LLVM C++ API code as backend] (http://stackoverflow.com/questions/14751403/generate-llvm-c-api-code-as-backend), который должен объяснить, как постройте LLVM, чтобы включить этот бэкэнд. – Oak
@Oak Тогда, возможно, лучшим вопросом будет вопрос, как включить бэкэнд C++? Ответ на этот вопрос, похоже, просто указывает на общую страницу для создания LLVM и вне контекстной цитаты, которая не очень ясна IMO. Также, как я упомянул, я устанавливаю свои LLVM-файлы с помощью homebrew, подразумевается ли это, что я не могу включить бэкэнд C++ при использовании версии homebrew? –
Я думаю, вам придется скомпилировать LLVM самостоятельно, вместо того, чтобы использовать существующие двоичные файлы, да. Извините, но у меня нет более подробного ответа, кроме ответа на этот вопрос. – Oak