let module: ModuleCodegen<ModuleLlvm> = match costliest_module {
Some((_cost, i)) => in_memory.remove(i),
None => {
- assert!(serialized_modules.len() > 0, "must have at least one serialized module");
+ assert!(!serialized_modules.is_empty(), "must have at least one serialized module");
let (buffer, name) = serialized_modules.remove(0);
info!("no in-memory regular modules to choose from, parsing {:?}", name);
ModuleCodegen {
// tools/lto/LTOCodeGenerator.cpp
debug!("running the pass manager");
unsafe {
+ if write::should_use_new_llvm_pass_manager(config) {
+ let opt_stage = if thin { llvm::OptStage::ThinLTO } else { llvm::OptStage::FatLTO };
+ let opt_level = config.opt_level.unwrap_or(config::OptLevel::No);
+ // See comment below for why this is necessary.
+ let opt_level = if let config::OptLevel::No = opt_level {
+ config::OptLevel::Less
+ } else {
+ opt_level
+ };
+ write::optimize_with_new_llvm_pass_manager(cgcx, module, config, opt_level, opt_stage);
+ debug!("lto done");
+ return;
+ }
+
let pm = llvm::LLVMCreatePassManager();
llvm::LLVMAddAnalysisPasses(module.module_llvm.tm, pm);
if line.is_empty() {
let importing_module = current_module.take().expect("Importing module not set");
imports.insert(importing_module, mem::replace(&mut current_imports, vec![]));
- } else if line.starts_with(" ") {
+ } else if line.starts_with(' ') {
// Space marks an imported module
assert_ne!(current_module, None);
current_imports.push(line.trim().to_string());