如何检索LLVM中函数调用期间传递的参数?

问题描述

我在 llvm 中有一个调用指令 'call void @calculate_output(i32 %14),!dbg !141'。 我想从中检索值对象 %14。 每当我尝试时,我都会得到形式参数而不是实际参数。

解决方法

如果您获得形式参数,则意味着您使用的是 Function*,而不是 CallInst*。你给call->getFunction()打电话了吗?

您只需要call->getArgOperand(0),请参阅https://llvm.org/doxygen/classllvm_1_1CallBase.html#ab2caa29167597390ab2fc3cf30d70389