array[5] = 20;
等效LLVM IR
%arrayidx = getelementptr inbounds i32, i32* %2, i64 5
store i32 20, i32* %arrayidx, align 4
如何从LLVM IR中提取5?
答案 0 :(得分:2)
如果您有GetElementPtrInst* GEP
,则可以使用GEP->getOperand(i)
访问索引(操作数0为指针,其余操作数为索引)。要获得值5,您可以检查索引是否为ConstantInt
,如果是,则获取其值,如下所示:
if (ConstantInt *CI = dyn_cast<ConstantInt>(GEP->getOperand(1)) {
uint64_t Idx = CI->getZExtValue();
}