在克隆函数的上下文中,使用的对象之一是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?
Filling the LLVM CloneFunction VMAP
LLVM CloneFunction.cpp
最佳答案
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];