| //! Regression test for <https://github.com/rust-lang/rust/issues/36474>. |
| //! This used to trigger LLVM assertion when compiled with opt level 3. |
| //@ compile-flags: -Copt-level=3 |
| //@ run-pass |
| |
| fn main() { |
| remove_axis(&3, 0); |
| } |
| |
| trait Dimension { |
| fn slice(&self) -> &[usize]; |
| } |
| |
| impl Dimension for () { |
| fn slice(&self) -> &[usize] { &[] } |
| } |
| |
| impl Dimension for usize { |
| fn slice(&self) -> &[usize] { |
| unsafe { |
| ::std::slice::from_raw_parts(self, 1) |
| } |
| } |
| } |
| |
| fn remove_axis(value: &usize, axis: usize) -> () { |
| let tup = (); |
| let mut it = tup.slice().iter(); |
| for (i, _) in value.slice().iter().enumerate() { |
| if i == axis { |
| continue; |
| } |
| it.next(); |
| } |
| } |