gpt4 book ai didi

llvm - 通过llvm的Dead Code Elimination pass删除一条指令

转载 作者:行者123 更新时间:2023-12-04 05:58:17 28 4
gpt4 key购买 nike

我在 LLVM 中的传递生成了 IR像这样:

%5 = icmp eq i32 %4, 0
%7 = or i1 %5, %5
...

or实际上不需要指令(死代码),我替换了所有出现的 %7%5 .现在, or指令应该被删除。我可以从我的通行证中调用 LLVM 的死代码消除通行证,还是有任何方法可以删除该通行证 or操作说明?

最佳答案

一个更符合 LLVM 设计理念的解决方案是,而不是在 中进行替换。您的 通过,让InstCombine做这份工作。这样您就无需担心运行 DCE。

例如:

>cat foo.ll
define i32 @foo(i32 %a, i32 %b) #0 {
entry:
%or = or i32 %a, %a
ret i32 %or
}
> opt -S -instcombine < foo.ll
define i32 @foo(i32 %a, i32 %b) #0 {
entry:
ret i32 %a
}

关于llvm - 通过llvm的Dead Code Elimination pass删除一条指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238932/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com