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

Как получить номер строки определения переменной и т. Д. С помощью метаданных dbg?
Насколько я знаю, когда мне нужно было получить номер строки локальной переменной, мне пришлось искать вызов встроенных функций llvm.dbg.declare и получать метаданные dbg (поскольку сам AllocaInst не содержит никакой информации о dbg). Однако,...
1089 просмотров
schedule 14.12.2023

Передача массива во внешнюю функцию
Я новичок в LLVM и учусь использовать LLVM для профилирования. Мне нужно передать массив внешнему методу и вставить в код инструкцию вызова метода. В настоящее время я использую следующий код, который при выполнении дает ошибку сегментации....
2142 просмотров
schedule 20.10.2022

Доступ к переменной Element of Array в llvm
Я хочу получить значение массива по индексу переменной. Индекс вычисляется программой и неизвестен во время синтаксического анализа. Таким образом, он хранится в значении и преобразуется в Int следующим образом: Value *IndexV =...
1802 просмотров
schedule 26.02.2024

LLVM вставляет код операции перед инструкцией
Я хочу вставить определенный код операции перед терминатором BasicBlock, в моем случае перед ReturnInst. Возможно? Пример: TerminatorInst* terminator = BasicBlock->getTerminator(); if (isa<ReturnInst>(terminator)) { //Insert...
1140 просмотров
schedule 30.04.2024

Сгенерировать двоичный код (разделяемую библиотеку) из встроенного LLVM на C ++
Я работаю над высокопроизводительной системой, написанной на C ++. Процесс должен понимать некоторую сложную логику (правила) во время выполнения, написанную на простом языке, разработанном для этого приложения. У нас есть два варианта:...
4234 просмотров
schedule 28.03.2022

Как привести указатель функции к значению LLVM, чтобы я мог вызывать его в своем IR?
Я работаю над чем-то вроде JIT. У меня такой код: Obj doSomething(Obj o, Selector sel){ ... } И у меня есть указатель на эту функцию, мой вопрос в том, как мне обернуть указатель в LLVM:Value , чтобы я мог вставить его в свой ИК-порт,...
1806 просмотров
schedule 27.08.2022

Свяжите метаданные с базовыми блоками LLVM на этапе анализа
Как я могу сохранить информацию о каждом базовом блоке, созданную в пользовательском проходе анализа LLVM, чтобы сделать ее доступной в будущих проходах оптимизации? Например, предположим, что я создаю класс FunctionPass для реализации анализа...
398 просмотров
schedule 13.03.2023

LLVM - Как получить переменную результата инструкции
Я новичок в LLVM, и у меня простая проблема, но я не могу найти решение в документации. Я выполняю проход функции, который вычисляет инструкции, и для этого мне нужны все «данные» из инструкции, я имею в виду оператор, все операнды и результат....
2240 просмотров
schedule 11.12.2023

Своевременная компиляция с использованием libclang и LLVM C
У меня есть программное обеспечение, способное генерировать код C, который я хотел бы использовать в контексте компиляции точно в срок. Насколько я понимаю, LLVM/Clang — это то, что нужно, и для удобства сопровождения проекта я хотел бы использовать...
839 просмотров
schedule 01.02.2023

Для чего нужны все слои LLVM?
Я играю с LLVM 3.7 и хотел использовать новые возможности ORC. Но я занимаюсь этим уже несколько часов и до сих пор не понимаю, для чего нужен каждый слой, когда их использовать, как их составлять или, по крайней мере, минимальный набор вещей,...
913 просмотров
schedule 12.02.2024

Как легко добавить объявления в модуль LLVM?
Я пишу свой собственный язык в LLVM и использую внешние функции C из стандартных и пользовательских. Теперь я добавляю объявления, используя классы C++ для LLVM IR. Как это: void register_malloc(llvm::Module *module) {...
984 просмотров
schedule 22.07.2023

Создание объединений с помощью LLVM C++ Api
Я использую LLVM для вставки функции, аргументы которой являются объединением, и я действительно изо всех сил пытаюсь понять, как создать аргумент объединения. Я не могу найти ничего об определении типов объединения в API LLVM (тип объединения на...
158 просмотров

Добавление атрибута inreg к параметрам функции LLVM IR
Я работаю с LLVM и хочу воссоздать часть IR с помощью API: declare void @fun(i32* inreg, i32 inreg) Но я не могу заставить его на самом деле сделать это. Моя текущая попытка: Function* fun =...
933 просмотров

Заполнение LLVM CloneFunction VMAP
Я хочу написать некоторый код, который, учитывая функцию LLVM F, создает точную копию в том же модуле (чтобы копией можно было манипулировать позже, сохраняя оригинал). Я хочу сделать это с помощью метода CloneFunctionInto. Моя текущая попытка...
718 просмотров

Как отладить jitted-функцию в llvm?
Я хочу отладить jit-функцию. как и в приведенном ниже исходном коде, я хочу отладить функцию FibF, но когда я отлаживаю ее с помощью gdb, кажется, что она не может попасть в область действия функции. Как его отладить? заранее спасибо. // We are...
561 просмотров
schedule 20.07.2023

К чему приводит инструкция SELECT в ISA?
При векторизации, если цикл содержит «конструкции if», llvm пытается сгладить их, заменяя инструкциями SELECT, чтобы сделать поток управления прямым, если базовые блоки нельзя превратить в предикативные инструкции, такие как SELECT, llvm не может их...
498 просмотров
schedule 08.08.2023

Как вызвать код LLVM из программы на С++ и передать ей данные
У меня есть программа на С++, которая может генерировать LLVM IR во время выполнения. Теперь я хочу скомпилировать этот IR в двоичный файл из моей программы на С++ и вызвать двоичный файл. Также перед вызовом я хочу передать данные из моей программы...
110 просмотров
schedule 29.12.2022

LLVM-выравнивание вложенных структур/массивов
Я хочу получить точное байтовое представление вложенных типов данных структуры/массива. Например, следующая структура C: typedef struct zTy { int x; char c[2]; struct { char d; } v; } z; Он преобразуется в следующий LLVM IR:...
1405 просмотров
schedule 29.05.2023

Как добавить бэкенд-проход X86 в LLVM без пересборки всевозможных разделяемых библиотек, включая clang?
Как добавить бэкенд-проход X86 в LLVM без пересборки всевозможных разделяемых библиотек, включая clang? Изучив некоторое время ( IR / opt ) "средний конец" LLVM, я решил перейти к бэкенду. Здесь я создал очень простой MachineFunctionPass...
268 просмотров
schedule 20.05.2023

Перебор циклов с помощью LoopInfoWrapperPass в llvm
Я использую LoopInfoWrapperPass для создания Loopinfo, но тогда я не могу использовать Loopinfo для повторения циклов в моей функции, вот код. Я получаю сообщение об ошибке сборки при использовании команды make #include "llvm/Pass.h" #include...
655 просмотров
schedule 22.11.2022