blob: db4a62480a3a1091517a40f8d188099cf0f1040f [file] [log] [blame] [edit]
//! Profiling markers for compiler instrumentation.
/// Profiling marker for move operations.
///
/// This function is never called at runtime. When `-Z annotate-moves` is enabled,
/// the compiler creates synthetic debug info that makes move operations appear as
/// calls to this function in profilers.
///
/// The `SIZE` parameter encodes the size of the type being copied. It's the same as
/// `size_of::<T>()`, and is only present for convenience.
#[unstable(feature = "profiling_marker_api", issue = "148197")]
#[lang = "compiler_move"]
pub fn compiler_move<T, const SIZE: usize>(_src: *const T, _dst: *mut T) {
unreachable!(
"compiler_move marks where the compiler-generated a memcpy for moves. It is never actually called."
)
}
/// Profiling marker for copy operations.
///
/// This function is never called at runtime. When `-Z annotate-moves` is enabled,
/// the compiler creates synthetic debug info that makes copy operations appear as
/// calls to this function in profilers.
///
/// The `SIZE` parameter encodes the size of the type being copied. It's the same as
/// `size_of::<T>()`, and is only present for convenience.
#[unstable(feature = "profiling_marker_api", issue = "148197")]
#[lang = "compiler_copy"]
pub fn compiler_copy<T, const SIZE: usize>(_src: *const T, _dst: *mut T) {
unreachable!(
"compiler_copy marks where the compiler-generated a memcpy for Copies. It is never actually called."
)
}