53316 Commits

Author SHA1 Message Date
Felix S. Klock II
58f1a4949d remove unnecessary use of indexed_set::Indexed trait. 2016-05-25 15:41:49 +02:00
Felix S. Klock II
25f37fd651 Add notes that data-structures should potentially move to different crate. 2016-05-25 14:54:31 +02:00
Felix S. Klock II
d9680f5b36 Fix some comments. 2016-05-25 14:52:40 +02:00
Felix S. Klock II
4412c7ab37 placate tidy in compile-fail test. 2016-05-24 23:08:34 +02:00
Felix S. Klock II
fe49b41f83 placate tidy in mir::gather_moves. 2016-05-24 23:08:24 +02:00
Felix S. Klock II
ac6ea44549 placate tidy in mir::dataflow. 2016-05-24 23:08:16 +02:00
Felix S. Klock II
a82676eefa placate tidy in mir::dataflow::graphviz. 2016-05-24 23:08:07 +02:00
Felix S. Klock II
ad1294dbe7 threaded a ty::ParameterEnvironment for the current node id via the associated Ctxt item.
used this to address a long-standing wart/bug in how filtering-out of
values with type impl'ing `Copy` was done.
2016-05-24 23:03:52 +02:00
Felix S. Klock II
fdf80bc60c Removed type Bit and fn interpret items from trait BitDenotation.
Also got rid of the `trait HasMoveData`, since I am now just imposing
the constraint that `BitDenotation<Ctxt=MoveData<'tcx>>` where
necessary instead.
2016-05-24 16:46:19 +02:00
Felix S. Klock II
0cf5f1023e Replaced use of interpret method in mir::dataflow::graphviz with a client-provided closure. 2016-05-24 16:16:42 +02:00
Felix S. Klock II
221cce915a move the tcx and mir parts of associated Ctxt onto each BitDenotation impl. 2016-05-24 15:01:48 +02:00
Felix S. Klock II
ae09c5e36e Moved the four impls of BitDenotation to their own module, mod impls. 2016-05-24 13:26:54 +02:00
Felix S. Klock II
ede29581d2 mir::dataflow::sanity_check: extract an fn each_block to simplify presentation.
As a drive-by: unified pair of match arms that flowed to `bug!`, and
replaced `bug!` invocation with a diagnostic `span_err` invocation.
2016-05-24 12:56:02 +02:00
Felix S. Klock II
b8c6d1c708 Fix comment within sanity_check. 2016-05-24 12:37:39 +02:00
Felix S. Klock II
c48650d14e bug fix to borrowck::indexed_set: wanted bit-count not byte-count. 2016-05-24 12:35:35 +02:00
Felix S. Klock II
71af40bb9d revised mir-dataflow so bitvectors carry a phantom type for their index domain.
As some drive-by's:

 * moved bitwise operators into `mod bitslice`

 * factored out `fn gen` and `fn kill` methods on `BlockSets` type

 * removed outdated comment about `fn propagate_call_return`
2016-05-23 18:26:52 +02:00
Felix S. Klock II
0796ee77ba add indexed_set mod for typed wrappers around bitarrays representing sets.
It provides an `Idx` trait for usize wrappers used to represent the
elements of such sets.
2016-05-23 14:31:52 +02:00
Felix S. Klock II
f18bafdbe1 Refactor bitslice: distinguish usize for indexing vs word type being indexed. 2016-05-20 17:40:22 +02:00
Felix S. Klock II
59008cbd71 review feedback: fix some index-mismatch bugs pointed out by arielb1. 2016-05-20 15:44:30 +02:00
Felix S. Klock II
581195090a Review feedback.
Removed `BitDenotation: DataflowOperator` relationship.

Alpha-renamed `fn initial_value` to `fn bottom_value`.
2016-05-20 14:14:18 +02:00
Felix S. Klock II
a7e3204ac8 mir::dataflow arielb1 review feedback
* removed `on_all_children_bits`, rewriting calls to use `super::on_all_children_bits`

 * moved `fn path` helper routine out of `impl MirBorrowckCtxtPreDataflow`
2016-05-20 13:40:52 +02:00
Felix S. Klock II
9c468f4b65 Added comment pointing out somewhat subtle initialization in fn start_block_effect. 2016-05-20 13:20:33 +02:00
Felix S. Klock II
011c37d59e borrowck::mir: alpha-renamed DropFlagState variant names. 2016-05-20 13:20:00 +02:00
Felix S. Klock II
9fcbe2a2f9 fix comment in impl DataflowOperator for MaybeUninitializedLvals. 2016-05-20 13:18:27 +02:00
Felix S. Klock II
aaad8a209a mir::dataflow::sanity_check: Factor out fn is_rustc_peek helper routine. 2016-05-20 13:18:03 +02:00
Felix S. Klock II
582f060a17 markdown fix suggested during review. 2016-05-20 13:12:02 +02:00
Felix S. Klock II
8999e877ed mir::dataflow::sanity_check: removed hackish tmp = val propagation code.
(it was an artifact of an earlier design of the `rustc_peek` API, but
its totally unnecessary now.)
2016-05-17 09:06:18 +02:00
Felix S. Klock II
90a652617b Escape asterix in markdown file to side-step it being interpreted as emphasis. 2016-05-17 08:44:24 +02:00
Felix S. Klock II
b0b1f4da60 Fix comments in mir::dataflow::sanity_check. 2016-05-17 08:41:41 +02:00
Felix S. Klock II
cd71b0dd54 core::intrinsics: fix typo noted during review. 2016-05-16 17:10:44 +02:00
Felix S. Klock II
ee44f7ed27 DefinitelyInitializedLvals dataflow op (goal: move away from MaybeUninitializedLvals) 2016-05-16 13:34:33 +02:00
Felix S. Klock II
8956789c35 Little unit tests for MIR dataflow analysis.
These use new `rustc_peek` (whose semantics is driven by attribute
attached to fn).
2016-05-16 13:34:33 +02:00
Felix S. Klock II
5839e6bb10 Add ability to unit-test dataflow results via rustc_peek intrinsic.
(The static semantics of `rustc_peek` is derived from attributes
attached to the function being compiled; in this case,
`rustc_peek(&expr)` observes the dataflow state for the l-value
`expr`.)
2016-05-16 13:34:33 +02:00
Felix S. Klock II
3bb598429a Adding magic rustc_peek intrinsic that other code can repurpose to
its own needs based on attributes attached to the function where it
appears.
2016-05-16 13:34:33 +02:00
Felix S. Klock II
c73f3517a2 Revised mir-dataflow.
Incorporates many fixes contributed by arielb1.

----

revise borrowck::mir::dataflow code to allow varying domain for bitvectors.

This particular code implements the `BitDenotation` trait for three
analyses:

 * `MovingOutStatements`, which, like `borrowck::move_data`, maps each
   bit-index to a move instruction, and a 1 means "the effect of this
   move reaches this point" (and the assigned l-value, if a scoped
   declaration, is still in scope).

 * `MaybeInitializedLvals`, which maps each bit-index to an l-value.
   A 1 means "there exists a control flow path to this point that
   initializes the associated l-value."

 * `MaybeUninitializedLvals`, which maps each bit-index to an l-value
   A 1 means "there exists a control flow path to this point that
   de-initializes the associated l-value."

----

Revised `graphviz` dataflow-rendering support in `borrowck::mir`.

One big difference is that this code is now parameterized over the
`BitDenotation`, so that it can be used to render dataflow results
independent of how the dataflow bitvectors are interpreted; see where
reference to `MoveOut` is replaced by the type parameter `D`.

----

Factor out routine to query subattributes in `#[rustc_mir(..)]`.

(Later commits build upon this for some unit testing and instrumentation.)

----

thread through a tcx so that I can query types of lvalues as part of analysis.

----

Revised `BitDenotation::Ctxt`, allowing variation beyond `MoveData`.

The main motivation is to ease threading through a `TyCtxt`.

(In hindsight it might have been better to instead attach the `TyCtxt`
to each of the different dataflow implementations, but that would
require e.g. switching away from having a `Default` impl, so I am
leaving that experiment for another time.)
2016-05-16 13:34:25 +02:00
Felix S. Klock II
6c72c5fa88 borrowck::mir::gather_moves: create MovePaths for lvalues even if unreferenced.
includes misc bug fixes and removal of useless code.
2016-05-16 10:00:35 +02:00
Felix S. Klock II
d03b341e6b Unit struct defns for 3 dataflow analyses for borrowck::mir::dataflow. 2016-05-16 09:13:42 +02:00
Felix S. Klock II
79ab85544b Remove &self parameter from DataflowOperator::initial_value. 2016-05-16 09:13:42 +02:00
Felix S. Klock II
b4972b00c9 Add helper method for getting the dataflow results at exit from a basic block. 2016-05-16 09:13:42 +02:00
Felix S. Klock II
129b371cae One-line doc clarification for representation of unit type (). 2016-05-16 09:13:42 +02:00
Felix S. Klock II
4446e793da Expose pretty print routines that accept just mir (no need for a NodeId). 2016-05-16 09:13:42 +02:00
Felix S. Klock II
90b7a86268 rustc_mir::pretty refactoring: break fn write_fn_intro into two routines.
(The crucial thing these changes are working toward (but are not yet
in this commit) is a way to pretty-print MIR without having the
`NodeId` for that MIR in hand.)
2016-05-16 09:13:42 +02:00
Felix S. Klock II
306ca4ca4f rustc_mir::pretty: factor out scope entry/exit annotation computation. 2016-05-16 09:13:42 +02:00
Felix S. Klock II
bfe789c044 fixes to librustc_borrowck::bitslice::bits_to_string, used for graphviz printing. 2016-05-16 09:13:42 +02:00
Felix S. Klock II
cd81b60a4a fix bug in debug! output from rustc::middle::dataflow
(bug was cut/pasted into `rustc_borrowck::bitslice`, so I fixed it
there as well.)
2016-05-16 09:13:42 +02:00
bors
e90307d2a2 Auto merge of #33251 - Kintaro:fix-typo-in-fs, r=GuillaumeGomez
Fix a typo in error messages in std::fs tests

Just a small correction to fix a typo in an error message in std::fs tests
2016-05-15 20:47:15 -07:00
bors
bb39c4925a Auto merge of #33643 - eddyb:rollup, r=eddyb
Rollup of 27 pull requests

- Successful merges: #33342, #33393, #33415, #33475, #33517, #33533, #33534, #33565, #33580, #33584, #33585, #33588, #33590, #33591, #33593, #33598, #33600, #33602, #33603, #33604, #33605, #33607, #33612, #33620, #33633, #33634, #33635
- Failed merges: #33578
2016-05-15 18:22:51 -07:00
Eduard-Mihai Burtescu
ffbfbe452c Rollup merge of #33660 - fbergr:doc, r=steveklabnik
Update link to license

Permanent redirect (301). The link should be updated.
2016-05-16 02:00:20 +03:00
Eduard-Mihai Burtescu
b4da51a0a3 Rollup merge of #33635 - tshepang:capitalise, r=steveklabnik
doc: 'tis the lang, not the reptile
2016-05-16 02:00:20 +03:00
Eduard-Mihai Burtescu
b0c897279e Rollup merge of #33634 - tshepang:nicer-output, r=steveklabnik
doc: improve output
2016-05-16 02:00:19 +03:00