diff --git a/melior/src/ir/operation/builder.rs b/melior/src/ir/operation/builder.rs index fe68add68a..58257f9b70 100644 --- a/melior/src/ir/operation/builder.rs +++ b/melior/src/ir/operation/builder.rs @@ -78,7 +78,7 @@ impl<'c> OperationBuilder<'c> { mlirOperationStateAddOwnedRegions( &mut self.raw, regions.len() as isize, - transmute::<_, Vec>>(regions).as_ptr() as *const _, + transmute::, Vec>>(regions).as_ptr() as *const _, ) } diff --git a/melior/src/pass/external.rs b/melior/src/pass/external.rs index 4899617bdf..e881d87f4f 100644 --- a/melior/src/pass/external.rs +++ b/melior/src/pass/external.rs @@ -10,7 +10,7 @@ use mlir_sys::{ mlirCreateExternalPass, mlirExternalPassSignalFailure, MlirContext, MlirExternalPass, MlirExternalPassCallbacks, MlirLogicalResult, MlirOperation, }; -use std::{marker::PhantomData, mem::transmute, ptr::drop_in_place}; +use std::{ffi::c_void, marker::PhantomData, mem::transmute, ptr::drop_in_place}; #[derive(Clone, Copy, Debug)] pub struct ExternalPass<'a> { @@ -185,11 +185,24 @@ pub fn create_external<'c, T: RunExternalPass<'c>>( dependent_dialects.len() as isize, dependent_dialects.as_ptr() as _, MlirExternalPassCallbacks { - construct: Some(transmute(callback_construct:: as *const ())), - destruct: Some(transmute(callback_destruct:: as *const ())), - initialize: Some(transmute(callback_initialize:: as *const ())), - run: Some(transmute(callback_run:: as *const ())), - clone: Some(transmute(callback_clone:: as *const ())), + construct: Some(transmute::<*const (), unsafe extern "C" fn(*mut c_void)>( + callback_construct:: as *const (), + )), + destruct: Some(transmute::<*const (), unsafe extern "C" fn(*mut c_void)>( + callback_destruct:: as *const (), + )), + initialize: Some(transmute::< + *const (), + unsafe extern "C" fn(MlirContext, *mut c_void) -> MlirLogicalResult, + >(callback_initialize:: as *const ())), + run: Some(transmute::< + *const (), + unsafe extern "C" fn(MlirOperation, MlirExternalPass, *mut c_void), + >(callback_run:: as *const ())), + clone: Some(transmute::< + *const (), + unsafe extern "C" fn(*mut c_void) -> *mut c_void, + >(callback_clone:: as *const ())), }, Box::into_raw(Box::new(pass)) as _, ))