Skip to content

Commit

Permalink
Use LLVM integrated assembler on Windows too.
Browse files Browse the repository at this point in the history
  • Loading branch information
vadimcn committed Dec 9, 2013
1 parent 820271d commit 554c3c3
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
10 changes: 2 additions & 8 deletions src/librustc/driver/driver.rs
Expand Up @@ -352,13 +352,7 @@ pub fn phase_5_run_llvm_passes(sess: Session,
trans: &CrateTranslation,
outputs: &OutputFilenames) {

// On Windows, LLVM integrated assembler emits bad stack unwind tables when
// segmented stacks are enabled. However, unwind info directives in assembly
// output are OK, so we generate assembly first and then run it through
// an external assembler.
if sess.targ_cfg.os == abi::OsWin32 &&
(sess.opts.output_type == link::output_type_object ||
sess.opts.output_type == link::output_type_exe) {
if sess.no_integrated_as() {
let output_type = link::output_type_assembly;
let asm_filename = outputs.obj_filename.with_extension("s");

Expand All @@ -371,7 +365,7 @@ pub fn phase_5_run_llvm_passes(sess: Session,

link::write::run_assembler(sess, &asm_filename, &outputs.obj_filename);

// Remove assembly source unless --save-temps was specified
// Remove assembly source, unless --save-temps was specified
if !sess.opts.save_temps {
fs::unlink(&asm_filename);
}
Expand Down
6 changes: 6 additions & 0 deletions src/librustc/driver/session.rs
Expand Up @@ -66,6 +66,7 @@ pub static no_prepopulate_passes: uint = 1 << 25;
pub static use_softfp: uint = 1 << 26;
pub static gen_crate_map: uint = 1 << 27;
pub static prefer_dynamic: uint = 1 << 28;
pub static no_integrated_as: uint = 1 << 29;

pub fn debugging_opts_map() -> ~[(&'static str, &'static str, uint)] {
~[("verbose", "in general, enable more debug printouts", verbose),
Expand Down Expand Up @@ -117,6 +118,8 @@ pub fn debugging_opts_map() -> ~[(&'static str, &'static str, uint)] {
("soft-float", "Generate software floating point library calls", use_softfp),
("gen-crate-map", "Force generation of a toplevel crate map", gen_crate_map),
("prefer-dynamic", "Prefer dynamic linking to static linking", prefer_dynamic),
("no-integrated-as",
"Use external assembler rather than LLVM's integrated one", no_integrated_as),
]
}

Expand Down Expand Up @@ -335,6 +338,9 @@ impl Session_ {
pub fn prefer_dynamic(&self) -> bool {
self.debugging_opt(prefer_dynamic)
}
pub fn no_integrated_as(&self) -> bool {
self.debugging_opt(no_integrated_as)
}

// pointless function, now...
pub fn str_of(&self, id: ast::Ident) -> @str {
Expand Down

0 comments on commit 554c3c3

Please sign in to comment.