| //@ compile-flags: -Copt-level=3 | |
| //@ ignore-std-debug-assertions | |
| // (with debug assertions turned on, `assert_unchecked` generates a real assertion) | |
| #![crate_type = "lib"] | |
| #![feature(try_with_capacity)] | |
| // CHECK-LABEL: @with_capacity_does_not_grow1 | |
| #[no_mangle] | |
| pub fn with_capacity_does_not_grow1() -> Vec<u32> { | |
| let v = Vec::with_capacity(1234); | |
| // CHECK: call {{.*}}__rust_alloc( | |
| // CHECK-NOT: call {{.*}}__rust_realloc | |
| // CHECK-NOT: call {{.*}}capacity_overflow | |
| // CHECK-NOT: call {{.*}}finish_grow | |
| // CHECK-NOT: call {{.*}}reserve | |
| // CHECK-NOT: memcpy | |
| // CHECK-NOT: memset | |
| v | |
| } | |
| // CHECK-LABEL: @try_with_capacity_does_not_grow2 | |
| #[no_mangle] | |
| pub fn try_with_capacity_does_not_grow2() -> Option<Vec<Vec<u8>>> { | |
| let v = Vec::try_with_capacity(1234).ok()?; | |
| // CHECK: call {{.*}}__rust_alloc( | |
| // CHECK-NOT: call {{.*}}__rust_realloc | |
| // CHECK-NOT: call {{.*}}capacity_overflow | |
| // CHECK-NOT: call {{.*}}finish_grow | |
| // CHECK-NOT: call {{.*}}handle_alloc_error | |
| // CHECK-NOT: call {{.*}}reserve | |
| // CHECK-NOT: memcpy | |
| // CHECK-NOT: memset | |
| Some(v) | |
| } |