Указатель LLVM как параметр функции - PullRequest
1 голос
/ 07 июня 2019

Я пытаюсь передать глобальную переменную в функцию в качестве параметра и изменить эту переменную внутри функции

У меня есть ИК-код следующим образом

@n = common global i32 0

declare i32 @readln(i32)

declare i32 @writeln(i32)

define i32 @main() {
entry:
  %n = load i32, i32* @n, align 4
  %calltmp = call i32 @readln(i32 %n)
  %n1 = load i32, i32* @n, align 4
  %calltmp2 = call i32 @writeln(i32 %n1)
  ret i32 0
}

readln определен в отдельном модуле как функция C

int readln(int * x) {
    return  scanf("%d", x);
}

при запуске я получаю segmentation fault 11 Что я делаю не так?

1 Ответ

0 голосов
/ 07 июня 2019

комментарий правильный.вдохновлять этим

Builder.CreateLoad(Builder.CreateIntToPtr(Value,Type::getInt32PtrTy(TheContext)), "ptr");
Builder.CreateIntToPtr(Value,Type::getInt32PtrTy(TheContext));
...