【问题标题】:How to turn off the constant folding optimization in llvm如何关闭llvm中的常量折叠优化
【发布时间】:2019-01-22 03:29:17
【问题描述】:

我是 clang 和 llvm 的新手。我正在尝试从 c 源代码生成未优化的位代码版本。我发现生成的位代码具有我不想要的常量折叠优化。 我正在使用这个命令:clang -O0 -Xclang -disable-O0-optnone test1.c -S -emit-llvm -o test1.ll

test1.c 文件代码如下:

int test() {
int y;
y = 2 * 4;
return y;
}

test1.ll 文件的内容:

它不是生成将 2 和 4 相乘的指令,而是通过执行常量折叠操作直接存储值 8: 存储 i32 8, i32* %1, 对齐 4

如果有人好心让我知道我缺少什么以及我应该如何关闭不断折叠优化,那就太好了。我使用的 llvm 版本是 6.0.0。

谢谢。

【问题讨论】:

  • 不要发布代码截图,而是粘贴代码。

标签: llvm llvm-clang llvm-ir


【解决方案1】:

如果有人好心让我知道我缺少什么以及我应该如何关闭不断折叠优化,那就太好了。我使用的 llvm 版本是 6.0.0。

这是 Clang 功能,即使使用 -O0 也无法关闭。要解决此问题,请尝试将变量设为全局变量,将它们作为参数传递给函数,或者手动编写 IR。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 2021-05-08
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多