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

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

*ArrayType* jump_buf_type = ArrayType::get(IntegerType::get(M.getContext(), 8), 80);
GlobalVariable* jmp_buf_llvm = new GlobalVariable(M, 
         jump_buf_type,
         false,
         GlobalValue::ExternalLinkage,
         0,
         "jmp_buf_llvm");

Приведенный выше метод создает глобальный массив, а возвращаемая переменная jmp_buf_llvm имеет тип [80 x i8]*

Однако мне трудно получить указатель i8*. Я хочу передать созданный массив в качестве аргумента внутренней функции llvm.eh.sjlj.setjmp. Любое предложение о том, как получить указатель i8* из массива?

0 ответов

Другие вопросы по тегам