Implement recursive call unrolling and more in order to optimize the LLVM IR output to allow for strong optimizations