61 Commits

Author SHA1 Message Date
Dylan MacKenzie
48ebd2cdb8 Remove const_if_match feature gate from libraries 2020-06-28 10:08:09 -07:00
Lukas Kalbertodt
1e6e082039
Remove uses of Vec::remove_item 2020-06-20 12:12:28 +02:00
Matthew Jasper
88ea7e5234 Use min_specialization in the remaining rustc crates 2020-06-10 09:05:52 +01:00
Vadim Petrochenkov
283e5b4106 Rename the crates in source code 2020-06-02 20:42:54 +03:00
Vadim Petrochenkov
11d951492c Make things build again 2020-06-02 20:38:24 +03:00
Matthew Jasper
8894bd220b Add descriptions for all queries 2020-05-31 20:15:32 +01:00
Dylan DPC
96caa257c3
Rollup merge of #72126 - nnethercote:change-WorkProduct-saved_files, r=alexcrichton
Change `WorkProduct::saved_files` to an `Option`.

Because there is at most one file.

r? @bjorn3
2020-05-14 18:21:50 +02:00
Nicholas Nethercote
98d6254415 Change WorkProduct::saved_files to an Option.
Because there is at most one file.
2020-05-12 17:55:07 +10:00
Dylan DPC
dfa3677bee
Rollup merge of #72109 - matthiaskrgr:cl8ppy, r=Dylan-DPC
Fix clippy warnings

Fixes clippy::{cone_on_copy, filter_next, redundant_closure, single_char_pattern, len_zero,redundant_field_names, useless_format, identity_conversion, map_clone, into_iter_on_ref, needless_return, option_as_ref_deref, unused_unit, unnecessary_mut_passed}

r? @Dylan-DPC
2020-05-11 22:21:08 +02:00
Matthias Krüger
8bfd84539e Fix clippy warnings
Fixes clippy::{cone_on_copy, filter_next, redundant_closure, single_char_pattern, len_zero,redundant_field_names, useless_format, identity_conversion, map_clone, into_iter_on_ref, needless_return, option_as_ref_deref, unused_unit, unnecessary_mut_passed}
2020-05-11 17:13:32 +02:00
Ralf Jung
c82103cb21 use min_specialization for some rustc crates where it requires no changes 2020-05-10 11:25:00 +02:00
bors
649b6323cd Auto merge of #71754 - alexcrichton:no-bitcode-in-cache, r=nnethercote
Don't copy bytecode files into the incr. comp. cache.

It's no longer necessary now that bitcode is embedded into object files.

This change meant that `WorkProductFileKind::Bytecode` is no longer
necessary, which means that type is no longer necessary, which allowed
several places in the code to become simpler.

This commit was written by @nnethercote in https://github.com/rust-lang/rust/pull/70458 but that didn't land. In the meantime though we managed to land it in https://github.com/rust-lang/rust/pull/71528 and that doesn't seem to be causing too many fires, so I'm re-sending this patch!
2020-05-04 14:14:55 +00:00
Nicholas Nethercote
d4e5e1bcff Don't copy bytecode files into the incr. comp. cache.
It's no longer necessary now that bitcode is embedded into object files.

This change meant that `WorkProductFileKind::Bytecode` is no longer
necessary, which means that type is no longer necessary, which allowed
several places in the code to become simpler.
2020-05-01 08:14:39 -07:00
Camille GILLOT
e4976d0caf Restrict access. 2020-05-01 15:10:45 +02:00
Camille GILLOT
282d72f6bb Inline a few things. 2020-05-01 15:10:12 +02:00
Camille GILLOT
49e024ee7c Monomorphise the interface. 2020-05-01 14:53:55 +02:00
Camille GILLOT
e15383cce1 Move the DepNode construction to librustc_query_system. 2020-05-01 14:48:14 +02:00
Camille GILLOT
8f3e96d658 Monomorphise try_execute_query. 2020-05-01 14:40:17 +02:00
Camille GILLOT
1c7376e797 Monomorphise try_start. 2020-05-01 14:37:12 +02:00
Camille GILLOT
d56085cbc9 Monomorphise try_execute_anon_query. 2020-05-01 14:32:11 +02:00
Camille GILLOT
85704a41db Monomorphise load_from_disk_and_cache_in_memory. 2020-05-01 14:29:35 +02:00
Camille GILLOT
1b2deaf57a Monomorphise force_query_with_job. 2020-05-01 14:28:57 +02:00
bors
e94eaa6dce Auto merge of #70674 - cjgillot:query-arena-all, r=matthewjasper
Have the per-query caches store the results on arenas

This PR leverages the cache for each query to serve as storage area for the query results.

It introduces a new cache `ArenaCache`, which moves the result to an arena,
and only stores the reference in the hash map.
This allows to remove a sizeable part of the usage of the global `TyCtxt` arena.

I only migrated queries that already used arenas before.
2020-05-01 01:38:05 +00:00
bors
1357af3a55 Auto merge of #71528 - alexcrichton:no-more-bitcode, r=nnethercote
Store LLVM bitcode in object files, not compressed

This commit is an attempted resurrection of #70458 where LLVM bitcode
emitted by rustc into rlibs is stored into object file sections rather
than in a separate file. The main rationale for doing this is that when
rustc emits bitcode it will no longer use a custom compression scheme
which makes it both easier to interoperate with existing tools and also
cuts down on compile time since this compression isn't happening.

The blocker for this in #70458 turned out to be that native linkers
didn't handle the new sections well, causing the sections to either
trigger bugs in the linker or actually end up in the final linked
artifact. This commit attempts to address these issues by ensuring that
native linkers ignore the new sections by inserting custom flags with
module-level inline assembly.

Note that this does not currently change the API of the compiler at all.
The pre-existing `-C bitcode-in-rlib` flag is co-opted to indicate
whether the bitcode should be present in the object file or not.

Finally, note that an important consequence of this commit, which is also
one of its primary purposes, is to enable rustc's `-Clto` bitcode
loading to load rlibs produced with `-Clinker-plugin-lto`. The goal here
is that when you're building with LTO Cargo will tell rustc to skip
codegen of all intermediate crates and only generate LLVM IR. Today
rustc will generate both object code and LLVM IR, but the object code is
later simply thrown away, wastefully.
2020-04-29 23:47:27 +00:00
Alex Crichton
ef89cc8f04 Store LLVM bitcode in object files, not compressed
This commit is an attempted resurrection of #70458 where LLVM bitcode
emitted by rustc into rlibs is stored into object file sections rather
than in a separate file. The main rationale for doing this is that when
rustc emits bitcode it will no longer use a custom compression scheme
which makes it both easier to interoperate with existing tools and also
cuts down on compile time since this compression isn't happening.

The blocker for this in #70458 turned out to be that native linkers
didn't handle the new sections well, causing the sections to either
trigger bugs in the linker or actually end up in the final linked
artifact. This commit attempts to address these issues by ensuring that
native linkers ignore the new sections by inserting custom flags with
module-level inline assembly.

Note that this does not currently change the API of the compiler at all.
The pre-existing `-C bitcode-in-rlib` flag is co-opted to indicate
whether the bitcode should be present in the object file or not.

Finally, note that an important consequence of this commit, which is also
one of its primary purposes, is to enable rustc's `-Clto` bitcode
loading to load rlibs produced with `-Clinker-plugin-lto`. The goal here
is that when you're building with LTO Cargo will tell rustc to skip
codegen of all intermediate crates and only generate LLVM IR. Today
rustc will generate both object code and LLVM IR, but the object code is
later simply thrown away, wastefully.
2020-04-29 11:57:26 -07:00
Camille GILLOT
d7d2185607 Add inlining. 2020-04-28 11:57:38 +02:00
Camille GILLOT
143b8816a3 Stop leaking memory. 2020-04-28 11:34:53 +02:00
Camille GILLOT
bd42ef6e4f Introduce ArenaStorage. 2020-04-28 11:24:53 +02:00
Camille GILLOT
e8ef41e83f Allow the QueryCache to specify storage. 2020-04-28 11:14:48 +02:00
Josh Stone
2325c20925 Avoid unused Option::map results
These are changes that would be needed if we add `#[must_use]` to
`Option::map`, per #71484.
2020-04-24 13:58:41 -07:00
Shotaro Yamada
33905adc5f Remove unused dependencies 2020-04-20 17:59:27 +09:00
bors
9b2f8dbba3 Auto merge of #71007 - Amanieu:deprecate_asm, r=Mark-Simulacrum
Deprecate the asm! macro in favor of llvm_asm!

Since we will be changing the syntax of `asm!` soon, deprecate it and encourage people to use `llvm_asm!` instead (which preserves the old syntax). This will avoid breakage when `asm!` is changed.

RFC: https://github.com/rust-lang/rfcs/pull/2843
2020-04-20 02:18:00 +00:00
Matthias Krüger
3837df2992 don't clone types that are copy (clippy::clone_on_copy) 2020-04-16 00:17:38 +02:00
Amanieu d'Antras
c4ca63885e Update parking_lot dependency to avoid use of deprecated asm! 2020-04-15 17:46:29 +01:00
John Kåre Alsaker
87cdfb6e71 Add inline attributes for functions used in the query system 2020-03-30 14:37:44 +02:00
Mazdak Farrokhzad
7710f2dd5c rustc -> rustc_middle part 1 2020-03-30 07:02:56 +02:00
Camille GILLOT
2d7bbda966 Implement HashStable directly. 2020-03-27 08:33:37 +01:00
Camille GILLOT
222d010255 Cleanups. 2020-03-27 07:50:28 +01:00
Camille GILLOT
db5be1fe20 Move QueryContext to the parent module. 2020-03-27 07:43:11 +01:00
Camille GILLOT
4faf701d20 Remove the QueryGetter trait. 2020-03-27 07:35:32 +01:00
Camille GILLOT
260cfaba12 Don't allow access to the Session. 2020-03-26 09:40:52 +01:00
Camille GILLOT
d224e214e0 Rename read_query_job -> current_query_job and simplify it. 2020-03-26 09:40:52 +01:00
Camille GILLOT
fce0d37619 Add comment. 2020-03-26 09:40:52 +01:00
Camille GILLOT
5dfed41812 Simplify generics on try_start. 2020-03-26 09:40:51 +01:00
Camille GILLOT
fa06cfd25b Move generics on QueryCache. 2020-03-26 09:40:51 +01:00
Camille GILLOT
0e8b59a2f4 Prune dependencies. 2020-03-26 09:40:51 +01:00
Camille GILLOT
b6033fca02 Retire DepGraphSafe and HashStableContext. 2020-03-26 09:40:51 +01:00
Camille GILLOT
228ca8ef0a Access QueryStateShard directly. 2020-03-26 09:40:50 +01:00
Camille GILLOT
d305b2ccc6 Unify key types in get_lookup. 2020-03-26 09:40:50 +01:00
Camille GILLOT
301ad11e9b Rustfmt. 2020-03-26 09:40:50 +01:00