Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 47c8f3f

Browse files
committed
Combine ModuleConfig::embed_bitcode{,_marker}.
Because the `(true, true)` combination isn't valid.
1 parent d156bf6 commit 47c8f3f

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

src/librustc_codegen_llvm/back/write.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use rustc::bug;
1818
use rustc::session::config::{self, Lto, OutputType, Passes, Sanitizer, SwitchWithOptPath};
1919
use rustc::session::Session;
2020
use rustc::ty::TyCtxt;
21-
use rustc_codegen_ssa::back::write::{run_assembler, CodegenContext, ModuleConfig};
21+
use rustc_codegen_ssa::back::write::{run_assembler, CodegenContext, EmbedBitcode, ModuleConfig};
2222
use rustc_codegen_ssa::traits::*;
2323
use rustc_codegen_ssa::{CompiledModule, ModuleCodegen, RLIB_BYTECODE_EXTENSION};
2424
use rustc_data_structures::small_c_str::SmallCStr;
@@ -662,7 +662,7 @@ pub(crate) unsafe fn codegen(
662662
}
663663
}
664664

665-
if config.embed_bitcode {
665+
if config.embed_bitcode == EmbedBitcode::Full {
666666
let _timer = cgcx.prof.generic_activity_with_arg(
667667
"LLVM_module_codegen_embed_bitcode",
668668
&module.name[..],
@@ -682,7 +682,7 @@ pub(crate) unsafe fn codegen(
682682
diag_handler.err(&msg);
683683
}
684684
}
685-
} else if config.embed_bitcode_marker {
685+
} else if config.embed_bitcode == EmbedBitcode::Marker {
686686
embed_bitcode(cgcx, llcx, llmod, None);
687687
}
688688

src/librustc_codegen_ssa/back/write.rs

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ use std::thread;
5151

5252
const PRE_LTO_BC_EXT: &str = "pre-lto.bc";
5353

54+
/// The kind of bitcode to embed in object files.
55+
#[derive(PartialEq)]
56+
pub enum EmbedBitcode {
57+
None,
58+
Marker,
59+
Full,
60+
}
61+
5462
/// Module-specific configuration for `optimize_and_codegen`.
5563
pub struct ModuleConfig {
5664
/// Names of additional optimization passes to run.
@@ -93,8 +101,7 @@ pub struct ModuleConfig {
93101
// emscripten's ecc compiler, when used as the linker.
94102
pub obj_is_bitcode: bool,
95103
pub no_integrated_as: bool,
96-
pub embed_bitcode: bool,
97-
pub embed_bitcode_marker: bool,
104+
pub embed_bitcode: EmbedBitcode,
98105
}
99106

100107
impl ModuleConfig {
@@ -119,8 +126,7 @@ impl ModuleConfig {
119126
emit_asm: false,
120127
emit_obj: false,
121128
obj_is_bitcode: false,
122-
embed_bitcode: false,
123-
embed_bitcode_marker: false,
129+
embed_bitcode: EmbedBitcode::None,
124130
no_integrated_as: false,
125131

126132
verify_llvm_ir: false,
@@ -143,16 +149,15 @@ impl ModuleConfig {
143149
self.new_llvm_pass_manager = sess.opts.debugging_opts.new_llvm_pass_manager;
144150
self.obj_is_bitcode =
145151
sess.target.target.options.obj_is_bitcode || sess.opts.cg.linker_plugin_lto.enabled();
146-
let embed_bitcode =
147-
sess.target.target.options.embed_bitcode || sess.opts.debugging_opts.embed_bitcode;
148-
if embed_bitcode {
149-
match sess.opts.optimize {
150-
config::OptLevel::No | config::OptLevel::Less => {
151-
self.embed_bitcode_marker = embed_bitcode;
152+
self.embed_bitcode =
153+
if sess.target.target.options.embed_bitcode || sess.opts.debugging_opts.embed_bitcode {
154+
match sess.opts.optimize {
155+
config::OptLevel::No | config::OptLevel::Less => EmbedBitcode::Marker,
156+
_ => EmbedBitcode::Full,
152157
}
153-
_ => self.embed_bitcode = embed_bitcode,
154-
}
155-
}
158+
} else {
159+
EmbedBitcode::None
160+
};
156161

157162
// Copy what clang does by turning on loop vectorization at O2 and
158163
// slp vectorization at O3. Otherwise configure other optimization aspects
@@ -188,7 +193,10 @@ impl ModuleConfig {
188193
}
189194

190195
pub fn bitcode_needed(&self) -> bool {
191-
self.emit_bc || self.obj_is_bitcode || self.emit_bc_compressed || self.embed_bitcode
196+
self.emit_bc
197+
|| self.obj_is_bitcode
198+
|| self.emit_bc_compressed
199+
|| self.embed_bitcode == EmbedBitcode::Full
192200
}
193201
}
194202

0 commit comments

Comments
 (0)