Описание тега llvm-c++-api

LLVM is a collection of modular and reusable compiler and toolchain technologies. LLVM C++ API is the external interface users of the library employ to implement their compiler.
0 ответов

Существует ли LLVM API для установки пакета операндов funclet при обработке исключений LLVM/MSVC?

Я использую библиотеки LLVM 3.9.1 Core для реализации внешнего интерфейса компилятора, ориентированного на Windows x64. В настоящее время я реализую обработку исключений. Для Windows x64 target LLVM генерирует так называемые funclets для кода перехв…
27 фев '17 в 13:33
1 ответ

Ошибка при использовании GetElementPtrInst с ArrayRef, содержащим более одного значения

Я пытаюсь написать игрушечный компилятор с LLVM и C++. Но всякий раз, когда я пытаюсь создать GetElementPtrInst с несколькими индексами, возникает ошибка Segfault. Документация по этой инструкции мне не помогла ( API-Documentation Language-Documenta…
25 июн '12 в 08:45
1 ответ

Сборка LLVM, проблемы с передачей строки в API C LLVMSetValueName

После успешной сборки LLVM с использованием MinGW я сейчас пытаюсь использовать C API для реализации программы. В качестве начального приложения, чтобы увидеть, была ли успешной сборка, я преобразовал пример llvmpy, найденный здесь http://www.llvmpy…
13 май '14 в 17:09
0 ответов

Как добавить проход Reg2Mem для addRequired() в LLVM?

Я хочу удалить фи-узлы из моих IR-файлов llvm, поэтому я прочитал, что проход Reg2Mem является решением (почему?). Я могу легко использовать этот пропуск из opt инструмент, указав -reg2mem в качестве аргумента. Тем не менее, я хочу, чтобы эта функци…
10 мар '17 в 18:42
1 ответ

std::unordered_map Ошибка в объявлении

В Execution.cppМне нужно добавить unordered_map, Я использовал следующую инструкцию: #include <unordered_map> std::unordered_map<StringRef, std::unordered_map<StringRef, struct IntRel>> BinaryRel; но это вызывает следующие ошибки: …
01 апр '18 в 15:37
1 ответ

Девиртуализация C++ во время выполнения?

Существуют ли методы / библиотеки, которые позволяют гибко иметь иерархию классов (которая имеет virtual функции) все же, как только типы объектов были определены во время выполнения, допускает девиртуализацию вызовов функций? Для простого примера, …
1 ответ

lldb неразрешенная точка останова через API C++

У меня есть исполняемый модуль iCoreTest.exe, который динамически загружает библиотеку IRTest.rs. Я хочу отладить его через API-интерфейс lldb C++. Когда я создаю процесс "iCoreTest.exe" под lldb через lldb::SBTarget::Launch(..); все отлично работае…
22 сен '16 в 11:01
0 ответов

Как мне сказать LLVM вставить мой InlineAsm в исполняемый файл без каких-либо изменений?

Как мне сказать LLVM ввести InlineAsm в исполняемый файл без каких-либо изменений? У меня есть последовательность InlineAsmвнутри моего LLVM ModulePass, что я хочу быть уверен, будет вставлен в конкретную функцию без каких-либо изменений, таких как …
29 апр '17 в 17:35
1 ответ

Идентификация определяющей пользователя функции через lvm pass

Есть ли способ, с помощью которого я могу определить, является ли функция вызываемого абонента пользовательской или нет? Например: void foo() { printf("hello world again"); } int main() { printf("hello world\n"); foo(); } Как и в этом случае, foo() …
29 май '14 в 08:58
1 ответ

Как отобразить несколько циклов одного и того же типа под функцией в сгенерированный базовый блок в LLVM IR?

Если циклы имеют другой тип, то я могу легко идентифицировать их по имени, но если есть несколько циклов одного типа (скажем, 5 while петли), как я могу определить, какой базовый блок в IR LLVM соответствует какой петле в исходном коде? Вручную легк…
22 дек '17 в 04:55
1 ответ

LLVM: постоянные переменные

Как я могу получить все переменные (из файла байт-кода или IR-файла) с модификатором const или переменные, которые не были изменены при выполнении? Мне нужно составить список для дальнейшего использования.
27 ноя '13 в 07:24
0 ответов

Как использовать внутреннюю функцию llvm.eh.sjlj.setjmp в llvm

Я пытаюсь вставить внутреннюю функцию llvm.eh.sjlj.setjmp в мой проход LLVM. Из документации эта функция берет один аргумент, который является указателем i8* на буфер из пяти слов, который сохраняет текущую среду. Я использую следующий метод для соз…
19 окт '17 в 20:01
1 ответ

Доступ к переменной Element of Array в llvm

Я хочу получить значение массива по индексу переменной. Индекс рассчитывается программой и не известен во время анализа. Таким образом, он сохраняется в Value и преобразуется в Int следующим образом: Value *IndexV = Index->Codegen(); Value *IntV …
11 апр '13 в 23:19
1 ответ

LLVM получает операнд и lvalue имя инструкции

Для инструкций LLVM IR, таких как %cmp7 = icmp eq i32 %6 %7 Я хочу получить все три имени регистра / символа (т.е. %cmp %6 and %7) Теперь я могу получить строку %cmp по команде pi->getName() где пи - указатель инструкции. Но когда я пытаюсь получ…
26 июн '14 в 15:38
2 ответа

Ошибка LLVM при доступе к loopinfo при передаче функции

Я пытаюсь получить информацию о цикле от IR, написав проход функции. Поэтому я последовал некоторым примерам и написал так: Я не очень знаком с написанием пропусков и менеджеров пропусков. #include <iostream> #include "llvm/LLVMContext.h" #inc…
23 сен '14 в 22:45
0 ответов

LLVM запускает PassManager (не устаревший)

Как мне запустить не унаследованный PassManager? Я попытался сделать следующее, но при попытке сделать недействительным диспетчер анализа в функции запуска возникло исключение. Есть ли что-то еще, что я должен сделать для инициализации? llvm::Analys…
31 июл '17 в 08:27
1 ответ

Выполнение стандартной оптимизации проходит на модуле LLVM

Скажем, у меня есть действующий модуль LLVM: std::unique_ptr<llvm::Module> module; Я хочу запустить на этом традиционные этапы оптимизации LLVM: llvm::PassBuilder passBuilder; llvm::ModulePassManager modulePassManager = passBuilder.buildPerMod…
27 ноя '18 в 14:24
2 ответа

Clang Tool: переписать ObjCMessageExpr

Я хочу переписать все сообщения в моем коде, мне нужно заменить только селекторы, но мне нужно иметь возможность заменить вложенные выражения, например: [super foo:[someInstance someMessage:@""] foo2:[someInstance someMessage2]]; Я пытался сделать э…
06 дек '13 в 08:02
1 ответ

Выполнить все пропуски LLVM

У меня есть модуль LLVM, и мне было интересно, есть ли простой способ запустить все проходы оптимизации LLVM с использованием API C++ для -O3 (без необходимости регистрировать каждый проход отдельно).
25 июн '15 в 22:29
1 ответ

Заполнение LLVM CloneFunction VMAP

Я хочу написать некоторый код, который, учитывая функцию F LLVM, создает точную копию в том же модуле (таким образом, копия может быть изменена позже при сохранении оригинала). Я хочу сделать это с помощью метода CloneFunctionInto. Моя текущая попыт…
16 фев '16 в 19:45