DataLayout* dataLayout = new DataLayout(&module);
Value* memoryPointer = loadInstruction->getPointerOperand();
PointerType* pointerType = cast<PointerType>(memoryPointer->getType());
uint64_t storeSize = dataLayout->getTypeStoreSize(pointerType->getPointerElementType());
이 코드는 llvm-3.7에서 작동합니다. storeSize
은 피연산자의 크기 (바이트)입니다. 여기서 module
은 모듈 패스에서 매개 변수로 가져 오는 모듈 포인터입니다. getPointerOperand
함수는로드 및 저장 명령어 모두에서 작동합니다. 함수 getTypeStoreSize
에 대한 reference입니다. 당신의 필요에 따라 사용할 수있는 getTypeStoreSizeInBits
, getTypeAllocSize
기타 기능이 있습니다.