LLVM IR:获取呼叫站点的返回值

问题描述 投票:0回答:1

这是一个关于分析LLVM IR的快速问题。所以基本上我试图获取LLVM IR函数调用语句的返回值,如下所示:

%47  =   call i256 @test(i256 %46)

我想访问%47

这是我用来访问参数的代码。

      else if (funcName.contains("test")) {
        Value *op = CI->getOperand(0);
        if (GetElementPtrInst *GEP = dyn_cast<GetElementPtrInst>(op))
          // get the first function parameter
          op = GEP->getPointerOperand();
      }

非常令人惊讶的发现是我在文档中找不到像“获取返回值”这样的东西:qazxsw poi

谁能在这里点灯?非常感谢。

llvm llvm-ir
1个回答
4
投票

http://llvm.org/doxygen/classllvm_1_1CallInst.htmlCI指令)是它的返回值。它有一种继承call的类型。

如果你想做Value,就像一个例子,你做一个这样的加法:1 + %47反过来,add指令是它的结果,而Value * Add = BinaryOperation::Create(Instruction::Add, CI, ConstantInt::get(i256, 1), ...);因为它是两个值都有Add->getType() == i256类型的总和。

© www.soinside.com 2019 - 2024. All rights reserved.