检测a";“合并”;LLVM IR指令?

检测a";“合并”;LLVM IR指令?,llvm,llvm-ir,Llvm,Llvm Ir,我可以通过getCalledFunction()轻松找到此IR call指令中的免费内容: 然而,我似乎不知道如何在这个调用指令中找到它: %call7 = call i32 bitcast (i32 (...)* @free to i32 (%struct.Bar*)*)(%struct.Bar* %7), !dbg !56 此指令将位广播与调用指令相结合。我不确定“组合”是否合适,但无论如何,我怎么能在这里发现自由 我试着把dyn_播送到一个Bitcast,但事实并非如此。我甚至首先使用了

我可以通过getCalledFunction()轻松找到此IR call指令中的免费内容:

然而,我似乎不知道如何在这个调用指令中找到它:

%call7 = call i32 bitcast (i32 (...)* @free to i32 (%struct.Bar*)*)(%struct.Bar* %7), !dbg !56
此指令将位广播与调用指令相结合。我不确定“组合”是否合适,但无论如何,我怎么能在这里发现自由

我试着把dyn_播送到一个Bitcast,但事实并非如此。我甚至首先使用了getCalledPerand()并尝试将从中获得的值转换为比特广播,但它仍然没有检测到它。我将非常感谢您的帮助


谢谢

@arnt在评论中回答了这个问题,所以我为其他人添加了答案


@arnt:调用的第一个参数是一个ConstantExpr,由getBitCast返回。cast(foo)->getOperator(0)将返回空闲值。

哪个doxygen版本?它看起来有点像汇编程序,doxygen对汇编程序一无所知。您能否创建一个小的、自包含的示例(即使用
doxygen-x
生成的源和配置设置),让我们重现问题?调用的第一个参数是
cast(foo)->GetOperator(0)
将返回免费的。@albert:这是LLVM-IR代码,问题与Doxygen无关。我现在删除了不正确的标记。注意:文本中仍然有对doxygen的引用。@arnt Bingo就是这么做的!非常感谢你!
%call7 = call i32 bitcast (i32 (...)* @free to i32 (%struct.Bar*)*)(%struct.Bar* %7), !dbg !56