about summary refs log tree commit diff
path: root/src/librustc_llvm
AgeCommit message (Collapse)AuthorLines
2014-09-12Add -C remark for LLVM optimization remarksKeegan McAllister-1/+151
Fixes #17116.
2014-09-12Add a Rust string ostream for LLVMKeegan McAllister-2/+28
2014-09-05run optimization and codegen on worker threadsStuart Pernsteiner-1/+1
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-08-30auto merge of #16322 : michaelwoerister/rust/gdb-pretty, r=alexcrichtonbors-1/+4
Also extends the autotest framework to let a test case choose if pretty printing should be enabled.
2014-08-30Unify non-snake-case lints and non-uppercase statics lintsP1start-2/+2
This unifies the `non_snake_case_functions` and `uppercase_variables` lints into one lint, `non_snake_case`. It also now checks for non-snake-case modules. This also extends the non-camel-case types lint to check type parameters, and merges the `non_uppercase_pattern_statics` lint into the `non_uppercase_statics` lint. Because the `uppercase_variables` lint is now part of the `non_snake_case` lint, all non-snake-case variables that start with lowercase characters (such as `fooBar`) will now trigger the `non_snake_case` lint. New code should be updated to use the new `non_snake_case` lint instead of the previous `non_snake_case_functions` and `uppercase_variables` lints. All use of the `non_uppercase_pattern_statics` should be replaced with the `non_uppercase_statics` lint. Any code that previously contained non-snake-case module or variable names should be updated to use snake case names or disable the `non_snake_case` lint. Any code with non-camel-case type parameters should be changed to use camel case or disable the `non_camel_case_types` lint. [breaking-change]
2014-08-27Implement generalized object and type parameter bounds (Fixes #16462)Niko Matsakis-3/+3
2014-08-27debuginfo: Add GDB pretty printers for structs and enums.Michael Woerister-1/+4
2014-07-25librustc: Use builder for llvm attributes.Luqman Aden-0/+93
2014-07-19Register new snapshotsAlex Crichton-2/+0
2014-07-18librustc: Implement unboxed closures with mutable receiversPatrick Walton-0/+8
2014-07-14Fix rebase fallout. Sorry.Brian Anderson-46/+0
2014-07-14rustc_llvm: Remove the inner llvm moduleBrian Anderson-1437/+1430
This makes it much saner for clients to use the library since they don't have to worry about shadowing one llvm with another.
2014-07-14rustc_llvm: Remove an unnecessary workaroundBrian Anderson-6/+1
Just some leftover junk from extracting llvm.
2014-07-14rustc: Move ArchiveRO to rustc_llvmBrian Anderson-0/+71
It is a wrapper around LLVM.
2014-07-14Move llvm bindings to their own crateBrian Anderson-0/+2058