llvm-project/llvm/test/Transforms/LICM/call_sink_const_function.ll

17 lines
366 B
LLVM

; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -licm | llvm-dis | %prcontext sin 1 | grep Out:
declare double %sin(double)
declare void %foo()
double %test(double %X) {
br label %Loop
Loop:
call void %foo() ;; Unknown effects!
%A = call double %sin(double %X) ;; Can still hoist/sink call
br bool true, label %Loop, label %Out
Out:
ret double %A
}