Вопросы по теме 'llvm-c++-api'

Как вызвать функцию JITed LLVM с неизвестным типом?
Я реализую интерфейс для JIT-компилятора с использованием LLVM. Я начал с примера с калейдоскопом в учебнике по LLVM. Я знаю, как сгенерировать LLVM IR и JIT с помощью LLVM C ++ API. Я также знаю, как вызвать функцию JITed, используя метод...
1279 просмотров
schedule 12.05.2023

Неопределенный символ для загружаемого модуля LoopPass
Я создаю проход цикла, следуя этим инструкциям: http://llvm.org/docs/WritingAnLLVMPass.html Все работает нормально, я делал это много раз для проходов функций, но в методе runOnLoop всякий раз, когда я вызываю метод цикла L, переданный в качестве...
732 просмотров
schedule 17.02.2023

Как преобразовать тип CallInst в GlobalVariable в LLVM
Я написал проход функции, который инициализирует глобальную переменную, а затем вставляет функцию в IR. Я хотел бы установить результат вызова функции в глобальную переменную, но не знаю, как преобразовать тип CallInst в тип GlobalVariable. Вот код,...
622 просмотров
schedule 27.02.2023

llvm: VisitInstruction не посещает каждую инструкцию в базовом блоке?
Я пытаюсь написать простой проход в базовом блоке, и код выглядит следующим образом: struct SimplePass : BasicBlockPass, InstVisitor<SimplePass> { ... some initialisation and some finalization code virtual bool...
276 просмотров
schedule 03.12.2022

Сбой на AU.addRequired‹LoopInfo›(); в проходе LLVM
У меня есть простой проход функции, и я пытаюсь получить информацию о цикле в коде. Но когда я пытаюсь добавить AU.addRequired() в getAnalysisUsage(), модуль падает. Это происходит еще до вызова getAnalysis(). Это динамически загружаемый проход...
681 просмотров
schedule 30.08.2022

Clang-3.8 undefined ссылка на `main 'при компиляции объектного файла из байт-кода llvm с глобальными переменными
Я пытаюсь реализовать вложенные функции в llvm через C ++ API. После того, как я выполняю семантическую проверку (чтобы убедиться, что программа, которая будет скомпилирована, имеет правильные ссылки на вложение и т. Д.), Я определяю все функции в...
1059 просмотров
schedule 01.01.2023

Как сопоставить несколько циклов одного типа под функцией с сгенерированным базовым блоком в LLVM IR?
Если циклы разного типа, я могу легко идентифицировать их по имени, но если есть несколько циклов одного типа (скажем, 5 while циклов), как я могу определить, какой базовый блок в LLVM IR соответствует какому циклу в исходном коде? код? Вручную...
86 просмотров
schedule 25.02.2023

Ошибка сегментации GEP LLVM C ++ API
Я уверен, что это действительно просто, но я пытался разобраться в этом больше часа и не могу понять. Следующий код дает мне ошибку сегментации: Value *newArray = mBuilder.CreateGEP(alloca, value); // alloca is a `StructType` но это не...
744 просмотров
schedule 13.03.2022

Запуск конвейера оптимизации по умолчанию с использованием современного LLVM.
Я использую LLVM 7, и у меня есть llvm::Module , который я хотел бы оптимизировать с помощью стандартного конвейера оптимизации. К сожалению, нет функции llvm::runDefaultOptimizations , которую я мог бы вызвать. Кажется, существует огромное...
1118 просмотров
schedule 30.11.2022

Как запустить проход модуля в LLVM
Я пытаюсь найти способ оптимизировать пустые глобальные конструкторы. Предыдущие оптимизации превратили конструкторы в функции, которые ничего не делают. Мне нужно добавить новый проход, чтобы удалить эти функции из llvm.global_ctors ....
523 просмотров
schedule 18.06.2023

LLVM: Как установить аргумент CreateCall для имени BasicBlock?
Я хочу создать вызов внешней функции, и эта функция получает аргументы как int и const char* (ОСОБЕННО ИМЯ БАЗОВОГО БЛОКА, а не настраиваемая строка) (или std::string может подойти). Но я понятия не имею, как установить аргумент функции как...
1006 просмотров
schedule 24.07.2023

Как создать встроенную инструкцию GetElementPtr?
У меня есть такой фрагмент кода ( systemFun определяется как i32 @system(i8*) ): auto cmdPtr = GetElementPtrInst::CreateInBounds( ArrayType::get(TYPE8, 1 + cmdCStr.size()), cmdStr, ArrayRef<Value*>(indexList, 2), "",...
242 просмотров
schedule 23.09.2022

Как связать стандартную библиотеку С++ в JIT LLVM?
У меня есть пользовательские функции, написанные на С++, и они используют множество стандартных библиотек С++, таких как iostream , map , vector , я могу добавить свои функции в JIT, используя addObjectFile , но standard libraries' functions не...
345 просмотров
schedule 18.05.2023

API LLVM C++ создает ошибки структурного сегмента
Я изучаю LLVM с помощью C++ API и пытаюсь понять, как создавать структуры и использовать их. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь выделить структуру, происходит ошибка сегментации. llvm::LLVMContext ctx;...
64 просмотров
schedule 15.04.2022

Как связать все библиотеки LLVM в cmake?
Я хочу связать все библиотеки LLVM в моем проекте cmake C++. Я использую llvm-config --components для получения всех компонентов LLVM, это дает мне: $ llvm-config --components aarch64 aarch64asmparser aarch64codegen aarch64desc...
738 просмотров
schedule 05.07.2022