【发布时间】:2021-10-24 22:00:44
【问题描述】:
Clang 有 loop flattening pass 从嵌套循环转换:
for (int i = 0; i < N; ++i)
for (int j = 0; j < M; ++j)
f(A[i*M+j]);
进入一个循环:
for (int i = 0; i < (N*M); ++i)
f(A[i]);
但是,我找不到如何启用此循环展平通道。
我尝试使用-Os -S,但是,clang 仍然会生成嵌套循环。
问题:如何查看loop flattening pass的效果?使用哪些选项?
UPD。我在 Windows 上使用 clang 版本 12.0.0。
【问题讨论】:
标签: loops clang llvm compiler-optimization flatten