访问LLVM中函数调用的参数值

时间:2017-07-21 17:55:09

标签: c++11 llvm llvm-ir llvm-c++-api llvm-4.0

在我的LLVM IR中,我有许多函数调用,如下所示:

%2 = invoke i16 @"_ZN41_$LT$std..sync..mpsc..Sender$LT$T$GT$$GT$4send17h3c94bf47bc6c3500E"(%"std::sync::mpsc::Sender<weather::Weather>"* dereferenceable(16) %weather_sender, i8 %1)
      to label %bb4 unwind label %cleanup, !dbg !717

我想静态分析它们,以便找到最后一个参数%_6的值。 有没有办法获得它的价值?我试图直接访问参数,但这只是给我加载/分配参数的指令。所以这个:

if (InvokeInst* ii = dyn_cast<InvokeInst>(&instr)) {
    Value* v = ii->getArgOperand(ii->getNumArgOperands() - 1);
    v->dump();
}

只给我%1 = load i8, i8* %_5, !dbg !717,加载说明给我

0 个答案:

没有答案