1042 Commits

Author SHA1 Message Date
Shotaro Yamada
9fc2595802 Make trait_of_item return None for non associated items
It have returned `Some` for constants in a trait definition,
and `Instance::resolve` called `tcx.associated_item` for them,
causing ICE.
2018-04-28 10:49:45 +09:00
bors
3c43aa5677 Auto merge of #50102 - Zoxc:query-nomacro, r=michaelwoerister
Move query code outside macros and store query jobs separately from query results

Based on https://github.com/rust-lang/rust/pull/50067

r? @michaelwoerister
2018-04-27 16:42:31 +00:00
John Kåre Alsaker
4036d2be8a Create a job immediately when looking in the query map and start it later 2018-04-27 12:09:58 +02:00
John Kåre Alsaker
4d52751d12 Rename InternedString to LocalInternedString and introduce a new thread-safe InternedString 2018-04-27 03:35:32 +02:00
Irina Popa
04fa0e7bb3 rustc_target: move in syntax::abi and flip dependency. 2018-04-26 17:49:16 +03:00
Irina Popa
38e964077b Rename rustc_back::target to rustc_target::spec. 2018-04-26 16:39:44 +03:00
Irina Popa
6f03b80020 rustc_back: move LinkerFlavor, PanicStrategy, and RelroLevel to target. 2018-04-26 16:39:27 +03:00
Wesley Wiser
d81d081df3 Hash EntryKind::AssociatedConst const data
Related to #49991
2018-04-24 23:18:58 -04:00
Wesley Wiser
732cc736c9 Clean up IsolatedEncoder::encode_info_for_impl_item() a bit 2018-04-20 19:05:54 -04:00
Wesley Wiser
ee9a4720ee
Fix bad merge in #49991
When I rebased #49991 on `master`, I messed up the merge for this line. I'm reverting this back to the way it was in f15e5c1.
2018-04-20 09:12:59 -04:00
Wesley Wiser
4a77d35c1e Remove HIR inlining
Fixes #49690
2018-04-19 20:33:18 -04:00
bors
d6a2dd9912 Auto merge of #49433 - varkor:metadata-skip-mir-opt, r=michaelwoerister
Skip MIR encoding for cargo check

Resolves #48662.

r? @michaelwoerister
2018-04-16 10:30:57 +00:00
bors
748c549185 Auto merge of #49847 - sinkuu:save_analysis_implicit_extern, r=petrochenkov
Fix save-analysis generation with extern_in_paths/extern_absolute_paths

Fixes #48742.
2018-04-16 02:34:32 +00:00
Oliver Schneider
7f7d4c376a
Get rid of redundant HashSet 2018-04-14 12:22:10 +02:00
Oliver Schneider
748e71e8f4
Reduce the number of calls to cdata 2018-04-14 12:21:46 +02:00
Oliver Schneider
04b3ab67d9
Encode items before encoding the list of AllocIds 2018-04-14 12:21:46 +02:00
Oliver Schneider
6f251c2a03
Use LazySeq instead of Vec 2018-04-14 12:21:46 +02:00
Oliver Schneider
a67ded06a3
Don't recurse into allocations, use a global table instead 2018-04-14 12:21:46 +02:00
Shotaro Yamada
2c7e83f746 Move path_len to ExternCrate 2018-04-13 09:31:43 +09:00
bors
6c537493d0 Auto merge of #49558 - Zoxc:sync-misc, r=michaelwoerister
Even more thread-safety changes

r? @michaelwoerister
2018-04-12 16:22:36 +00:00
kennytm
77777b4528
Rollup merge of #49525 - varkor:sort_by_cached_key-conversion, r=scottmcm
Use sort_by_cached_key where appropriate

A follow-up to https://github.com/rust-lang/rust/pull/48639, converting various slice sorting calls to `sort_by_cached_key` when the key functions are more expensive.
2018-04-11 19:56:41 +08:00
bors
43e994c8b8 Auto merge of #49715 - Mark-Simulacrum:deny-warnings, r=alexcrichton
Move deny(warnings) into rustbuild

This permits easier iteration without having to worry about warnings
being denied.

Fixes #49517
2018-04-11 03:30:04 +00:00
Shotaro Yamada
bbed61d3d2 Extend ExternCrate to cover externs inferred from use or paths 2018-04-11 01:17:59 +09:00
bors
b2a7b94b8e Auto merge of #49386 - GuillaumeGomez:fix-path-attribute, r=eddyb
Add tcx in item_body_nested_bodies

Fixes #47391.

r? @eddyb
2018-04-10 12:58:27 +00:00
John Kåre Alsaker
006f9b2f56 Make Session.injected_panic_runtime thread-safe 2018-04-10 14:40:26 +02:00
John Kåre Alsaker
dacf9ba00f Make Session.injected_allocator and Session.allocator_kind thread-safe 2018-04-10 14:40:26 +02:00
John Kåre Alsaker
7d33d1a84e Make Session.has_global_allocator thread-safe 2018-04-10 14:40:25 +02:00
varkor
5576ce84cf Take OutputType::DepInfo into account for metadata_output_only 2018-04-09 17:18:17 +01:00
varkor
d3fe534fcf Convert sort_unstable_by_key to sort_by_cached_key 2018-04-09 16:43:48 +01:00
Mark Simulacrum
c115cc655c Move deny(warnings) into rustbuild
This permits easier iteration without having to worry about warnings
being denied.

Fixes #49517
2018-04-08 16:59:14 -06:00
bors
8c2d7b2da3 Auto merge of #49661 - alexcrichton:bump-bootstrap, r=nikomatsakis
Bump the bootstrap compiler to 1.26.0 beta

Holy cow that's a lot of `cfg(stage0)` removed and a lot of new stable language
features!
2018-04-07 11:58:38 +00:00
Michael Woerister
4f6d05dc48 Allow for re-using monomorphizations from upstream crates. 2018-04-06 12:14:08 +02:00
Michael Woerister
dad194a10d Allow for representing exported monomorphizations in crate metadata. 2018-04-06 12:14:08 +02:00
Alex Crichton
8958815916 Bump the bootstrap compiler to 1.26.0 beta
Holy cow that's a lot of `cfg(stage0)` removed and a lot of new stable language
features!
2018-04-05 07:13:45 -07:00
varkor
8414520436 Add len() method to OutputTypes 2018-04-04 12:52:33 +01:00
Chris Manchester
bd8154784e Take the original extra-filename passed to a crate into account when
resolving it as a dependency.

Fixes #46816
2018-03-28 23:24:41 -07:00
bors
d87c19db6d Auto merge of #49019 - phil-opp:target-spec, r=pnkfelix
Introduce a TargetTriple enum to support absolute target paths

This PR replaces target triple strings with a `TargetTriple` enum, which represents either a target triple or a path to a JSON target file. The path variant is used if the `--target` argument has a `.json` extension, else the target triple variant is used.

The motivation of this PR is support for absolute target paths to avoid the need for setting the `RUST_TARGET_PATH` environment variable (see rust-lang/cargo#4905 for more information). For places where some kind of triple is needed (e.g. in the sysroot folder), we use the file name (without extension).

For compatibility, we keep the old behavior of searching for a file named `$(target_triple).json` in `RUST_TARGET_PATH` for non-official target triples.
2018-03-28 12:56:09 +00:00
varkor
f15e5c133e Skip MIR optimisation for cargo check 2018-03-27 22:53:30 +01:00
bors
188e693b39 Auto merge of #49101 - mark-i-m:stabilize_i128, r=nagisa
Stabilize 128-bit integers 🎉

cc #35118

EDIT: This should be merged only after the following have been merged:
- [x] https://github.com/rust-lang-nursery/compiler-builtins/pull/236
- [x] https://github.com/rust-lang/book/pull/1230
2018-03-26 18:41:38 +00:00
Philipp Oppermann
3908b2e443 Introduce a TargetTriple enum to support absolute target paths 2018-03-26 18:57:23 +02:00
Guillaume Gomez
ebbe0c210c Fix path attribute in rustdoc 2018-03-26 17:18:09 +02:00
Mark Mansi
7ce8191775 Stabilize i128_type 2018-03-26 08:36:50 -05:00
bors
13a86f4d85 Auto merge of #48346 - emilio:pgo, r=alexcrichton
Add basic PGO support.

This PR adds two mutually exclusive options for profile usage and generation using LLVM's instruction profile generation (the same as clang uses), `-C pgo-use` and `-C pgo-gen`.

See each commit for details.
2018-03-26 13:00:18 +00:00
Taylor Cramer
0f5b52e4a8 Stabilize conservative_impl_trait 2018-03-26 10:43:03 +02:00
Emilio Cobos Álvarez
688275a400
librustc: Convert -C pgo-gen and -C pgo-use into -Z flags.
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2018-03-25 03:30:06 +02:00
Emilio Cobos Álvarez
50a38725e1
rustc_metadata: Load the profiler runtime if we're generating PGO profile data.
This contains all the actual profiling code.

Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2018-03-25 03:30:04 +02:00
kennytm
297a6e580d
Rollup merge of #49299 - SimonSapin:ubiquity, r=nikomatsakis
Stabilize the copy_closures and clone_closures features

In addition to the `Fn*` family of traits, closures now implement `Copy` (and similarly `Clone`) if all of the captures do.

Tracking issue: https://github.com/rust-lang/rust/issues/44490
2018-03-25 01:30:12 +08:00
kennytm
2b2f91638f
Rollup merge of #49273 - michaelwoerister:fix-extern-proc-macro-defkey, r=eddyb
Fix DefKey lookup for proc-macro crates.

Add a special case for proc-macro crates for `def_key()` in the metadata decoder (like we already have for many other methods in there). In the long run, it would be preferable to get rid of the need for special casing proc-macro crates (see #49271).

Fixes https://github.com/rust-lang/rust/issues/48739 (though I wasn't able to come up with a regression test, unfortunately)

r? @eddyb
2018-03-25 01:26:41 +08:00
Simon Sapin
ee67e14034 Stabilize the copy_closures and clone_closures features
In addition to the `Fn*` family of traits, closures now implement `Copy` (and similarly `Clone`) if all of the captures do.
2018-03-23 11:37:07 +01:00
Alex Crichton
d889957dab rustc: Add a #[wasm_import_module] attribute
This commit adds a new attribute to the Rust compiler specific to the wasm
target (and no other targets). The `#[wasm_import_module]` attribute is used to
specify the module that a name is imported from, and is used like so:

    #[wasm_import_module = "./foo.js"]
    extern {
        fn some_js_function();
    }

Here the import of the symbol `some_js_function` is tagged with the `./foo.js`
module in the wasm output file. Wasm-the-format includes two fields on all
imports, a module and a field. The field is the symbol name (`some_js_function`
above) and the module has historically unconditionally been `"env"`. I'm not
sure if this `"env"` convention has asm.js or LLVM roots, but regardless we'd
like the ability to configure it!

The proposed ES module integration with wasm (aka a wasm module is "just another
ES module") requires that the import module of wasm imports is interpreted as an
ES module import, meaning that you'll need to encode paths, NPM packages, etc.
As a result, we'll need this to be something other than `"env"`!

Unfortunately neither our version of LLVM nor LLD supports custom import modules
(aka anything not `"env"`). My hope is that by the time LLVM 7 is released both
will have support, but in the meantime this commit adds some primitive
encoding/decoding of wasm files to the compiler. This way rustc postprocesses
the wasm module that LLVM emits to ensure it's got all the imports we'd like to
have in it.

Eventually I'd ideally like to unconditionally require this attribute to be
placed on all `extern { ... }` blocks. For now though it seemed prudent to add
it as an unstable attribute, so for now it's not required (as that'd force usage
of a feature gate). Hopefully it doesn't take too long to "stabilize" this!

cc rust-lang-nursery/rust-wasm#29
2018-03-22 13:16:38 -07:00