about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNicholas Nethercote <nnethercote@mozilla.com>2020-03-20 12:09:24 +1100
committerNicholas Nethercote <nnethercote@mozilla.com>2020-03-23 10:45:23 +1100
commitd156bf658fd2478ee83d8e86e8c7c46093b74ec8 (patch)
tree52455f666220000a7ebb66ea18983c4bfd6581e9
parentc54ce496635e0e013e14aa4be5d86c1247f9319a (diff)
downloadrust-d156bf658fd2478ee83d8e86e8c7c46093b74ec8.tar.gz
rust-d156bf658fd2478ee83d8e86e8c7c46093b74ec8.zip
Remove some local variables.
I find the code easier to read if the values in `config` are all used
directly, rather than a mix of `config` values and local variables. It
will also faciliate some of the following commits.

Also, use `config.bitcode_needed()` in one place.
-rw-r--r--src/librustc_codegen_llvm/back/write.rs32
1 files changed, 13 insertions, 19 deletions
diff --git a/src/librustc_codegen_llvm/back/write.rs b/src/librustc_codegen_llvm/back/write.rs
index 0c243128104..9ffccad4b93 100644
--- a/src/librustc_codegen_llvm/back/write.rs
+++ b/src/librustc_codegen_llvm/back/write.rs
@@ -634,30 +634,24 @@ pub(crate) unsafe fn codegen(
             f(cpm)
         }
 
-        // If we don't have the integrated assembler, then we need to emit asm
-        // from LLVM and use `gcc` to create the object file.
-        let asm_to_obj = config.emit_obj && config.no_integrated_as;
-
-        // Change what we write and cleanup based on whether obj files are
-        // just llvm bitcode. In that case write bitcode, and possibly
-        // delete the bitcode if it wasn't requested. Don't generate the
-        // machine code, instead copy the .o file from the .bc
-        let write_bc = config.emit_bc || config.obj_is_bitcode;
-        let rm_bc = !config.emit_bc && config.obj_is_bitcode;
-        let write_obj = config.emit_obj && !config.obj_is_bitcode && !asm_to_obj;
-        let copy_bc_to_obj = config.emit_obj && config.obj_is_bitcode;
+        // Two things to note:
+        // - If object files are just LLVM bitcode we write bitcode, copy it to
+        //   the .o file, and delete the bitcode if it wasn't otherwise
+        //   requested.
+        // - If we don't have the integrated assembler then we need to emit
+        //   asm from LLVM and use `gcc` to create the object file.
 
         let bc_out = cgcx.output_filenames.temp_path(OutputType::Bitcode, module_name);
         let obj_out = cgcx.output_filenames.temp_path(OutputType::Object, module_name);
 
-        if write_bc || config.emit_bc_compressed || config.embed_bitcode {
+        if config.bitcode_needed() {
             let _timer = cgcx
                 .prof
                 .generic_activity_with_arg("LLVM_module_codegen_make_bitcode", &module.name[..]);
             let thin = ThinBuffer::new(llmod);
             let data = thin.data();
 
-            if write_bc {
+            if config.emit_bc || config.obj_is_bitcode {
                 let _timer = cgcx.prof.generic_activity_with_arg(
                     "LLVM_module_codegen_emit_bitcode",
                     &module.name[..],
@@ -740,7 +734,7 @@ pub(crate) unsafe fn codegen(
                 })?;
             }
 
-            if config.emit_asm || asm_to_obj {
+            if config.emit_asm || (config.emit_obj && config.no_integrated_as) {
                 let _timer = cgcx
                     .prof
                     .generic_activity_with_arg("LLVM_module_codegen_emit_asm", &module.name[..]);
@@ -762,7 +756,7 @@ pub(crate) unsafe fn codegen(
                 })?;
             }
 
-            if write_obj {
+            if config.emit_obj && !config.obj_is_bitcode && !config.no_integrated_as {
                 let _timer = cgcx
                     .prof
                     .generic_activity_with_arg("LLVM_module_codegen_emit_obj", &module.name[..]);
@@ -776,7 +770,7 @@ pub(crate) unsafe fn codegen(
                         llvm::FileType::ObjectFile,
                     )
                 })?;
-            } else if asm_to_obj {
+            } else if config.emit_obj && config.no_integrated_as {
                 let _timer = cgcx
                     .prof
                     .generic_activity_with_arg("LLVM_module_codegen_asm_to_obj", &module.name[..]);
@@ -789,14 +783,14 @@ pub(crate) unsafe fn codegen(
             }
         }
 
-        if copy_bc_to_obj {
+        if config.emit_obj && config.obj_is_bitcode {
             debug!("copying bitcode {:?} to obj {:?}", bc_out, obj_out);
             if let Err(e) = link_or_copy(&bc_out, &obj_out) {
                 diag_handler.err(&format!("failed to copy bitcode to object file: {}", e));
             }
         }
 
-        if rm_bc {
+        if !config.emit_bc && config.obj_is_bitcode {
             debug!("removing_bitcode {:?}", bc_out);
             if let Err(e) = fs::remove_file(&bc_out) {
                 diag_handler.err(&format!("failed to remove bitcode: {}", e));