Вопросы по теме 'llvm-ir'
Язык вывода компилятора — LLVM IR против C
Каковы преимущества и недостатки использования LLVM IR по сравнению с C для целевого языка при написании компилятора? Я знаю, что используются оба, и я полагаю, что окончательный машинный код был бы похож, если бы я использовал clang для компиляции...
2920 просмотров
schedule
06.12.2023
Ошибка в ModulePass с установкой преемника BasicBlock
В следующем коде в LLVM
unsigned ii=0;
BasicBlock* Bb = &*i;
TerminatorInst *TI = i->getTerminator();
for( std::set<BasicBlock*>::iterator rit=Result.begin(); rit!=Result.end();++rit,++ii)
{...
325 просмотров
schedule
28.08.2022
Связывание нескольких модулей LLVM C++ вместе segfaults в lli
Я пробую очень простой пример с LLVM/clang и, кажется, терплю неудачу.
Я пробую следующее:
clang++ -emit-llvm -c -x c++ -o main.bc -isystem include/ main.cc
clang++ -emit-llvm -c -x c++ -o test_class.bc -isystem include/ test_class.cc...
858 просмотров
schedule
12.05.2023
Изменение исходного кода во время компиляции (с использованием LLVM)
#include <stdio.h>
#include <string.h>
int foo(char* a)
{ char str[10];
if (strlen(a)<10)
{
sprintf(str,"Yes");
puts(str);
return 0;
}
else
{
sprintf(str,"No");...
207 просмотров
schedule
29.08.2022
Как объявить функцию в LLVM и определить ее позже
Как я могу объявить функцию в LLVM (с определенной подписью) и создать для нее вызов, например.
llvm::Value* return = m_builder.CreateCall( function, arguments );
но затем определить тело функции позже (которая должна быть функцией...
3833 просмотров
schedule
19.08.2022
Как преобразовать тип CallInst в GlobalVariable в LLVM
Я написал проход функции, который инициализирует глобальную переменную, а затем вставляет функцию в IR. Я хотел бы установить результат вызова функции в глобальную переменную, но не знаю, как преобразовать тип CallInst в тип GlobalVariable. Вот код,...
622 просмотров
schedule
27.02.2023
LLVM конвертирует константу в значение
Я использую пользовательский проход LLVM, где, если я сталкиваюсь с хранилищем, в котором компилятор преобразует значение в константу; например есть явное хранилище:
X[gidx] = 10;
Тогда LLVM выдаст эту ошибку:
aoc:...
539 просмотров
schedule
09.04.2023
Как узнать тип переменной в коде llvm
Есть ли способ узнать тип переменных в коде LLVM?
Например, у меня есть следующий код:
%i = alloca i32, align 4
store i32 1, i32* %i, align 4
%n = add i32 6, 1
br label %2
И я хочу функцию, которая возвращает тип каждой из переменных %i ,...
1069 просмотров
schedule
02.02.2023
LLVM - Какие оптимизации сделал интерфейс
Я знаю, что внешний интерфейс (такой как llvm-clang или llvm-gcc) также сделал некоторые оптимизации от собственного кода до уровня IR.
Но какие оптимизации сделал этот интерфейс? Есть ли список или документ, который я могу проверить.
Спасибо.
236 просмотров
schedule
02.05.2022
Получите циклы ЦП LLVM IR с помощью CostModel
Начиная с LLVM 3.0, в каталоге Analysis находится CostModel.cpp. Ссылаясь на свой документ, он говорит
Этот файл определяет анализ модели затрат. Он дает очень простую оценку стоимости LLVM-IR. В этом анализе используются услуги...
525 просмотров
schedule
11.04.2022
Запускает ли clang -S -emit-llvm file.cpp какие-либо другие исполняемые файлы, кроме clang?
Запускает ли clang -S -emit-llvm file.cpp (компиляция исходного кода C++ в LLVM IR) какие-либо другие исполняемые файлы, кроме clang за сценой (например, компоновщик или что-то еще)?
241 просмотров
schedule
11.10.2022
llvm: VisitInstruction не посещает каждую инструкцию в базовом блоке?
Я пытаюсь написать простой проход в базовом блоке, и код выглядит следующим образом:
struct SimplePass : BasicBlockPass, InstVisitor<SimplePass>
{
... some initialisation and some finalization code
virtual bool...
276 просмотров
schedule
03.12.2022
LLVM вызывает Loop Pass из функции Pass
Я пишу проход функции LLVM. Я хотел бы вызвать Loop Pass для каждого из циклов в функции. Однако я не могу вызвать Loop Pass из Function Pass. Когда я добавляю addRequired для требуемого прохода цикла, выдается ошибка, что он не может запланировать...
612 просмотров
schedule
18.11.2023
Добавление встроенных функций с помощью прохода LLVM
Я добавил внутреннюю функцию во входной код, используя проход LLVM. Я могу видеть внутренний вызов, но не могу понять, как скомпилировать код для моей целевой архитектуры (x86_64). Я выполняю следующую команду:
clang++ $(llvm-config --ldflags...
2762 просмотров
schedule
30.03.2023
Как выполняется инструкция llvm IR Order alloca
Я заметил, что llvm IR пытается выделить пробелы в самом начале функции независимо от места объявления переменных внутри функции в исходном коде C. Я хочу знать, как упорядочены эти инструкции alloca. Я предполагаю, что это первый аргумент функции,...
298 просмотров
schedule
20.03.2023
LLVM ParseIR Segfault
Я пытаюсь скомпилировать функцию ("fun") для LLVM IR и создать модуль с помощью функции ParseIR. Программа segfaults при вызове ParseIR. Я использую LLVM 3.5, код ниже.
#include <cstdio>
#include <iostream>
#include <sstream>...
823 просмотров
schedule
28.02.2024
Как вызвать @printf в LLVM через систему построения модулей
Я изучаю LLVM. Я понимаю, что это ряд полезных функций C, которые уже встроены в LLVM. Итак, я пытаюсь вызвать функцию @printf из своего кода.
Я нашел соответствующие части в справочном руководстве LLVM, которые описывают IR-код для этого, что...
7225 просмотров
schedule
17.03.2022
Какой код в LLVM IR запускается перед main ()?
Кто-нибудь знает общее правило, для которого именно IR-код LLVM будет выполняться до main ?
При использовании Clang ++ 3.6 создается впечатление, что конструкторы глобальных переменных класса вызываются через функцию в разделе ".text.startup"...
1605 просмотров
schedule
06.11.2022
Позволяет ли Alea GPU сохранять IR-код LLVM в цепочке компиляции?
Nvidia не разрешает доступ к сгенерированному LLVM IR в потоке компиляции ядра графического процессора, написанного на CUDA C/C++. Я хотел бы знать, возможно ли это, если я использую Alea GPU? Другими словами, позволяет ли процедура компиляции Alea...
191 просмотров
schedule
07.10.2022
Как я могу написать интерфейсный проход LLVM для вставки инструкции в начале/конце каждого BasicBlock?
Я попытался использовать AllocaInst и вставил его в конец данного BB следующим образом:
bool runOnBasicBlock(BasicBlock &BB) override {
// BB is the address to a BasicBlock instance
errs() << BB.getName() << '\t';...
339 просмотров
schedule
19.01.2024