gpt4 book ai didi

LLVM OPT 不提供优化文件作为输出。

转载 作者:行者123 更新时间:2023-12-01 09:12:42 28 4
gpt4 key购买 nike

opt 的手册页说:“它以 LLVM 源文件作为输入,对其运行指定的优化或分析,然后输出优化的文件或分析结果”。

我的目标:使用内置优化 channel -dce可在 opt .此通行证Dead Code Elimination
我的源文件 foo.c :

int foo(void)
{
int a = 24;
int b = 25; /* Assignment to dead variable -- dead code */
int c;
c = a * 4;
return c;
}

这是我所做的:
1. clang-7.0 -S -emit-llvm foo.c -o foo.ll2. opt -dce -S foo.ll -o fooOpt.ll
我的期望 : 一个 .ll 文件,其中删除了死代码(在带有注释的源代码中)部分。

我得到了什么 : fooOpt.ll 与非优化代码 foo.ll 相同

我已经看过 this所以回答,但我没有得到优化的代码。
我在这里错过了什么吗?有人可以指导我走上正确的道路。
谢谢你。

最佳答案

如果您查看由 clang 生成的 .ll 文件,它将包含如下一行:

attributes #0 = { noinline nounwind optnone sspstrong uwtable ...}

您应该删除 optnone属性在这里。每当函数具有 optnone属性, opt根本不会碰那个功能。

现在,如果您再试一次,您会注意到……什么也没有。它仍然不起作用。

这次的问题是代码在内存上工作,而不是在寄存器上。我们需要做的是转换 alloca s 使用 -mem2reg 注册.事实上,这样做已经可以优化掉 b ,所以你甚至不需要 -dce旗帜。

关于LLVM OPT 不提供优化文件作为输出。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49092340/

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