about summary refs log tree commit diff
path: root/compiler/rustc_codegen_ssa/Cargo.toml
AgeCommit message (Collapse)AuthorLines
2021-10-03Remove re-export.Camille GILLOT-0/+1
2021-09-30Move EncodedMetadata to rustc_metadata.Camille GILLOT-0/+1
2021-09-20Migrate to 2021Mark Rousskov-1/+1
2021-08-30Fix loading large rlibsMark Rousskov-1/+1
Bumps object crate to permit parsing archives with 64-bit table entries. These are primarily encountered when there's more than 4GB of archive data.
2021-08-19Update the backtrace crate in libstdAlex Crichton-1/+1
This commit updates the backtrace crate in libstd now that dependencies have been updated to use `memchr` from the standard library as well. This is mostly just making sure deps are up-to-date and have all the latest-and-greatest fixes and such. Closes rust-lang/backtrace-rs#432
2021-08-05Auto merge of #87641 - HackAttack:expand-unknown-option-message, r=wesleywiserbors-0/+1
Allow more "unknown argument" strings from linker Some toolchains emit slightly different errors, e.g. ppc-vle-gcc: error: unrecognized option '-no-pie'
2021-07-31Allow more "unknown argument" strings from linkerMichael Hackner-0/+1
Some toolchains emit slightly different errors, e.g. ppc-vle-gcc: error: unrecognized option '-no-pie'
2021-07-29rfc3052: Remove authors field from Cargo manifestsJade-1/+0
Since RFC 3052 soft deprecated the authors field anyway, hiding it from crates.io, docs.rs, and making Cargo not add it by default, and it is not generally up to date/useful information, we should remove it from crates in this repo.
2021-07-15[debuginfo] Emit associated type bindings in trait object type names.Michael Woerister-0/+1
2021-07-13Upgrade `cc` crate to 1.0.69Yuki Okushi-1/+1
2021-06-04rustc: Store metadata-in-rlibs in object filesAlex Crichton-2/+2
This commit updates how rustc compiler metadata is stored in rlibs. Previously metadata was stored as a raw file that has the same format as `--emit metadata`. After this commit, however, the metadata is encoded into a small object file which has one section which is the contents of the metadata. The motivation for this commit is to fix a common case where #83730 arises. The problem is that when rustc crates a `dylib` crate type it needs to include entire rlib files into the dylib, so it passes `--whole-archive` (or the equivalent) to the linker. The problem with this, though, is that the linker will attempt to read all files in the archive. If the metadata file were left as-is (today) then the linker would generate an error saying it can't read the file. The previous solution was to alter the rlib just before linking, creating a new archive in a temporary directory which has the metadata file removed. This problem from before this commit is now removed if the metadata file is stored in an object file that the linker can read. The only caveat we have to take care of is to ensure that the linker never actually includes the contents of the object file into the final output. We apply similar tricks as the `.llvmbc` bytecode sections to do this. This involved changing the metadata loading code a bit, namely updating some of the LLVM C APIs used to use non-deprecated ones and fiddling with the lifetimes a bit to get everything to work out. Otherwise though this isn't intended to be a functional change really, only that metadata is stored differently in archives now. This should end up fixing #83730 because by default dylibs will no longer have their rlib dependencies "altered" meaning that split-debuginfo will continue to have valid paths pointing at the original rlibs. (note that we still "alter" rlibs if LTO is enabled to remove Rust object files and we also "alter" for the #[link(cfg)] feature, but that's rarely used). Closes #83730
2021-05-24Update ccChris Denton-2/+2
Recent commits to cc have helped to address #83043 and #43468
2021-05-14Auto merge of #83640 - bjorn3:shared_metadata_reader, r=nagisabors-0/+5
Use the object crate for metadata reading This allows sharing the metadata reader between cg_llvm, cg_clif and other codegen backends. This is not currently useful for rlib reading with cg_spirv ([rust-gpu](https://github.com/EmbarkStudios/rust-gpu/)) as it uses tar rather than ar as .rlib format, but it is useful for dylib reading required for loading proc macros. (cc `@eddyb)` The object crate is already trusted as dependency of libstd through backtrace. As far as I know it supports reading all object file formats used by targets for which we support rust dylibs with crate metadata, but I am not certain. If this happens to not be the case, I could keep using LLVM for reading dylib metadata. Marked as WIP for a perf run and as it is based on #83637.
2021-05-12update cc crateMateusz MikuĊ‚a-1/+1
To pull in this fix: https://github.com/alexcrichton/cc-rs/commit/801a87bf2f31ad1ad8bd7e8fa4f5a52b0e2b4c00
2021-05-07Disable wasm feature of object in cg_ssabjorn3-1/+5
The version 1 resolver unifies enabled features across the whole workspace. This includes libstd which isn't allowed to depend on wasmparser.
2021-05-07Use the object crate for metadata readingbjorn3-0/+1
2021-04-23Use tempfileJubilee Young-1/+1
2021-04-21bump jobserver dependencyThe8472-1/+1
the newest jobserver version should slightly reduce context switches in highly parallel build environments on linux kernels >= 5.6
2021-03-30Add an Mmap wrapper to rustc_data_structuresbjorn3-1/+0
This wrapper implements StableAddress and falls back to directly reading the file on wasm32
2021-03-18Upgrade memmap to memmap2 in other crates.Camille GILLOT-1/+1
2021-02-15rustc_codegen_ssa: tune codegen according to available concurrencyTyson Nottingham-1/+0
This change tunes ahead-of-time codegening according to the amount of concurrency available, rather than according to the number of CPUs on the system. This can lower memory usage by reducing the number of compiled LLVM modules in memory at once, particularly across several rustc instances. Previously, each rustc instance would assume that it should codegen ahead of time to meet the demand of number-of-CPUs workers. But often, a rustc instance doesn't have nearly that much concurrency available to it, because the concurrency availability is split, via the jobserver, across all active rustc instances spawned by the driving cargo process, and is further limited by the `-j` flag argument. Therefore, each rustc might have had several times the number of LLVM modules in memory than it really needed to meet demand. If the modules were large, the effect on memory usage would be noticeable. With this change, the required amount of ahead-of-time codegen scales up with the actual number of workers running within a rustc instance. Note that the number of workers running can be less than the actual concurrency available to a rustc instance. However, if more concurrency is actually available, workers are spun up quickly as job tokens are acquired, and the ahead-of-time codegen scales up quickly as well.
2021-02-03rustc_codegen_ssa: tune codegen scheduling to reduce memory usageTyson Nottingham-0/+1
For better throughput during parallel processing by LLVM, we used to sort CGUs largest to smallest. This would lead to better thread utilization by, for example, preventing a large CGU from being processed last and having only one LLVM thread working while the rest remained idle. However, this strategy would lead to high memory usage, as it meant the LLVM-IR for all of the largest CGUs would be resident in memory at once. Instead, we can compromise by ordering CGUs such that the largest and smallest are first, second largest and smallest are next, etc. If there are large size variations, this can reduce memory usage significantly.
2020-08-30mv compiler to compiler/mark-0/+36