about summary refs log tree commit diff
path: root/src/test/codegen
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2018-05-24 12:03:05 -0700
committerAlex Crichton <alex@alexcrichton.com>2018-05-24 12:03:05 -0700
commitf67453729c19b435686c94936d8145051e7f1284 (patch)
tree029525400c5744b7251bfaa55b8f04a6449bd5ee /src/test/codegen
parenta76bff86e6f4b56b2c3fd1704ce8535ed207dd78 (diff)
downloadrust-f67453729c19b435686c94936d8145051e7f1284.tar.gz
rust-f67453729c19b435686c94936d8145051e7f1284.zip
std: Ensure OOM is classified as `nounwind`
OOM can't unwind today, and historically it's been optimized as if it can't
unwind. This accidentally regressed with recent changes to the OOM handler, so
this commit adds in a codegen test to assert that everything gets optimized away
after the OOM function is approrpiately classified as nounwind

Closes #50925
Diffstat (limited to 'src/test/codegen')
-rw-r--r--src/test/codegen/vec-iter-collect-len.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/test/codegen/vec-iter-collect-len.rs b/src/test/codegen/vec-iter-collect-len.rs
new file mode 100644
index 00000000000..efb384d0afb
--- /dev/null
+++ b/src/test/codegen/vec-iter-collect-len.rs
@@ -0,0 +1,21 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// no-system-llvm
+// compile-flags: -O
+#![crate_type="lib"]
+
+#[no_mangle]
+pub fn get_len() -> usize {
+    // CHECK-LABEL: @get_len
+    // CHECK-NOT: call
+    // CHECK-NOT: invoke
+    [1, 2, 3].iter().collect::<Vec<_>>().len()
+}