在 LLVM 中,如何获取值的 ValuetoValueMapTy (VMap)?它的目的是什么?
In LLVM, how can I get a Value's ValuetoValueMapTy (VMap)? What its purpose?
在克隆函数的上下文中,使用的对象之一是 ValueToValueMapTy &VMap
,它是 ValueMap<const Value *, WeakVH>
的 typedef
。
比如在cloneFunctionInto(...)
期间用在llvm/lib/Transforms/Utils/CloneFunction.cpp
因此我有 问题 可以帮助我阐明其目的:
- 每个
llvm::Value
都有它的 VMap 吗?或者这只属于功能或模块或什么?
- 如何为特定函数获取此 ValueMap?
- 它的目的是保存函数
llvm::Values
的信息是否正确?
ps.:
我已经查看了那些可能对其他人在 Vmap 上提问有帮助的链接,但是 none 可以完全回答我的问题。
What to pass for the vmap argument of CloneFunction in llvm?
Filling the LLVM CloneFunction VMAP
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];
在克隆函数的上下文中,使用的对象之一是 ValueToValueMapTy &VMap
,它是 ValueMap<const Value *, WeakVH>
的 typedef
。
比如在cloneFunctionInto(...)
期间用在llvm/lib/Transforms/Utils/CloneFunction.cpp
因此我有 问题 可以帮助我阐明其目的:
- 每个
llvm::Value
都有它的 VMap 吗?或者这只属于功能或模块或什么? - 如何为特定函数获取此 ValueMap?
- 它的目的是保存函数
llvm::Values
的信息是否正确?
ps.:
我已经查看了那些可能对其他人在 Vmap 上提问有帮助的链接,但是 none 可以完全回答我的问题。
What to pass for the vmap argument of CloneFunction in llvm?
Filling the LLVM CloneFunction VMAP
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];