rustc: Add -C lto=val option
This commit primarily adds the ability to control what kind of LTO happens when rustc performs LTO, namely allowing values to be specified to the `-C lto` option, such as `-C lto=thin` and `-C lto=fat`. (where "fat" is the previous kind of LTO, throw everything in one giant module) Along the way this also refactors a number of fields which store information about whether LTO/ThinLTO are enabled to unify them all into one field through which everything is dispatched, hopefully removing a number of special cases throughout. This is intended to help mitigate #47409 but will require a backport as well, and this would unfortunately need to be an otherwise insta-stable option.
This commit is contained in:
parent
4e3901d35f
commit
8bde2acfc7
9 changed files with 222 additions and 116 deletions
17
src/test/run-pass/thinlto/all-crates.rs
Normal file
17
src/test/run-pass/thinlto/all-crates.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// 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: -Clto=thin
|
||||
// no-prefer-dynamic
|
||||
// min-llvm-version 4.0
|
||||
|
||||
fn main() {
|
||||
println!("hello!");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue