- 05 3月, 2018 1 次提交
-
-
由 Michael Woerister 提交于
-
- 06 12月, 2017 2 次提交
-
-
由 Oliver Schneider 提交于
-
由 Ariel Ben-Yehuda 提交于
This fixes the tests for issue #29793
-
- 02 12月, 2017 2 次提交
-
-
由 Eduard-Mihai Burtescu 提交于
-
由 Eduard-Mihai Burtescu 提交于
-
- 15 9月, 2017 1 次提交
-
-
由 Douglas Campos 提交于
-
- 05 9月, 2017 2 次提交
-
-
由 Felix S. Klock II 提交于
This way the miri test suite does not have to be updated to explcitly request `-Z emit-end-regions`.
-
由 Felix S. Klock II 提交于
The main intent is to fix cases where EndRegion emission is believed to be causing excess peak memory pressure. It may also be a welcome change to people inspecting the MIR output who find the EndRegions to be a distraction.
-
- 02 9月, 2017 1 次提交
-
-
由 Eduard-Mihai Burtescu 提交于
-
- 16 8月, 2017 1 次提交
-
-
由 Zack M. Davis 提交于
Like #43008 (f6689991), but _much more aggressive_.
-
- 12 6月, 2017 1 次提交
-
-
由 Felix S. Klock II 提交于
* Emit `EndRegion` for every code-extent for which we observe a borrow. To do this, we needed to thread source info back through to `fn in_scope`, which makes this commit a bit more painful than one might have expected. * There is `end_region` emission in `Builder::pop_scope` and in `Builder::exit_scope`; the first handles falling out of a scope normally, the second handles e.g. `break`. * Remove `EndRegion` statements during the erase_regions mir transformation. * Preallocate the terminator block, and throw an `Unreachable` marker on it from the outset. Then overwrite that Terminator as necessary on demand. * Instead of marking the scope as needs_cleanup after seeing a borrow, just treat every scope in the chain as being part of the diverge_block (after any *one* of them has separately signalled that it needs cleanup, e.g. due to having a destructor to run). * Allow for resume terminators to be patched when looking up drop flags. (In particular, `MirPatch::new` has an explicit code path, presumably previously unreachable, that patches up such resume terminators.) * Make `Scope` implement `Debug` trait. * Expanded a stray comment: we do not emit StorageDead on diverging paths, but that end behavior might not be desirable.
-
- 12 5月, 2017 1 次提交
-
-
由 Ariel Ben-Yehuda 提交于
Operand: 72 -> 24 B Statement: 192 -> 96 B Terminator: 256 -> 112 B librustc translation memory usage: 1795 -> 1669 MB next step would be interning lvalues, I suppose?
-
- 02 4月, 2017 1 次提交
-
-
由 Ariel Ben-Yehuda 提交于
LLVM has a bug - PR32488 - where it fails to deduplicate allocas in some circumstances. The function `start_new_block` has allocas totalling 1216 bytes, and when LLVM inlines several copies of that function into the recursive function `expr::into`, that function's stack space usage goes into tens of kiBs, causing stack overflows. Mark `start_new_block` as inline(never) to keep it from being inlined, getting stack usage under control. Fixes #40493. Fixes #40573.
-
- 14 11月, 2016 1 次提交
-
-
由 Nicholas Nethercote 提交于
This reduces the peak RSS for a cut-down version of the program in #36799 by 10%, from 951MB to 856MB.
-
- 28 10月, 2016 1 次提交
-
-
由 Eduard Burtescu 提交于
-
- 19 8月, 2016 1 次提交
-
-
由 Scott A Carr 提交于
-
- 10 6月, 2016 1 次提交
-
-
由 Ariel Ben-Yehuda 提交于
-
- 09 6月, 2016 1 次提交
-
-
由 Ariel Ben-Yehuda 提交于
-
- 08 6月, 2016 1 次提交
-
-
由 Eduard Burtescu 提交于
-
- 07 6月, 2016 1 次提交
-
-
由 Eduard Burtescu 提交于
-
- 05 6月, 2016 2 次提交
-
-
由 James Miller 提交于
This is simpler to work with than `with_cond`.
-
由 James Miller 提交于
Factors out the common pattern across the several places that do arithmetic checks
-
- 24 3月, 2016 4 次提交
-
-
由 Niko Matsakis 提交于
-
由 Niko Matsakis 提交于
-
由 Niko Matsakis 提交于
-
由 Niko Matsakis 提交于
-
- 04 2月, 2016 3 次提交
-
-
由 Simonas Kazlauskas 提交于
The structure of the old translator as well as MIR assumed that drop glue cannot possibly panic and translated the drops accordingly. However, in presence of `Drop::drop` this assumption can be trivially shown to be untrue. As such, the Rust code like the following would never print number 2: ```rust struct Droppable(u32); impl Drop for Droppable { fn drop(&mut self) { if self.0 == 1 { panic!("Droppable(1)") } else { println!("{}", self.0) } } } fn main() { let x = Droppable(2); let y = Droppable(1); } ``` While the behaviour is allowed according to the language rules (we allow drops to not run), that’s a very counter-intuitive behaviour. We fix this in MIR by allowing `Drop` to have a target to take on divergence and connect the drops in such a way so the leftover drops are executed when some drop unwinds. Note, that this commit still does not implement the translator part of changes necessary for the grand scheme of things to fully work, so the actual observed behaviour does not change yet. Coming soon™. See #14875.
-
由 Simonas Kazlauskas 提交于
This helps to avoid the unpleasant restriction of being unable to have multiple successors in non-contiguous block of memory.
-
由 Simonas Kazlauskas 提交于
This gets rid of Drop(Free, _) MIR construct by synthesizing a call to language item which takes care of dropping instead.
-
- 07 1月, 2016 1 次提交
-
-
由 Simonas Kazlauskas 提交于
Assign a default unit value to the destinations of block expressions without trailing expression, return expressions without return value (i.e. `return;`) and conditionals without else clause.
-
- 06 1月, 2016 1 次提交
-
-
由 Simonas Kazlauskas 提交于
Unreachable terminator can be contained all within the trans.
-
- 30 11月, 2015 1 次提交
-
-
由 Michael Woerister 提交于
This is done mostly so that we can refer to MIR types in csearch and other metadata related area.
-
- 25 11月, 2015 1 次提交
-
-
由 Niko Matsakis 提交于
the right information, but it's hard to maintain in the face of optimizations, and in the form that the analyses probably actually want.
-
- 07 10月, 2015 1 次提交
-
-
由 Ms2ger 提交于
This commit contains some of the changes proposed by a rustfmt invocation, chosen based on the fairly non-deterministic metric of how much I liked the change. I expect we will run rustfmt on this crate again later, probably accepting more of its changes. For now, this is already an improvement over the status-quo.
-
- 06 10月, 2015 1 次提交
-
-
由 Niko Matsakis 提交于
-
- 06 9月, 2015 1 次提交
-
-
由 Niko Matsakis 提交于
-