|  | //@ compile-flags: -Copt-level=3 | 
|  | //@ only-64bit (because we're using [ui]size) | 
|  |  | 
|  | #![crate_type = "lib"] | 
|  | #![feature(slice_from_ptr_range)] | 
|  |  | 
|  | // This is intentionally using a non-power-of-two array length, | 
|  | // as that's where the optimization differences show up | 
|  |  | 
|  | // CHECK-LABEL: @flatten_via_ptr_range | 
|  | #[no_mangle] | 
|  | pub fn flatten_via_ptr_range(slice_of_arrays: &[[i32; 13]]) -> &[i32] { | 
|  | // CHECK-NOT: lshr | 
|  | // CHECK-NOT: udiv | 
|  | // CHECK: mul nuw nsw i64 %{{.+}}, 13 | 
|  | // CHECK-NOT: lshr | 
|  | // CHECK-NOT: udiv | 
|  | let r = slice_of_arrays.as_ptr_range(); | 
|  | let r = r.start.cast()..r.end.cast(); | 
|  | unsafe { core::slice::from_ptr_range(r) } | 
|  | } |