전역 변수를 초기화 한 다음 함수를 IR에 삽입하는 함수 단계를 작성했습니다. 전역 변수에 대한 함수 호출의 결과를 설정하고 싶지만 CallInst 유형을 GlobalVariable 유형으로 변환하는 방법이 확실하지 않습니다. 내가 컴파일 할 때LLVM에서 CallInst Type을 GlobalVariable로 변환하는 방법
virtAddr = builder.CreateCall(mmap,putsArgs,"mmap");
, 나는이 오류가 :
GlobalVariable *virtAddr = new GlobalVariable(*F.getParent(),
Type::getInt8PtrTy(F.getContext(),8),
false,
GlobalValue::ExternalLinkage,
0,
"virt_addr");
virtAddr->setAlignment(4);
가 그럼 난이 줄 전역 변수를 설정하려고 : 여기 전역 변수 선언 작성한 코드입니다 :
error: assigning to 'llvm::GlobalVariable *' from incompatible type
'llvm::CallInst *'
어떤 도움을 주셔서 감사합니다!
대단히 감사합니다! 이 줄을 추가 할 수있었습니다 : builder.CreateStore (x, virtAddr, false); 결국 내가 원하는 IR 코드를 제공하게되었습니다. 여기서 x는 값 유형이 builder.CreateCall (mmap, putsArgs, "mmap")으로 설정된 값입니다. – Josh