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 // Temporarily disabled in #68835 to fix a soundness hole.
31 // fn triangle_inc(n: u64) -> u64 {
39 // // COMMENTEDCHECK-LABEL: @check_triangle_inc
41 // pub fn check_triangle_inc() -> u64 {
42 // // COMMENTEDCHECK: ret i64 5000050000
43 // triangle_inc(100000)
48 fn foo3r(n: u64) -> u64 {
51 (0..=n).rev().for_each(|j| {
58 // CHECK-LABEL: @check_foo3r
60 pub fn check_foo3r() -> u64 {
61 // CHECK: ret i64 500050000000