summary refs log tree commit diff
path: root/src/librustc_codegen_utils
AgeCommit message (Collapse)AuthorLines
2018-10-29Remove redundant cloneShotaro Yamada-1/+1
2018-10-20Auto merge of #55014 - ljedrz:lazyboye_unwraps, r=matthewjasperbors-1/+1
Prefer unwrap_or_else to unwrap_or in case of function calls/allocations The contents of `unwrap_or` are evaluated eagerly, so it's not a good pick in case of function calls and allocations. This PR also changes a few `unwrap_or`s with `unwrap_or_default`. An added bonus is that in some cases this change also reveals if the object it's called on is an `Option` or a `Result` (based on whether the closure takes an argument).
2018-10-19Prefer `Default::default` over `FxHash*::default` in struct constructorsOliver Scherer-3/+1
2018-10-19Deprecate the `FxHashMap()` and `FxHashSet()` constructor function hackOliver Scherer-1/+1
2018-10-19Prefer unwrap_or_else to unwrap_or in case of function calls/allocationsljedrz-1/+1
2018-10-02Attempt to resolve linking issues.David Wood-1/+1
This commit takes a different approach to add the `crate::` prefix to item paths than previous commits. Previously, recursion was stopped after a prelude crate name was pushed to the path. It is theorized that this was the cause of the linking issues since the same path logic is used for symbol names and that not recursing meant that details were being missed that affect symbol names. As of this commit, instead of ceasing recursion, a flag is passed through to any subsequent recursive calls so that the same effect can be achieved by checking that flag.
2018-10-02Add `crate::` to trait suggestions in Rust 2018.David Wood-0/+1
In the 2018 edition, when suggesting traits to import that implement a given method that is being invoked, suggestions will now include the `crate::` prefix if the suggested trait is local to the current crate.
2018-09-30Auto merge of #54601 - cuviper:prep-1.31, r=Mark-Simulacrumbors-1/+1
Bump to 1.31.0 and bootstrap from 1.30 beta Closes #54594.
2018-09-27Bump to 1.31.0 and bootstrap from 1.30 betaJosh Stone-1/+1
2018-09-28Move `filename_for_metadata` to codegen_utilsIgor Matuszewski-0/+13
This function isn't strictly tied to LLVM (it's more of a utility) and it's now near an analogous, almost identical `filename_for_input` (for rlibs and so forth). Also this means not depending on the backend when one wants to know the accurate .rmeta output filename.
2018-09-11stabalize infer outlives requirements (RFC 2093).toidiu-1/+0
Co-authored-by: nikomatsakis
2018-08-27Rename hir::map::NodeKind to hir::Nodevarkor-2/+2
2018-08-27Remove path prefixes from NodeKindvarkor-2/+2
2018-08-27Rename hir::map::Node to hir::map::NodeKindvarkor-1/+1
2018-08-27Auto merge of #53441 - toidiu:ak-fix53419, r=nikomatsakisbors-0/+1
fix for late-bound regions Fix for https://github.com/rust-lang/rust/issues/53419 r? @nikomatsakis
2018-08-26rustc: Continue to tweak "std internal symbols"Alex Crichton-10/+5
In investigating [an issue][1] with `panic_implementation` defined in an executable that's optimized I once again got to rethinking a bit about the `rustc_std_internal_symbol` attribute as well as weak lang items. We've sort of been non-stop tweaking these items ever since their inception, and this continues to the trend. The crux of the bug was that in the reachability we have a [different branch][2] for non-library builds which meant that weak lang items (and std internal symbols) weren't considered reachable, causing them to get eliminiated by ThinLTO passes. The fix was to basically tweak that branch to consider these symbols to ensure that they're propagated all the way to the linker. Along the way I've attempted to erode the distinction between std internal symbols and weak lang items by having weak lang items automatically configure fields of `CodegenFnAttrs`. That way most code no longer even considers weak lang items and they're simply considered normal functions with attributes about the ABI. In the end this fixes the final comment of #51342 [1]: https://github.com/rust-lang/rust/issues/51342#issuecomment-414368019 [2]: https://github.com/rust-lang/rust/blob/35bf1ae25799a4e62131159f052e0a3cbd27c960/src/librustc/middle/reachable.rs#L225-L238
2018-08-24check that adding infer-outlives requirement to all crates worksNiko Matsakis-0/+1
2018-08-22Remove Ty prefix from ↵varkor-1/+1
Ty{Adt|Array|Slice|RawPtr|Ref|FnDef|FnPtr|Dynamic|Closure|Generator|GeneratorWitness|Never|Tuple|Projection|Anon|Infer|Error}
2018-08-18Remove LinkMeta structbjorn3-13/+2
2018-08-12Rollup merge of #53230 - memoryruins:nll_bootstrap_4, r=nikomatsakisGuillaume Gomez-0/+1
[nll] enable feature(nll) on various crates for bootstrap: part 4 #53172 r? @nikomatsakis
2018-08-09[nll] librustc_codegen_utils: enable feature(nll) for bootstrapmemoryruins-0/+1
2018-08-09Move SVH structure to data structuresMark Rousskov-1/+1
2018-08-04Use diagnostic API on SessionMark Rousskov-1/+1
2018-08-04Move share_generics getter onto options directlyMark Rousskov-1/+1
2018-08-04Normalize variants of CrateType to standard styleMark Rousskov-20/+20
This is a clippy-breaking change.
2018-08-03Move validate_crate_name to rustc_metadataMark Rousskov-2/+5
2018-07-25Deny bare_trait_objects globallyTatsuyuki Ishi-1/+0
2018-07-11Deny bare trait objects in in src/librustc_codegen_utilsljedrz-12/+13
2018-07-10Upgrade to LLVM's master branch (LLVM 7)Alex Crichton-1/+0
This commit upgrades the main LLVM submodule to LLVM's current master branch. The LLD submodule is updated in tandem as well as compiler-builtins. Along the way support was also added for LLVM 7's new features. This primarily includes the support for custom section concatenation natively in LLD so we now add wasm custom sections in LLVM IR rather than having custom support in rustc itself for doing so. Some other miscellaneous changes are: * We now pass `--gc-sections` to `wasm-ld` * The optimization level is now passed to `wasm-ld` * A `--stack-first` option is passed to LLD to have stack overflow always cause a trap instead of corrupting static data * The wasm target for LLVM switched to `wasm32-unknown-unknown`. * The syntax for aligned pointers has changed in LLVM IR and tests are updated to reflect this. * The `thumbv6m-none-eabi` target is disabled due to an [LLVM bug][llbug] Nowadays we've been mostly only upgrading whenever there's a major release of LLVM but enough changes have been happening on the wasm target that there's been growing motivation for quite some time now to upgrade out version of LLD. To upgrade LLD, however, we need to upgrade LLVM to avoid needing to build yet another version of LLVM on the builders. The revision of LLVM in use here is arbitrarily chosen. We will likely need to continue to update it over time if and when we discover bugs. Once LLVM 7 is fully released we can switch to that channel as well. [llbug]: https://bugs.llvm.org/show_bug.cgi?id=37382
2018-07-07Move llvm_target_features back to llvm_utilbjorn3-131/+2
2018-07-07Move time_graph.rs to rustc/utilbjorn3-279/+0
2018-07-07Leave fixme commentbjorn3-1/+2
2018-07-07Fix metadata_only metadata encodingbjorn3-1/+15
2018-07-07Fix some errorsbjorn3-0/+10
2018-07-07Mostly fix compiling without LLVM (with metadata_only backend)bjorn3-100/+11
2018-07-07Move some functions out of rustc_codegen_llvm and fix metadata_only backendbjorn3-5/+408
2018-06-26migrate codebase to `..=` inclusive range patternsZack M. Davis-1/+1
These were stabilized in March 2018's #47813, and are the Preferred Way to Do It going forward (q.v. #51043).
2018-06-14rustc: rename ty::maps to ty::query.Eduard-Mihai Burtescu-2/+2
2018-06-01Update recursion limitsJohn Kåre Alsaker-0/+2
2018-05-26Add `Ident::as_str` helperVadim Petrochenkov-1/+1
2018-05-17Added extra hashing step.iancormac84-0/+7
2018-05-17Code structure edits.iancormac84-57/+61
2018-05-17Removed use of TypeIdHasher in symbol hash generation and replaced it with ↵iancormac84-14/+13
StableHasher.
2018-05-17Rename trans to codegen everywhere.Irina Popa-0/+1087