pub(crate) fn generate_enzyme_call<'ll, 'tcx>(
bx: &mut GenericBuilder<'_, 'll, FullCx<'ll, 'tcx>>,
fn_to_diff: Value<'ll>,
outer_name: &str,
ret_ty: Type<'ll>,
fn_args: &[Value<'ll>],
attrs: &RustcAutodiff,
dest_layout: TyAndLayout<'tcx>,
dest_place: Option<PlaceValue<Value<'ll>>>,
fnc_tree: FncTree,
) -> IntrinsicResult<'tcx, Value<'ll>>Expand description
When differentiating fn_to_diff, take a outer_fn and generate another
function with expected naming and calling conventions1 which will be
discovered by the enzyme LLVM pass and its body populated with the differentiated
fn_to_diff. outer_fn is then modified to have a call to the generated
function and handle the differences between the Rust calling convention and
Enzyme.