Я написал проход функции, который инициализирует глобальную переменную, а затем вставляет функцию в IR. Я хотел бы установить результат вызова функции в глобальную переменную, но не знаю, как преобразовать тип CallInst в тип GlobalVariable. Вот код, который я написал для объявления глобальной переменной:
GlobalVariable *virtAddr = new GlobalVariable(*F.getParent(),
Type::getInt8PtrTy(F.getContext(),8),
false,
GlobalValue::ExternalLinkage,
0,
"virt_addr");
virtAddr->setAlignment(4);
Затем я пытаюсь установить глобальную переменную в этой строке:
virtAddr = builder.CreateCall(mmap,putsArgs,"mmap");
Когда я пытаюсь скомпилировать, я получаю такую ошибку:
error: assigning to 'llvm::GlobalVariable *' from incompatible type
'llvm::CallInst *'
Спасибо за любую помощь!