llvm generation works