summary refs log tree commit diff
path: root/src/librustc/back/write.rs
AgeCommit message (Collapse)AuthorLines
2014-09-28Keep ExpnId abstract by providing conversionsKeegan McAllister-1/+1
2014-09-27Translate inline assembly errors back to source locationsKeegan McAllister-7/+36
Fixes #17552.
2014-09-19rollup merge of #17358 : epdtry/pcg-ltoAlex Crichton-29/+32
2014-09-19Add enum variants to the type namespaceNick Cameron-4/+4
Change to resolve and update compiler and libs for uses. [breaking-change] Enum variants are now in both the value and type namespaces. This means that if you have a variant with the same name as a type in scope in a module, you will get a name clash and thus an error. The solution is to either rename the type or the variant.
2014-09-17support LTO against libraries built with codegen-units > 1Stuart Pernsteiner-29/+32
2014-09-16Fallout from renamingAaron Turon-1/+1
2014-09-12Add -C remark for LLVM optimization remarksKeegan McAllister-11/+56
Fixes #17116.
2014-09-05don't use `ld -r` with `-C codegen-units=1`Stuart Pernsteiner-0/+12
2014-09-05add workaround for mingw `ld --force-exe-suffix` behaviorStuart Pernsteiner-1/+25
2014-09-05don't leave unwanted temporary files with --emit=ir/asmStuart Pernsteiner-3/+6
2014-09-05use target-specific linker args when combining compilation unitsStuart Pernsteiner-2/+19
2014-09-05run optimization and codegen on worker threadsStuart Pernsteiner-206/+636
Refactor the code in `llvm::back` that invokes LLVM optimization and codegen passes so that it can be called from worker threads. (Previously, it used `&Session` extensively, and `Session` is not `Share`.) The new code can handle multiple compilation units, by compiling each unit to `crate.0.o`, `crate.1.o`, etc., and linking together all the `crate.N.o` files into a single `crate.o` using `ld -r`. The later linking steps can then be run unchanged. The new code preserves the behavior of `--emit`/`-o` when building a single compilation unit. With multiple compilation units, the `--emit=asm/ir/bc` options produce multiple files, so combinations like `--emit=ir -o foo.ll` will not actually produce `foo.ll` (they instead produce several `foo.N.ll` files). The new code supports `-Z lto` only when using a single compilation unit. Compiling with multiple compilation units and `-Z lto` will produce an error. (I can't think of any good reason to do such a thing.) Linking with `-Z lto` against a library that was built as multiple compilation units will also fail, because the rlib does not contain a `crate.bytecode.deflate` file. This could be supported in the future by linking together the `crate.N.bc` files produced when compiling the library into a single `crate.bc`, or by making the LTO code support multiple `crate.N.bytecode.deflate` files.
2014-09-05move back::link::write into a separate fileStuart Pernsteiner-0/+476