在克隆函数的上下文中,使用的对象之一是ValueToValueMapTy &VMap,它是typedefValueMap<const Value *, WeakVH>

例如,在cloneFunctionInto(...)中的llvm/lib/Transforms/Utils/CloneFunction.cpp期间使用它

因此,我有问题,可以帮助我阐明其目的:

  • 是否每个llvm::Value在VMap上都有它?或者这仅属于功能或模块或什么?
  • 如何获取特定功能的ValueMap?
  • 其目的是保存函数的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];
    

    08-17 04:53