diff options
| author | bors <bors@rust-lang.org> | 2019-04-04 15:36:17 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-04-04 15:36:17 +0000 |
| commit | 52980d0fb39134a26f73b39b384407e010fc3af5 (patch) | |
| tree | c0e48c613747cfef892c45a792235d84c25e92b4 /src/test/codegen | |
| parent | 2d065712cf96328093400fd0a1a0c4e0f3b1d51c (diff) | |
| parent | 31c2f5d228cd662f7696de666ba98732a1d3be08 (diff) | |
| download | rust-52980d0fb39134a26f73b39b384407e010fc3af5.tar.gz rust-52980d0fb39134a26f73b39b384407e010fc3af5.zip | |
Auto merge of #59695 - Centril:rollup-88qffc2, r=Centril
Rollup of 8 pull requests Successful merges: - #59470 (Document std::fs::File close behavior ignoring errors) - #59555 (update miri) - #59556 (update stdsimd) - #59596 (Forward formatter settings to bounds of `Range<T>` in `fmt::Debug` impl) - #59639 (Never return uninhabited values at all) - #59671 (Make some of lexer's API private) - #59685 (Add description for -Os and -Oz in rustc.1) - #59686 (Temporarily disable stack probing for gnux32.) Failed merges: r? @ghost
Diffstat (limited to 'src/test/codegen')
| -rw-r--r-- | src/test/codegen/noreturn-uninhabited.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/test/codegen/noreturn-uninhabited.rs b/src/test/codegen/noreturn-uninhabited.rs new file mode 100644 index 00000000000..1b65da9f287 --- /dev/null +++ b/src/test/codegen/noreturn-uninhabited.rs @@ -0,0 +1,32 @@ +// compile-flags: -g -C no-prepopulate-passes +// ignore-tidy-linelength + +#![crate_type = "lib"] + +#[derive(Clone, Copy)] +pub enum EmptyEnum {} + +#[no_mangle] +pub fn empty(x: &EmptyEnum) -> EmptyEnum { + // CHECK: @empty({{.*}}) unnamed_addr #0 + // CHECK-NOT: ret void + // CHECK: call void @llvm.trap() + // CHECK: unreachable + *x +} + +pub struct Foo(String, EmptyEnum); + +#[no_mangle] +pub fn foo(x: String, y: &EmptyEnum) -> Foo { + // CHECK: @foo({{.*}}) unnamed_addr #0 + // CHECK-NOT: ret %Foo + // CHECK: call void @llvm.trap() + // CHECK: unreachable + Foo(x, *y) +} + +// CHECK: attributes #0 = {{{.*}} noreturn {{.*}}} + +// CHECK: DISubprogram(name: "empty", {{.*}} DIFlagNoReturn +// CHECK: DISubprogram(name: "foo", {{.*}} DIFlagNoReturn |
