繁体   English   中英

O3 是一个固定的优化序列吗? 以及如何更改 LLVM IR 中的帧指针值?

[英]Is O3 a fixed optimization sequence? And how to change frame-pointer value in LLVM IR?

我用下面的命令找出clang O3的顺序,

$ opt -enable-new-pm=0 -O3 -debug-pass=Arguments input.ll

我得到了一个很长的优化序列。

所有代码的顺序是否相同? 还是O3可以根据源码改顺序?

而且,我发现如果我使用-O0标志来生成 IR 文件,属性可能是这样的,

attributes #0 = { noinline nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-pr    otector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-    features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }

我们可以看到frame-pointer = all的值,我认为这可能会让代码变慢。 (使用O3标志会变成none

如何通过opt命令更改此值?

多谢。

是的,所有输入的优化序列都相同。 但请注意opt的 -O3 可能与clang的 -O3 不同。

至于禁用帧指针,您可以将其删除

  • 使用-fomit-frame-pointer使用clang生成 LLVM IR 时
  • 使用opt优化 LLVM IR 时使用-frame-pointer=none

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM