2 // ignore-debug: the debug assertions get in the way
6 // verify that LLVM recognizes a loop involving 0..=n and will const-fold it.
8 //------------------------------------------------------------------------------
9 // Example from original issue #45222
11 fn foo2(n: u64) -> u64 {
14 for j in (0..=n).rev() {
21 // CHECK-LABEL: @check_foo2
23 pub fn check_foo2() -> u64 {
24 // CHECK: ret i64 500005000000000
28 //------------------------------------------------------------------------------
29 // Simplified example of #45222
31 fn triangle_inc(n: u64) -> u64 {
39 // CHECK-LABEL: @check_triangle_inc
41 pub fn check_triangle_inc() -> u64 {
42 // CHECK: ret i64 5000050000
46 //------------------------------------------------------------------------------
49 fn foo3r(n: u64) -> u64 {
52 (0 ..= n).rev().for_each(|j| {
59 // CHECK-LABEL: @check_foo3r
61 pub fn check_foo3r() -> u64 {
62 // CHECK: ret i64 500050000000