// Check that draining at the front or back doesn't copy memory.

//@ compile-flags: -Copt-level=3
//@ needs-deterministic-layouts
//@ ignore-std-debug-assertions (FIXME: checks for call detect scoped noalias metadata)

#![crate_type = "lib"]

use std::collections::VecDeque;

// CHECK-LABEL: @clear
// CHECK-NOT: call
// CHECK-NOT: br {{.*}}
// CHECK: getelementptr inbounds
// CHECK-NEXT: {{call void @llvm.memset|store}}
// CHECK-NEXT: ret void
#[no_mangle]
pub fn clear(v: &mut VecDeque<i32>) {
    v.drain(..);
}

// CHECK-LABEL: @truncate
// CHECK-NOT: call
// CHECK: br {{.*}}
// CHECK-NOT: call
// CHECK: br {{.*}}
// CHECK-NOT: call
// CHECK: br {{.*}}
// CHECK-NOT: call
// CHECK: br {{.*}}
// CHECK-NOT: call
// CHECK-NOT: br {{.*}}
// CHECK: ret void
#[no_mangle]
pub fn truncate(v: &mut VecDeque<i32>, n: usize) {
    if n < v.len() {
        v.drain(n..);
    }
}

// CHECK-LABEL: @advance
// CHECK-NOT: call
// CHECK: br {{.*}}
// CHECK-NOT: call
// CHECK: br {{.*}}
// CHECK-NOT: call
// CHECK: br {{.*}}
// CHECK-NOT: call
// CHECK: br {{.*}}
// CHECK-NOT: call
// CHECK: br {{.*}}
// CHECK-NOT: call
// CHECK-NOT: br {{.*}}
// CHECK: ret void
#[no_mangle]
pub fn advance(v: &mut VecDeque<i32>, n: usize) {
    if n < v.len() {
        v.drain(..n);
    } else {
        v.clear();
    }
}

// CHECK-LABEL: @remove
// CHECK: call
// CHECK: ret void
#[no_mangle]
pub fn remove(v: &mut VecDeque<i32>, a: usize, b: usize) {
    v.drain(a..b);
}
