unsafe fn gen_basic_block_defs(&mut self, context: &mut FunctionContext<'_>) -> WeldResult<()> {
        for bb in context.sir_function.blocks.iter() {
            let name = CString::new(format!("b{}", bb.id)).unwrap();
            let block =
                LLVMAppendBasicBlockInContext(self.context, context.llvm_function, name.as_ptr());
            context.blocks.insert(bb.id, block);
        }
        Ok(())
    }
Generates code to define each basic block in the function.

This function does not actually generate the basic block code: it only adds the basic
blocks to the context so they can be forward referenced if necessary.
weld/src/codegen/llvm2/mod.rs