С llvm, какие опции мне нужно передать на opt
, чтобы оптимизировать тривиальные вызовы функций?
Скажем, у меня есть код llvm с такими вызовами:
tail call void @myfunc(i8* null)
С myfun c примерно так:
; Function Attrs: noinline norecurse nounwind
define linkonce_odr void @myfunc(i8* %.1) local_unnamed_addr #0 {
.3:
%.4 = icmp eq i8* %.1, null
br i1 %.4, label %.3.if, label %.3.endif, !prof !0
.3.if: ; preds = %.3
ret void
.3.endif: ; preds = %.3
%.7 = bitcast i8* %.1 to i64*
%.4.i = atomicrmw add i64* %.7, i64 1 monotonic
ret void
}
Поскольку myfun c ничего не делает для ввода null
, вызов функции можно оптимизировать. Я знаю, что llvm может это сделать, но мне не ясно, какой вариант мне нужно для этого передать opt
.