Я пытаюсь построить нулевой указатель, используя LLVM построить магазин команд строителя для следующего фрагмента кода:LLVM поддержка указатель типа API
int *x;
x = 0;
Проблема, с которой я столкнулся в том, что при назначении нуля до х I я получаю ошибку несовместимого типа, поскольку 0 имеет тип i32, а x имеет тип i32 **. Я использую LLVMPointerType для создания типа указателя для нуля и использования его в построителе BuildStore, но LLVMPointerType возвращает LLVMTypeRef, тогда как для BuildStore нужен тип аргумента LLVMValueRef. Я застрял, не имея возможности набирать текст и действительно могу использовать некоторую помощь.
Также есть другой способ создания указателя NULL в LLVM?
Я пытался использовать LLVMBuildIntToPtr раньше, но он показывает мне ошибку аргументов несовместимого типа, я использую $$ = LLVMBuildIntToPtr (Builder, $ 3, LLVMTypeOf ($ 1), ""); но он бросает мне ошибку и даже с $$ = LLVMBuildStore (Builder, LLVMConstPointerNull ((LLVMPointerType (LLVMTypeOf ($ 3)), 0)), $ 1); это бросает мне ошибку. @IsmailBadawi –
@ManishKhilnani Пожалуйста, укажите код, который вы используете, и конкретные ошибки, возникающие в вопросе. –
$$ = LLVMBuildStore (Builder, (LLVMConstPointerNull (LLVMInt32TypeInContext (Контекст))), $ 1); и это ошибка, которую я получаю :: typename llvm :: cast_retty :: ret_type llvm :: cast (Y *) [с X = llvm :: PointerType; Y = llvm :: Тип; typename llvm :: cast_retty :: ret_type = llvm :: PointerType *]: Утверждение 'isa (Val) &&" cast () аргумент несовместимого типа! "'не удалось. @Ismail Badawi –