about summary refs log tree commit diff
path: root/tests/codegen
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-09-23 16:38:20 +0000
committerbors <bors@rust-lang.org>2023-09-23 16:38:20 +0000
commit19c65022fc1ad9cc3d3dcf50a0bdf50e4ab572ab (patch)
tree4fb7a29211df14a7ee9e12ea9b673e27540bec70 /tests/codegen
parent3050938abd423f9e37466cc4cd4129c9b8cc427c (diff)
parentd5ec9af09da9f6d96b350ee53fffdad58721d32e (diff)
downloadrust-19c65022fc1ad9cc3d3dcf50a0bdf50e4ab572ab.tar.gz
rust-19c65022fc1ad9cc3d3dcf50a0bdf50e4ab572ab.zip
Auto merge of #116047 - a-lafrance:I80836-codegen-test, r=Mark-Simulacrum
Add codegen test to guard against VecDeque optimization regression

Very small PR that adds a codegen test to guard against regression for the `VecDeque` optimization addressed in #80836. Ensures that Rustc optimizes away the panic when unwrapping the result of `.get(0)` because of the `!is_empty()` condition.
Diffstat (limited to 'tests/codegen')
-rw-r--r--tests/codegen/vecdeque-nonempty-get-no-panic.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/codegen/vecdeque-nonempty-get-no-panic.rs b/tests/codegen/vecdeque-nonempty-get-no-panic.rs
new file mode 100644
index 00000000000..c2877d2d0ca
--- /dev/null
+++ b/tests/codegen/vecdeque-nonempty-get-no-panic.rs
@@ -0,0 +1,17 @@
+// Guards against regression for optimization discussed in issue #80836
+
+// compile-flags: -O
+// ignore-debug: the debug assertions get in the way
+
+#![crate_type = "lib"]
+
+use std::collections::VecDeque;
+
+// CHECK-LABEL: @front
+// CHECK: ret void
+#[no_mangle]
+pub fn front(v: VecDeque<usize>) {
+    if !v.is_empty() {
+        v.get(0).unwrap();
+    }
+}