Rollup merge of #78566 - JRF63:polly, r=Mark-Simulacrum
Enable LLVM Polly via llvm-args. I think doing it this way is better than in #51061. Polly has other useful options and we probably don't want to create a `-Z` flag for each one of them. ![results](https://user-images.githubusercontent.com/7283601/97695555-338f7180-1adf-11eb-82bd-5130e0e6fa89.png) [Benchmark](https://gist.github.com/JRF63/9a6268b91720958e90dbe7abffe20298) I noticed that `-lto` seems to interfere with polly in this specific microbenchmark, as enabling it causes the perf to drop to that of non-polly builds. Other related PRs: #75615
This commit is contained in:
commit
7ac079f047
3 changed files with 11 additions and 0 deletions
|
@ -138,6 +138,9 @@ changelog-seen = 2
|
|||
# Whether or not to specify `-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=YES`
|
||||
#allow-old-toolchain = false
|
||||
|
||||
# Whether to include the Polly optimizer.
|
||||
#polly = false
|
||||
|
||||
# =============================================================================
|
||||
# General build configuration options
|
||||
# =============================================================================
|
||||
|
|
|
@ -99,6 +99,7 @@ pub struct Config {
|
|||
pub llvm_version_suffix: Option<String>,
|
||||
pub llvm_use_linker: Option<String>,
|
||||
pub llvm_allow_old_toolchain: Option<bool>,
|
||||
pub llvm_polly: Option<bool>,
|
||||
pub llvm_from_ci: bool,
|
||||
|
||||
pub use_lld: bool,
|
||||
|
@ -418,6 +419,7 @@ struct Llvm {
|
|||
use_libcxx: Option<bool>,
|
||||
use_linker: Option<String>,
|
||||
allow_old_toolchain: Option<bool>,
|
||||
polly: Option<bool>,
|
||||
download_ci_llvm: Option<StringOrBool>,
|
||||
}
|
||||
|
||||
|
@ -762,6 +764,7 @@ impl Config {
|
|||
set(&mut config.llvm_use_libcxx, llvm.use_libcxx);
|
||||
config.llvm_use_linker = llvm.use_linker.clone();
|
||||
config.llvm_allow_old_toolchain = llvm.allow_old_toolchain;
|
||||
config.llvm_polly = llvm.polly;
|
||||
config.llvm_from_ci = match llvm.download_ci_llvm {
|
||||
Some(StringOrBool::String(s)) => {
|
||||
assert!(s == "if-available", "unknown option `{}` for download-ci-llvm", s);
|
||||
|
@ -795,6 +798,7 @@ impl Config {
|
|||
check_ci_llvm!(llvm.use_libcxx);
|
||||
check_ci_llvm!(llvm.use_linker);
|
||||
check_ci_llvm!(llvm.allow_old_toolchain);
|
||||
check_ci_llvm!(llvm.polly);
|
||||
|
||||
// CI-built LLVM is shared
|
||||
config.llvm_link_shared = true;
|
||||
|
|
|
@ -257,6 +257,10 @@ impl Step for Llvm {
|
|||
enabled_llvm_projects.push("compiler-rt");
|
||||
}
|
||||
|
||||
if let Some(true) = builder.config.llvm_polly {
|
||||
enabled_llvm_projects.push("polly");
|
||||
}
|
||||
|
||||
// We want libxml to be disabled.
|
||||
// See https://github.com/rust-lang/rust/pull/50104
|
||||
cfg.define("LLVM_ENABLE_LIBXML2", "OFF");
|
||||
|
|
Loading…
Reference in a new issue