Commit graph

1189 commits

Author SHA1 Message Date
Eduard-Mihai Burtescu
86206f22a0 rustc: move the MIR pass infrastructure and list to rustc_mir. 2017-11-14 08:52:25 +02:00
bors
7ade24f672 Auto merge of #45666 - Amanieu:tls-model, r=alexcrichton
Allow overriding the TLS model

This PR adds the ability to override the default "global-dynamic" TLS model with a more specific one through a target json option or a command-line option. This allows for better code generation in certain situations.

This is similar to the `-ftls-model=` option in GCC and Clang.
2017-11-07 14:24:15 +00:00
leonardo.yvens
06506bb751 [Syntax Breaking] Rename DefaultImpl to AutoImpl
DefaultImpl is a highly confusing name for what we now call auto impls,
as in `impl Send for ..`. The name auto impl is not formally decided
but for sanity anything is better than `DefaultImpl` which refers
neither to `default impl` nor to `impl Default`.
2017-11-03 16:13:20 -02:00
Amanieu d'Antras
b233a6e096 Add support for specifying the TLS model 2017-11-03 00:29:54 +00:00
bors
2be4cc0402 Auto merge of #45538 - nikomatsakis:nll-liveness, r=pnkfelix
enable non-lexical lifetimes in the MIR borrow checker

This PR, joint work with @spastorino, fills out the NLL infrastructure and integrates it with the borrow checker. **Don't get too excited:** it includes still a number of hacks (the subtyping code is particularly hacky). However, it *does* kinda' work. =)

The final commit demonstrates this by including a test that -- with both the AST borrowck and MIR borrowck -- reports an error by default. But if you pass `-Znll`, you only get an error from the AST borrowck, demonstrating that the integration succeeds:

```
struct MyStruct {
    field: String
}

fn main() {
    let mut my_struct = MyStruct { field: format!("Hello") };

    let value = &my_struct.field;
    if value.is_empty() {
        my_struct.field.push_str("Hello, world!");
        //~^ ERROR cannot borrow (Ast)
    }
}
```
2017-11-01 18:14:13 +00:00
bors
a3f990dc08 Auto merge of #45472 - michaelwoerister:incr-comp-caching-base, r=nikomatsakis
incr.comp.: Implement compiler diagnostic persistence.

This PR implements storing and loading diagnostics that the compiler generates and thus allows for emitting warnings during incremental compilation without actually re-evaluating the thing the warning originally came from. It also lays some groundwork for storing and loading type information and MIR in the incr. comp. cache.

~~It is still work in progress:~~
- ~~There's still some documentation to be added.~~
- ~~The way anonymous queries are handled might lead to duplicated emissions of warnings. Not sure if there is a better way or how frequent such duplication would be in practice.~~

Diagnostic message duplication is addressed separately in #45519.

r? @nikomatsakis
2017-11-01 14:28:11 +00:00
Niko Matsakis
7675ea997a remove the NLL pass (it is now invoked by mir borrowck) 2017-10-31 12:41:40 -04:00
bors
f9d2416594 Auto merge of #44636 - GuillaumeGomez:little-error-msg, r=michaelwoerister
Add short error message-format

Fixes #42653.
2017-10-25 18:19:42 +00:00
Michael Woerister
6faba5bf8d Fix librustc_driver unit test after API change. 2017-10-25 17:33:03 +02:00
Michael Woerister
f55425dfcd incr.comp.: Implement query diagnostic persistence. 2017-10-25 15:43:48 +02:00
Igor Matuszewski
7fa64bcef3 Introduce CrateDisambiguator newtype and fix tests 2017-10-24 17:49:58 +02:00
Igor Matuszewski
d017466d10 Use 128 bit instead of Symbol for crate disambiguator 2017-10-23 18:44:58 +02:00
Guillaume Gomez
83bca40350 Add short message-format 2017-10-20 16:04:32 +02:00
Niko Matsakis
0f568e2f34 convert constant promotion into a query 2017-10-16 17:32:22 -04:00
Felix S. Klock II
cf11ef436b Fixed client code for diagnostics migration, adding new methods to trait BorrowckErrors as necessary. 2017-10-10 13:12:00 +02:00
bors
13ae187043 Auto merge of #44822 - frewsxcv:frewsxcv-eprintln, r=Kimundi
Migrate to eprint/eprintln macros where appropriate.

None
2017-10-10 02:54:14 +00:00
bors
d2f71bf23f Auto merge of #44860 - kennytm:fix-44731, r=alexcrichton
Fix issue #44731.

Also excludes `impl Trait` from everybody_loops if it appears in the path.

Fixes #44731.
2017-10-07 09:36:12 +00:00
Michael Woerister
171c020857 incr.comp.: Remove saving and loading of legacy dep-graph. 2017-10-02 15:47:11 +02:00
Corey Farwell
8ef5447815 Migrate to eprint/eprintln macros where appropriate. 2017-09-28 11:38:35 -04:00
kennytm
16c110f78b
Fix issue #44731.
Also excludes `impl Trait` from everybody_loops if it appears in the path.
2017-09-26 16:46:38 +08:00
bors
3df1f7b82d Auto merge of #44085 - bjorn3:no_llvm_write_metadata, r=arielb1
Allow writing metadata without llvm

# Todo:

* [x] Rebase
* [x] Fix eventual errors
* [x] <strike>Find some crate to write elf files</strike> (will do it later)

Cc #43842
2017-09-25 18:05:22 +00:00
bors
dcb4378e18 Auto merge of #44646 - petrochenkov:scompress, r=michaelwoerister
Compress most of spans to 32 bits

As described in https://internals.rust-lang.org/t/rfc-compiler-refactoring-spans/1357/28

Closes https://github.com/rust-lang/rust/issues/15594
r? @michaelwoerister
2017-09-25 09:01:53 +00:00
Ariel Ben-Yehuda
9c4898eadd address review comments 2017-09-24 12:46:00 +03:00
Ariel Ben-Yehuda
c72a979979 move unsafety checking to MIR
No functional changes intended.
2017-09-24 12:46:00 +03:00
Ariel Ben-Yehuda
8c7500f9b6 add lint levels to VisibilityScope 2017-09-24 12:46:00 +03:00
Michael Woerister
5974ec745e incr.comp.: Serialize and deserialize new DepGraph 2017-09-23 19:47:28 +02:00
Michael Woerister
a7428da415 incr.comp.: Do some various cleanup. 2017-09-23 19:47:20 +02:00
bjorn3
56c46707ed Fix error 2017-09-23 18:07:53 +02:00
bjorn3
18005203e1 Remove now unused dependency on flate2 from rustc_driver 2017-09-23 15:27:54 +02:00
bjorn3
70e5baeb71 Fix tidy errors 2017-09-23 15:23:40 +02:00
bjorn3
793c02db7f Remove build_diagnostic_array hack 2017-09-23 15:10:00 +02:00
bjorn3
43bfd4cd54 Fix some nits 2017-09-23 15:00:49 +02:00
bjorn3
d703552325 Merge rustc_trans_trait into rustc_trans_utils 2017-09-23 13:00:28 +02:00
bjorn3
9eeaba18bd Move NoLlvmMetadataLoader to rustc_trans_traits 2017-09-23 13:00:25 +02:00
bjorn3
44c184382f Add TransCrate trait 2017-09-23 12:59:46 +02:00
bjorn3
89af6d5c8b [WIP] Less hacky way of supporting dylibs 2017-09-23 12:58:19 +02:00
bjorn3
2c03c57bf5 Dont do no-trans for llvm enabled builds 2017-09-23 12:55:34 +02:00
bjorn3
d44a256157 Allow building stage 2 compiler libraries 2017-09-23 12:55:32 +02:00
bjorn3
cba53f0be5 Allow writing metadata without llvm 2017-09-23 12:54:53 +02:00
Vadim Petrochenkov
52251cd930 Compress "small" spans to 32 bits and intern "large" spans 2017-09-23 00:34:13 +03:00
Michael Woerister
9798a88e9e incr.comp.: Add some comments. 2017-09-20 11:34:28 +02:00
Michael Woerister
47d14ccd51 incr.comp.: Remove IncrementalHashesMap and calculate_svh module. 2017-09-20 11:21:25 +02:00
Michael Woerister
c4d1651266 incr.comp.: Store result fingerprints in DepGraph. 2017-09-20 11:21:25 +02:00
Niko Matsakis
44e45d9fea rework the README.md for rustc and add other readmes
This takes way longer than I thought it would. =)
2017-09-19 09:00:59 -04:00
Michael Woerister
d5b1fee6fd incr.comp.: Remove tcx from StableHashingContext. 2017-09-18 11:29:47 +02:00
Alex Crichton
6d614ddc2e rustc: Move codegen to a query
This commit moves the actual code generation in the compiler behind a query
keyed by a codegen unit's name. This ended up entailing quite a few internal
refactorings to enable this, along with a few cut corners:

* The `OutputFilenames` structure is now tracked in the `TyCtxt` as it affects a
  whole bunch of trans and such. This is now behind a query and threaded into
  the construction of the `TyCtxt`.

* The `TyCtxt` now has a channel "out the back" intended to send data to worker
  threads in rustc_trans. This is used as a sort of side effect of the codegen
  query but morally what's happening here is the return value of the query
  (currently unit but morally a path) is only valid once the background threads
  have all finished.

* Dispatching work items to the codegen threads was refactored to only rely on
  data in `TyCtxt`, which mostly just involved refactoring where data was
  stored, moving it from the translation thread to the controller thread's
  `CodegenContext` or the like.

* A new thread locals was introduced in trans to work around the query
  system. This is used in the implementation of `assert_module_sources` which
  looks like an artifact of the old query system and will presumably go away
  once red/green is up and running.
2017-09-17 10:25:50 -07:00
Alex Crichton
3021c1d0bf rustc: Attach an mpsc channel to TyCtxt
This commit attaches a channel to the LLVM workers to the `TyCtxt` which will
later be used during the codegen query to actually send work to LLVM workers.
Otherwise this commit is just plumbing this channel throughout the compiler to
ensure it reaches the right consumers.
2017-09-17 09:41:44 -07:00
Alex Crichton
dba3ddd8d4 rustc: Calculate ExportedSymbols in a query
This commit moves the definition of the `ExportedSymbols` structure to the
`rustc` crate and then creates a query that'll be used to construct the
`ExportedSymbols` set. This in turn uses the reachablity query exposed in the
previous commit.
2017-09-17 09:41:43 -07:00
Alex Crichton
baca9a6240 rustc: Use reachablility through a query
Turns out this was already set up as a query, just wasn't using it yet!
2017-09-17 09:41:43 -07:00
Alex Crichton
1cf956f2ba rustc: Remove Session::dep_graph
This commit removes the `dep_graph` field from the `Session` type according to
issue #44390. Most of the fallout here was relatively straightforward and the
`prepare_session_directory` function was rejiggered a bit to reuse the results
in the later-called `load_dep_graph` function.

Closes #44390
2017-09-14 10:40:50 -07:00