about summary refs log tree commit diff
path: root/src/test/codegen
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-04-06 06:07:42 +0000
committerbors <bors@rust-lang.org>2017-04-06 06:07:42 +0000
commite5e92753cc3e12c3c468b6badaf340fe4443145c (patch)
treead85ffcb0203d3ff2468ce31afb4ef0cd03759f2 /src/test/codegen
parent1a9b382168cbf405589fbba7215ace700c067879 (diff)
parent89b364d687b7a3d16fb9553f7b5b0c034c406d91 (diff)
downloadrust-e5e92753cc3e12c3c468b6badaf340fe4443145c.tar.gz
rust-e5e92753cc3e12c3c468b6badaf340fe4443145c.zip
Auto merge of #41102 - frewsxcv:rollup, r=frewsxcv
Rollup of 5 pull requests

- Successful merges: #40908, #41011, #41026, #41037, #41050
- Failed merges:
Diffstat (limited to 'src/test/codegen')
-rw-r--r--src/test/codegen/personality_lifetimes.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/test/codegen/personality_lifetimes.rs b/src/test/codegen/personality_lifetimes.rs
new file mode 100644
index 00000000000..e0de64b26df
--- /dev/null
+++ b/src/test/codegen/personality_lifetimes.rs
@@ -0,0 +1,41 @@
+// 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.
+
+// ignore-msvc
+
+// compile-flags: -O -C no-prepopulate-passes
+
+#![crate_type="lib"]
+
+struct S;
+
+impl Drop for S {
+    fn drop(&mut self) {
+    }
+}
+
+fn might_unwind() {
+}
+
+// CHECK-LABEL: @test
+#[no_mangle]
+pub fn test() {
+    let _s = S;
+    // Check that the personality slot alloca gets a lifetime start in each cleanup block, not just
+    // in the first one.
+    // CHECK-LABEL: cleanup:
+    // CHECK: bitcast{{.*}}personalityslot
+    // CHECK-NEXT: call void @llvm.lifetime.start
+    // CHECK-LABEL: cleanup1:
+    // CHECK: bitcast{{.*}}personalityslot
+    // CHECK-NEXT: call void @llvm.lifetime.start
+    might_unwind();
+    might_unwind();
+}