diff options
| author | Vadim Chugunov <vadimcn@gmail.com> | 2013-12-08 20:13:10 -0800 |
|---|---|---|
| committer | Vadim Chugunov <vadimcn@gmail.com> | 2013-12-08 20:14:36 -0800 |
| commit | 554c3c316e2fedca11aa3bf5659937dd76200a14 (patch) | |
| tree | eeb053ff4c1fafedec5a8787bfeb1075cf592577 | |
| parent | 820271df1c3d7899460c0fa25c1a7cf74d45d431 (diff) | |
| download | rust-554c3c316e2fedca11aa3bf5659937dd76200a14.tar.gz rust-554c3c316e2fedca11aa3bf5659937dd76200a14.zip | |
Use LLVM integrated assembler on Windows too.
| -rw-r--r-- | src/librustc/driver/driver.rs | 10 | ||||
| -rw-r--r-- | src/librustc/driver/session.rs | 6 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 63d6c60d269..d57bbdb5f2f 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -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"); @@ -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); } diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs index 6a4755344ef..2d1d7033300 100644 --- a/src/librustc/driver/session.rs +++ b/src/librustc/driver/session.rs @@ -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), @@ -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), ] } @@ -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 { |
