codegen_llvm_back: whitespace & formatting fixes
This commit is contained in:
parent
06118eac4c
commit
1d1dc48407
7 changed files with 53 additions and 62 deletions
|
@ -83,6 +83,7 @@ impl<'a> ArchiveBuilder<'a> {
|
||||||
if self.src_archive().is_none() {
|
if self.src_archive().is_none() {
|
||||||
return Vec::new()
|
return Vec::new()
|
||||||
}
|
}
|
||||||
|
|
||||||
let archive = self.src_archive.as_ref().unwrap().as_ref().unwrap();
|
let archive = self.src_archive.as_ref().unwrap().as_ref().unwrap();
|
||||||
let ret = archive.iter()
|
let ret = archive.iter()
|
||||||
.filter_map(|child| child.ok())
|
.filter_map(|child| child.ok())
|
||||||
|
|
|
@ -47,8 +47,8 @@ use std::str;
|
||||||
use syntax::attr;
|
use syntax::attr;
|
||||||
|
|
||||||
pub use rustc_codegen_utils::link::{find_crate_name, filename_for_input, default_output_for_target,
|
pub use rustc_codegen_utils::link::{find_crate_name, filename_for_input, default_output_for_target,
|
||||||
invalid_output_for_target, out_filename, check_file_is_writeable,
|
invalid_output_for_target, filename_for_metadata,
|
||||||
filename_for_metadata};
|
out_filename, check_file_is_writeable};
|
||||||
|
|
||||||
// The third parameter is for env vars, used on windows to set up the
|
// The third parameter is for env vars, used on windows to set up the
|
||||||
// path for MSVC to find its DLLs, and gcc to find its bundled
|
// path for MSVC to find its DLLs, and gcc to find its bundled
|
||||||
|
@ -147,9 +147,7 @@ pub(crate) fn link_binary(sess: &Session,
|
||||||
|
|
||||||
// Remove the temporary object file and metadata if we aren't saving temps
|
// Remove the temporary object file and metadata if we aren't saving temps
|
||||||
if !sess.opts.cg.save_temps {
|
if !sess.opts.cg.save_temps {
|
||||||
if sess.opts.output_types.should_codegen() &&
|
if sess.opts.output_types.should_codegen() && !preserve_objects_for_their_debuginfo(sess) {
|
||||||
!preserve_objects_for_their_debuginfo(sess)
|
|
||||||
{
|
|
||||||
for obj in codegen_results.modules.iter().filter_map(|m| m.object.as_ref()) {
|
for obj in codegen_results.modules.iter().filter_map(|m| m.object.as_ref()) {
|
||||||
remove(sess, obj);
|
remove(sess, obj);
|
||||||
}
|
}
|
||||||
|
@ -814,8 +812,8 @@ fn link_natively(sess: &Session,
|
||||||
.unwrap_or_else(|_| {
|
.unwrap_or_else(|_| {
|
||||||
let mut x = "Non-UTF-8 output: ".to_string();
|
let mut x = "Non-UTF-8 output: ".to_string();
|
||||||
x.extend(s.iter()
|
x.extend(s.iter()
|
||||||
.flat_map(|&b| ascii::escape_default(b))
|
.flat_map(|&b| ascii::escape_default(b))
|
||||||
.map(|b| char::from_u32(b as u32).unwrap()));
|
.map(|b| char::from_u32(b as u32).unwrap()));
|
||||||
x
|
x
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -1012,8 +1010,7 @@ fn exec_linker(sess: &Session, cmd: &mut Command, out_filename: &Path, tmpdir: &
|
||||||
// ensure the line is interpreted as one whole argument.
|
// ensure the line is interpreted as one whole argument.
|
||||||
for c in self.arg.chars() {
|
for c in self.arg.chars() {
|
||||||
match c {
|
match c {
|
||||||
'\\' |
|
'\\' | ' ' => write!(f, "\\{}", c)?,
|
||||||
' ' => write!(f, "\\{}", c)?,
|
|
||||||
c => write!(f, "{}", c)?,
|
c => write!(f, "{}", c)?,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,11 +205,11 @@ pub(crate) fn run(cgcx: &CodegenContext,
|
||||||
Lto::Fat => {
|
Lto::Fat => {
|
||||||
assert!(cached_modules.is_empty());
|
assert!(cached_modules.is_empty());
|
||||||
let opt_jobs = fat_lto(cgcx,
|
let opt_jobs = fat_lto(cgcx,
|
||||||
&diag_handler,
|
&diag_handler,
|
||||||
modules,
|
modules,
|
||||||
upstream_modules,
|
upstream_modules,
|
||||||
&symbol_white_list,
|
&symbol_white_list,
|
||||||
timeline);
|
timeline);
|
||||||
opt_jobs.map(|opt_jobs| (opt_jobs, vec![]))
|
opt_jobs.map(|opt_jobs| (opt_jobs, vec![]))
|
||||||
}
|
}
|
||||||
Lto::Thin |
|
Lto::Thin |
|
||||||
|
@ -310,8 +310,8 @@ fn fat_lto(cgcx: &CodegenContext,
|
||||||
unsafe {
|
unsafe {
|
||||||
let ptr = symbol_white_list.as_ptr();
|
let ptr = symbol_white_list.as_ptr();
|
||||||
llvm::LLVMRustRunRestrictionPass(llmod,
|
llvm::LLVMRustRunRestrictionPass(llmod,
|
||||||
ptr as *const *const libc::c_char,
|
ptr as *const *const libc::c_char,
|
||||||
symbol_white_list.len() as libc::size_t);
|
symbol_white_list.len() as libc::size_t);
|
||||||
cgcx.save_temp_bitcode(&module, "lto.after-restriction");
|
cgcx.save_temp_bitcode(&module, "lto.after-restriction");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -617,8 +617,7 @@ fn run_pass_manager(cgcx: &CodegenContext,
|
||||||
llvm::LLVMRustAddPass(pm, pass.unwrap());
|
llvm::LLVMRustAddPass(pm, pass.unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
time_ext(cgcx.time_passes, None, "LTO passes", ||
|
time_ext(cgcx.time_passes, None, "LTO passes", || llvm::LLVMRunPassManager(pm, llmod));
|
||||||
llvm::LLVMRunPassManager(pm, llmod));
|
|
||||||
|
|
||||||
llvm::LLVMDisposePassManager(pm);
|
llvm::LLVMDisposePassManager(pm);
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,8 +117,7 @@ fn get_rpath_relative_to_output(config: &mut RPathConfig, lib: &Path) -> String
|
||||||
let relative = path_relative_from(&lib, &output).unwrap_or_else(||
|
let relative = path_relative_from(&lib, &output).unwrap_or_else(||
|
||||||
panic!("couldn't create relative path from {:?} to {:?}", output, lib));
|
panic!("couldn't create relative path from {:?} to {:?}", output, lib));
|
||||||
// FIXME (#9639): This needs to handle non-utf8 paths
|
// FIXME (#9639): This needs to handle non-utf8 paths
|
||||||
format!("{}/{}", prefix,
|
format!("{}/{}", prefix, relative.to_str().expect("non-utf8 component in path"))
|
||||||
relative.to_str().expect("non-utf8 component in path"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This routine is adapted from the *old* Path's `path_relative_from`
|
// This routine is adapted from the *old* Path's `path_relative_from`
|
||||||
|
|
|
@ -106,8 +106,7 @@ pub fn write_output_file(
|
||||||
file_type: llvm::FileType) -> Result<(), FatalError> {
|
file_type: llvm::FileType) -> Result<(), FatalError> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let output_c = path2cstr(output);
|
let output_c = path2cstr(output);
|
||||||
let result = llvm::LLVMRustWriteOutputFile(
|
let result = llvm::LLVMRustWriteOutputFile(target, pm, m, output_c.as_ptr(), file_type);
|
||||||
target, pm, m, output_c.as_ptr(), file_type);
|
|
||||||
if result.into_result().is_err() {
|
if result.into_result().is_err() {
|
||||||
let msg = format!("could not write output to {}", output.display());
|
let msg = format!("could not write output to {}", output.display());
|
||||||
Err(llvm_err(handler, msg))
|
Err(llvm_err(handler, msg))
|
||||||
|
@ -590,8 +589,7 @@ unsafe fn optimize(cgcx: &CodegenContext,
|
||||||
|
|
||||||
for pass in &config.passes {
|
for pass in &config.passes {
|
||||||
if !addpass(pass) {
|
if !addpass(pass) {
|
||||||
diag_handler.warn(&format!("unknown pass `{}`, ignoring",
|
diag_handler.warn(&format!("unknown pass `{}`, ignoring", pass));
|
||||||
pass));
|
|
||||||
}
|
}
|
||||||
if pass == "name-anon-globals" {
|
if pass == "name-anon-globals" {
|
||||||
have_name_anon_globals_pass = true;
|
have_name_anon_globals_pass = true;
|
||||||
|
@ -601,8 +599,8 @@ unsafe fn optimize(cgcx: &CodegenContext,
|
||||||
for pass in &cgcx.plugin_passes {
|
for pass in &cgcx.plugin_passes {
|
||||||
if !addpass(pass) {
|
if !addpass(pass) {
|
||||||
diag_handler.err(&format!("a plugin asked for LLVM pass \
|
diag_handler.err(&format!("a plugin asked for LLVM pass \
|
||||||
`{}` but LLVM does not \
|
`{}` but LLVM does not \
|
||||||
recognize it", pass));
|
recognize it", pass));
|
||||||
}
|
}
|
||||||
if pass == "name-anon-globals" {
|
if pass == "name-anon-globals" {
|
||||||
have_name_anon_globals_pass = true;
|
have_name_anon_globals_pass = true;
|
||||||
|
@ -613,12 +611,12 @@ unsafe fn optimize(cgcx: &CodegenContext,
|
||||||
// As described above, this will probably cause an error in LLVM
|
// As described above, this will probably cause an error in LLVM
|
||||||
if config.no_prepopulate_passes {
|
if config.no_prepopulate_passes {
|
||||||
diag_handler.err("The current compilation is going to use thin LTO buffers \
|
diag_handler.err("The current compilation is going to use thin LTO buffers \
|
||||||
without running LLVM's NameAnonGlobals pass. \
|
without running LLVM's NameAnonGlobals pass. \
|
||||||
This will likely cause errors in LLVM. Consider adding \
|
This will likely cause errors in LLVM. Consider adding \
|
||||||
-C passes=name-anon-globals to the compiler command line.");
|
-C passes=name-anon-globals to the compiler command line.");
|
||||||
} else {
|
} else {
|
||||||
bug!("We are using thin LTO buffers without running the NameAnonGlobals pass. \
|
bug!("We are using thin LTO buffers without running the NameAnonGlobals pass. \
|
||||||
This will likely cause errors in LLVM and should never happen.");
|
This will likely cause errors in LLVM and should never happen.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -704,9 +702,9 @@ unsafe fn codegen(cgcx: &CodegenContext,
|
||||||
// escape the closure itself, and the manager should only be
|
// escape the closure itself, and the manager should only be
|
||||||
// used once.
|
// used once.
|
||||||
unsafe fn with_codegen<'ll, F, R>(tm: &'ll llvm::TargetMachine,
|
unsafe fn with_codegen<'ll, F, R>(tm: &'ll llvm::TargetMachine,
|
||||||
llmod: &'ll llvm::Module,
|
llmod: &'ll llvm::Module,
|
||||||
no_builtins: bool,
|
no_builtins: bool,
|
||||||
f: F) -> R
|
f: F) -> R
|
||||||
where F: FnOnce(&'ll mut PassManager<'ll>) -> R,
|
where F: FnOnce(&'ll mut PassManager<'ll>) -> R,
|
||||||
{
|
{
|
||||||
let cpm = llvm::LLVMCreatePassManager();
|
let cpm = llvm::LLVMCreatePassManager();
|
||||||
|
@ -818,7 +816,7 @@ unsafe fn codegen(cgcx: &CodegenContext,
|
||||||
};
|
};
|
||||||
with_codegen(tm, llmod, config.no_builtins, |cpm| {
|
with_codegen(tm, llmod, config.no_builtins, |cpm| {
|
||||||
write_output_file(diag_handler, tm, cpm, llmod, &path,
|
write_output_file(diag_handler, tm, cpm, llmod, &path,
|
||||||
llvm::FileType::AssemblyFile)
|
llvm::FileType::AssemblyFile)
|
||||||
})?;
|
})?;
|
||||||
timeline.record("asm");
|
timeline.record("asm");
|
||||||
}
|
}
|
||||||
|
@ -826,7 +824,7 @@ unsafe fn codegen(cgcx: &CodegenContext,
|
||||||
if write_obj {
|
if write_obj {
|
||||||
with_codegen(tm, llmod, config.no_builtins, |cpm| {
|
with_codegen(tm, llmod, config.no_builtins, |cpm| {
|
||||||
write_output_file(diag_handler, tm, cpm, llmod, &obj_out,
|
write_output_file(diag_handler, tm, cpm, llmod, &obj_out,
|
||||||
llvm::FileType::ObjectFile)
|
llvm::FileType::ObjectFile)
|
||||||
})?;
|
})?;
|
||||||
timeline.record("obj");
|
timeline.record("obj");
|
||||||
} else if asm_to_obj {
|
} else if asm_to_obj {
|
||||||
|
@ -947,11 +945,11 @@ fn need_pre_thin_lto_bitcode_for_incr_comp(sess: &Session) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn start_async_codegen(tcx: TyCtxt,
|
pub fn start_async_codegen(tcx: TyCtxt,
|
||||||
time_graph: Option<TimeGraph>,
|
time_graph: Option<TimeGraph>,
|
||||||
metadata: EncodedMetadata,
|
metadata: EncodedMetadata,
|
||||||
coordinator_receive: Receiver<Box<dyn Any + Send>>,
|
coordinator_receive: Receiver<Box<dyn Any + Send>>,
|
||||||
total_cgus: usize)
|
total_cgus: usize)
|
||||||
-> OngoingCodegen {
|
-> OngoingCodegen {
|
||||||
let sess = tcx.sess;
|
let sess = tcx.sess;
|
||||||
let crate_name = tcx.crate_name(LOCAL_CRATE);
|
let crate_name = tcx.crate_name(LOCAL_CRATE);
|
||||||
let crate_hash = tcx.crate_hash(LOCAL_CRATE);
|
let crate_hash = tcx.crate_hash(LOCAL_CRATE);
|
||||||
|
@ -1116,7 +1114,8 @@ fn copy_all_cgu_workproducts_to_incr_comp_cache_dir(
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some((id, product)) =
|
if let Some((id, product)) =
|
||||||
copy_cgu_workproducts_to_incr_comp_cache_dir(sess, &module.name, &files) {
|
copy_cgu_workproducts_to_incr_comp_cache_dir(sess, &module.name, &files)
|
||||||
|
{
|
||||||
work_products.insert(id, product);
|
work_products.insert(id, product);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1584,10 +1583,8 @@ fn start_executing_work(tcx: TyCtxt,
|
||||||
|
|
||||||
let (name, mut cmd) = get_linker(sess, &linker, flavor);
|
let (name, mut cmd) = get_linker(sess, &linker, flavor);
|
||||||
cmd.args(&sess.target.target.options.asm_args);
|
cmd.args(&sess.target.target.options.asm_args);
|
||||||
Some(Arc::new(AssemblerCommand {
|
|
||||||
name,
|
Some(Arc::new(AssemblerCommand { name, cmd }))
|
||||||
cmd,
|
|
||||||
}))
|
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
@ -2186,9 +2183,9 @@ pub fn run_assembler(cgcx: &CodegenContext, handler: &Handler, assembly: &Path,
|
||||||
handler.struct_err(&format!("linking with `{}` failed: {}",
|
handler.struct_err(&format!("linking with `{}` failed: {}",
|
||||||
pname.display(),
|
pname.display(),
|
||||||
prog.status))
|
prog.status))
|
||||||
.note(&format!("{:?}", &cmd))
|
.note(&format!("{:?}", &cmd))
|
||||||
.note(str::from_utf8(¬e[..]).unwrap())
|
.note(str::from_utf8(¬e[..]).unwrap())
|
||||||
.emit();
|
.emit();
|
||||||
handler.abort_if_errors();
|
handler.abort_if_errors();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2450,8 +2447,8 @@ impl OngoingCodegen {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn submit_pre_codegened_module_to_llvm(&self,
|
pub(crate) fn submit_pre_codegened_module_to_llvm(&self,
|
||||||
tcx: TyCtxt,
|
tcx: TyCtxt,
|
||||||
module: ModuleCodegen) {
|
module: ModuleCodegen) {
|
||||||
self.wait_for_signal_to_codegen_item();
|
self.wait_for_signal_to_codegen_item();
|
||||||
self.check_for_errors(tcx.sess);
|
self.check_for_errors(tcx.sess);
|
||||||
|
|
||||||
|
|
|
@ -224,9 +224,9 @@ impl<'a> GccLinker<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Linker for GccLinker<'a> {
|
impl<'a> Linker for GccLinker<'a> {
|
||||||
fn link_dylib(&mut self, lib: &str) { self.hint_dynamic(); self.cmd.arg(format!("-l{}",lib)); }
|
fn link_dylib(&mut self, lib: &str) { self.hint_dynamic(); self.cmd.arg(format!("-l{}", lib)); }
|
||||||
fn link_staticlib(&mut self, lib: &str) {
|
fn link_staticlib(&mut self, lib: &str) {
|
||||||
self.hint_static(); self.cmd.arg(format!("-l{}",lib));
|
self.hint_static(); self.cmd.arg(format!("-l{}", lib));
|
||||||
}
|
}
|
||||||
fn link_rlib(&mut self, lib: &Path) { self.hint_static(); self.cmd.arg(lib); }
|
fn link_rlib(&mut self, lib: &Path) { self.hint_static(); self.cmd.arg(lib); }
|
||||||
fn include_path(&mut self, path: &Path) { self.cmd.arg("-L").arg(path); }
|
fn include_path(&mut self, path: &Path) { self.cmd.arg("-L").arg(path); }
|
||||||
|
@ -243,7 +243,7 @@ impl<'a> Linker for GccLinker<'a> {
|
||||||
|
|
||||||
fn link_rust_dylib(&mut self, lib: &str, _path: &Path) {
|
fn link_rust_dylib(&mut self, lib: &str, _path: &Path) {
|
||||||
self.hint_dynamic();
|
self.hint_dynamic();
|
||||||
self.cmd.arg(format!("-l{}",lib));
|
self.cmd.arg(format!("-l{}", lib));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn link_framework(&mut self, framework: &str) {
|
fn link_framework(&mut self, framework: &str) {
|
||||||
|
@ -261,7 +261,7 @@ impl<'a> Linker for GccLinker<'a> {
|
||||||
self.hint_static();
|
self.hint_static();
|
||||||
let target = &self.sess.target.target;
|
let target = &self.sess.target.target;
|
||||||
if !target.options.is_like_osx {
|
if !target.options.is_like_osx {
|
||||||
self.linker_arg("--whole-archive").cmd.arg(format!("-l{}",lib));
|
self.linker_arg("--whole-archive").cmd.arg(format!("-l{}", lib));
|
||||||
self.linker_arg("--no-whole-archive");
|
self.linker_arg("--no-whole-archive");
|
||||||
} else {
|
} else {
|
||||||
// -force_load is the macOS equivalent of --whole-archive, but it
|
// -force_load is the macOS equivalent of --whole-archive, but it
|
||||||
|
@ -373,8 +373,7 @@ impl<'a> Linker for GccLinker<'a> {
|
||||||
// purely to support rustbuild right now, we should get a more
|
// purely to support rustbuild right now, we should get a more
|
||||||
// principled solution at some point to force the compiler to pass
|
// principled solution at some point to force the compiler to pass
|
||||||
// the right `-Wl,-install_name` with an `@rpath` in it.
|
// the right `-Wl,-install_name` with an `@rpath` in it.
|
||||||
if self.sess.opts.cg.rpath ||
|
if self.sess.opts.cg.rpath || self.sess.opts.debugging_opts.osx_rpath_install_name {
|
||||||
self.sess.opts.debugging_opts.osx_rpath_install_name {
|
|
||||||
self.linker_arg("-install_name");
|
self.linker_arg("-install_name");
|
||||||
let mut v = OsString::from("@rpath/");
|
let mut v = OsString::from("@rpath/");
|
||||||
v.push(out_filename.file_name().unwrap());
|
v.push(out_filename.file_name().unwrap());
|
||||||
|
|
|
@ -47,11 +47,10 @@ fn crate_export_threshold(crate_type: config::CrateType) -> SymbolExportLevel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn crates_export_threshold(crate_types: &[config::CrateType])
|
pub fn crates_export_threshold(crate_types: &[config::CrateType]) -> SymbolExportLevel {
|
||||||
-> SymbolExportLevel {
|
if crate_types.iter().any(|&crate_type|
|
||||||
if crate_types.iter().any(|&crate_type| {
|
crate_export_threshold(crate_type) == SymbolExportLevel::Rust)
|
||||||
crate_export_threshold(crate_type) == SymbolExportLevel::Rust
|
{
|
||||||
}) {
|
|
||||||
SymbolExportLevel::Rust
|
SymbolExportLevel::Rust
|
||||||
} else {
|
} else {
|
||||||
SymbolExportLevel::C
|
SymbolExportLevel::C
|
||||||
|
@ -359,7 +358,7 @@ fn is_unreachable_local_definition_provider(tcx: TyCtxt, def_id: DefId) -> bool
|
||||||
!tcx.reachable_set(LOCAL_CRATE).0.contains(&node_id)
|
!tcx.reachable_set(LOCAL_CRATE).0.contains(&node_id)
|
||||||
} else {
|
} else {
|
||||||
bug!("is_unreachable_local_definition called with non-local DefId: {:?}",
|
bug!("is_unreachable_local_definition called with non-local DefId: {:?}",
|
||||||
def_id)
|
def_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue