blob: b2f8b58c935731388aa1906b071692208c647f22 [file]
//@ compile-flags: -O
#![crate_type = "lib"]
#![feature(loop_hints)]
unsafe extern "C" {
fn maybe_has_side_effect();
}
#[no_mangle]
pub fn unroll_full() {
// CHECK-LABEL: @unroll_full
// CHECK-COUNT-512: tail call void @maybe_has_side_effect()
#[unroll(full)]
for _ in 0..512 {
unsafe { maybe_has_side_effect() }
}
}
#[no_mangle]
pub fn unroll_never() {
// CHECK-LABEL: @unroll_never
// CHECK: tail call void @maybe_has_side_effect()
// CHECK-NOT: tail call void @maybe_has_side_effect()
#[unroll(never)]
for _ in 0..3 {
unsafe { maybe_has_side_effect() }
}
}
#[no_mangle]
pub fn unroll_count() {
// CHECK-LABEL: @unroll_count
// CHECK-COUNT-5: tail call void @maybe_has_side_effect()
#[unroll(5)]
for _ in 0..10 {
unsafe { maybe_has_side_effect() }
}
}