fn gen_fn<'ll, 'tcx>(
    cx: &CodegenCx<'ll, 'tcx>,
    name: &str,
    rust_fn_sig: PolyFnSig<'tcx>,
    codegen: &mut dyn FnMut(Builder<'_, 'll, 'tcx>)
) -> (&'ll Type, &'ll Value)