llvm block generation