在克隆函数的上下文中,其中一个使用的对象是ValueToValueMapTy &VMap
typedef
ValueMap<const Value *, WeakVH>
。
例如,它在cloneFunctionInto(...)
llvm/lib/Transforms/Utils/CloneFunction.cpp
期间使用
因此,我有问题,这有助于我澄清其目的:
llvm::Value
都有自己的VMap吗?或者这仅属于函数或模块或什么?llvm::Values
的信息是否正确?PS:
我已经检查了那些可能对其他人提出有关Vmap问题的链接,但没有一个能完全回答我的问题。
What to pass for the vmap argument of CloneFunction in llvm?
答案 0 :(得分:1)
CloneFunction中ValueMap的用途是记录源函数中的值到克隆函数中的值的映射。
示例:
Function *F;
Value *V = /* some register in F */;
ValueToValueMapTy VMap;
auto *Clone = CloneFunction(F, VMap);
// V2 represents essentially the same register as V,
// except it's in Clone instead of F
Value *V2 = VMap[V];