about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-10-30 08:57:39 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-10-30 09:29:24 -0700
commitf3ba5186758589983f13e088ce9ee2003265b9c5 (patch)
tree1255abb7311703fa741920d0651fd028e54d49be
parentce63fbc7bdc08d313c569bd3b5ba04dd97dd44ca (diff)
parent89e8caadae53fb0429ee95a5f1e2c07b2adc2728 (diff)
downloadrust-f3ba5186758589983f13e088ce9ee2003265b9c5.tar.gz
rust-f3ba5186758589983f13e088ce9ee2003265b9c5.zip
rollup merge of #18411 : richo/tm-null-check
-rw-r--r--src/librustc/back/write.rs20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/librustc/back/write.rs b/src/librustc/back/write.rs
index 1a53db89196..031fc731f41 100644
--- a/src/librustc/back/write.rs
+++ b/src/librustc/back/write.rs
@@ -226,12 +226,10 @@ fn create_target_machine(sess: &Session) -> TargetMachineRef {
         }
     };
 
-    unsafe {
-        sess.targ_cfg
-             .target_strs
-             .target_triple
-             .as_slice()
-             .with_c_str(|t| {
+    let triple = sess.targ_cfg.target_strs.target_triple.as_slice();
+
+    let tm = unsafe {
+            triple.with_c_str(|t| {
             sess.opts.cg.target_cpu.as_slice().with_c_str(|cpu| {
                 target_feature(sess).with_c_str(|features| {
                     llvm::LLVMRustCreateTargetMachine(
@@ -249,7 +247,15 @@ fn create_target_machine(sess: &Session) -> TargetMachineRef {
                 })
             })
         })
-    }
+    };
+
+    if tm.is_null() {
+        llvm_err(sess.diagnostic().handler(),
+                 format!("Could not create LLVM TargetMachine for triple: {}",
+                         triple).to_string());
+    } else {
+        return tm;
+    };
 }