如何强制LLVM -loop-unroll优化?

时间:2019-06-05 12:22:18

标签: llvm llvm-ir

我有一个基本的IR保存到fact.ll文件中:

define i32 @factorial(i32 %val) {
entry:
  %i = add i32 0, 2
  %temp = add i32 0, 1
  br label %check_for_condition

check_for_condition:
  %i_leq_val = icmp sle i32 %i, %val
  br i1 %i_leq_val, label %for_body, label %end_loop 

for_body:
  %new_temp = mul i32 %temp, %i 
  %i_plus_one = add i32 %i, 1 
  br label %check_for_condition

end_loop:
  ret i32 %temp
}

这是迭代阶乘函数的表示。

如何使用LLVM工具将该IR转换为优化的IR?我尝试使用此命令获取展开循环的IR:

opt -loop-unroll fact.ll -S

但是上面的命令打印几乎相同的IR代码。我尝试添加-unroll-count之类的不同标志,但这没有任何区别。

我对LLVM中的循环展开优化的理解是否错误,并且此步骤仅在C ++前端中发生?

0 个答案:

没有答案