提交 554c3c31 编写于 作者: V Vadim Chugunov

Use LLVM integrated assembler on Windows too.

上级 820271df
......@@ -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);
}
......
......@@ -66,6 +66,7 @@ pub struct config {
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 @@ pub fn gen_crate_map(&self) -> bool {
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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册