From 870024a16047341644e31d6ba7617162c205d204 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 26 Dec 2013 22:27:06 -0800 Subject: [PATCH] Disallow LTO with a preference to dynamic linking Closes #11154 --- src/librustc/back/lto.rs | 6 ++++++ src/test/compile-fail/issue-11154.rs | 15 +++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/test/compile-fail/issue-11154.rs diff --git a/src/librustc/back/lto.rs b/src/librustc/back/lto.rs index 2425b36687e..ced8fa68f59 100644 --- a/src/librustc/back/lto.rs +++ b/src/librustc/back/lto.rs @@ -19,6 +19,12 @@ use std::libc; pub fn run(sess: session::Session, llmod: ModuleRef, tm: TargetMachineRef, reachable: &[~str]) { + if sess.prefer_dynamic() { + sess.err("cannot prefer dynamic linking when performing LTO"); + sess.note("only 'staticlib' and 'bin' outputs are supported with LTO"); + sess.abort_if_errors(); + } + // Make sure we actually can run LTO let outputs = sess.outputs.borrow(); for output in outputs.get().iter() { diff --git a/src/test/compile-fail/issue-11154.rs b/src/test/compile-fail/issue-11154.rs new file mode 100644 index 00000000000..47f86e52eae --- /dev/null +++ b/src/test/compile-fail/issue-11154.rs @@ -0,0 +1,15 @@ +// Copyright 2013 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// compile-flags: -Z lto -Z prefer-dynamic + +// error-pattern: cannot prefer dynamic linking + +fn main() {}