about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-05-26 03:22:39 +0000
committerbors <bors@rust-lang.org>2018-05-26 03:22:39 +0000
commit67d99d91e572f335675c47201c476d9fdd17da79 (patch)
treeb3aef037b13b26a15c12193056b17c2a3145fc3b
parent49a97ef010c731974f167174bb2e10465dfe745b (diff)
parent0b1b26f17f783858ad746b49adb9681c88e81a46 (diff)
Auto merge of #51035 - oli-obk:unsupported_crate_type, r=eddyb
Don't ICE if crate has no valid crate types left

fixes #50993
-rw-r--r--src/librustc_codegen_llvm/base.rs2
-rw-r--r--src/test/ui/issue-50993.rs18
-rw-r--r--src/test/ui/issue-50993.stderr2
3 files changed, 21 insertions, 1 deletions
diff --git a/src/librustc_codegen_llvm/base.rs b/src/librustc_codegen_llvm/base.rs
index 59d227557ae..8660c0bcc6c 100644
--- a/src/librustc_codegen_llvm/base.rs
+++ b/src/librustc_codegen_llvm/base.rs
@@ -642,7 +642,7 @@ fn write_metadata<'a, 'gcx>(tcx: TyCtxt<'a, 'gcx, 'gcx>,
             config::CrateTypeDylib |
             config::CrateTypeProcMacro => MetadataKind::Compressed,
         }
-    }).max().unwrap();
+    }).max().unwrap_or(MetadataKind::None);
 
     if kind == MetadataKind::None {
         return (metadata_llcx,
diff --git a/src/test/ui/issue-50993.rs b/src/test/ui/issue-50993.rs
new file mode 100644
index 00000000000..d6cdd738001
--- /dev/null
+++ b/src/test/ui/issue-50993.rs
@@ -0,0 +1,18 @@
+// Copyright 2018 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.
+
+// compile-flags: --crate-type dylib --target thumbv7em-none-eabihf
+// compile-pass
+// error-pattern: dropping unsupported crate type `dylib` for target `thumbv7em-none-eabihf`
+
+#![feature(no_core)]
+
+#![no_std]
+#![no_core]
diff --git a/src/test/ui/issue-50993.stderr b/src/test/ui/issue-50993.stderr
new file mode 100644
index 00000000000..d7b33a22e9c
--- /dev/null
+++ b/src/test/ui/issue-50993.stderr
@@ -0,0 +1,2 @@
+warning: dropping unsupported crate type `dylib` for target `thumbv7em-none-eabihf`
+