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 // Example from original issue #45222
10 fn foo2(n: u64) -> u64 {
13 for j in (0..=n).rev() {
20 // CHECK-LABEL: @check_foo2
22 pub fn check_foo2() -> u64 {
23 // CHECK: ret i64 500005000000000
27 // Simplified example of #45222
29 fn triangle_inc(n: u64) -> u64 {
37 // CHECK-LABEL: @check_triangle_inc
39 pub fn check_triangle_inc() -> u64 {
40 // CHECK: ret i64 5000050000
46 fn foo3r(n: u64) -> u64 {
49 (0 ..= n).rev().for_each(|j| {
56 // CHECK-LABEL: @check_foo3r
58 pub fn check_foo3r() -> u64 {
59 // CHECK: ret i64 500050000000