| Age | Commit message (Collapse) | Author | Lines | |
|---|---|---|---|---|
| 2020-06-13 | placate tidy. | Felix S. Klock II | -1/+1 | |
| 2020-06-13 | Revert "Reduce the number of drop-flag assignments in unwind paths" | Felix S. Klock II | -1/+4 | |
| This reverts commit 54aa418a6082b364b90feee70b07381ea266c4d5. | ||||
| 2020-06-13 | Revert "Address review comments" | Felix S. Klock II | -6/+2 | |
| This reverts commit b998497bd41d6de71ec035433247dee856d1f3a5. | ||||
| 2020-06-01 | Auto merge of #71192 - oli-obk:eager_alloc_id_canonicalization, r=wesleywiser | bors | -0/+1 | |
| Make TLS accesses explicit in MIR r? @rust-lang/wg-mir-opt cc @RalfJung @vakaras for miri thread locals cc @bjorn3 for cranelift fixes #70685 | ||||
| 2020-05-30 | Make TLS accesses explicit in MIR | Oliver Scherer | -0/+1 | |
| 2020-05-29 | Improve inline asm error diagnostics | Amanieu d'Antras | -1/+7 | |
| 2020-05-23 | take mir::PlaceElem by value | Bastian Kauschke | -3/+3 | |
| 2020-05-23 | iterate List by value | Bastian Kauschke | -1/+1 | |
| 2020-05-18 | Add asm! to MIR | Amanieu d'Antras | -0/+25 | |
| 2020-05-09 | Address review comments | Matthew Jasper | -2/+6 | |
| 2020-05-09 | Reduce the number of drop-flag assignments in unwind paths | Matthew Jasper | -4/+1 | |
| 2020-04-16 | don't clone types that are copy (clippy::clone_on_copy) | Matthias Krüger | -4/+3 | |
| 2020-03-31 | Use Place directly, it's Copy even more use cases | Santiago Pastorino | -19/+19 | |
| 2020-03-30 | Use if let instead of match when only matching a single variant ↵ | Matthias Krüger | -4/+5 | |
| (clippy::single_match) Makes code more compact and reduces nestig. | ||||
| 2020-03-30 | rustc -> rustc_middle part 3 (rustfmt) | Mazdak Farrokhzad | -3/+3 | |
| 2020-03-30 | rustc -> rustc_middle part 2 | Mazdak Farrokhzad | -7/+7 | |
| 2020-03-26 | Rename asm! to llvm_asm! | Amanieu d'Antras | -1/+1 | |
| asm! is left as a wrapper around llvm_asm! to maintain compatibility. | ||||
| 2020-03-22 | don't create variable bindings just to return the bound value immediately ↵ | Matthias Krüger | -3/+2 | |
| (clippy::let_and_return) | ||||
| 2020-03-10 | Rollup merge of #69714 - spastorino:place-ref-lifetime, r=oli-obk | Mazdak Farrokhzad | -2/+2 | |
| Make PlaceRef take just one lifetime r? @eddyb | ||||
| 2020-03-06 | Don't redundantly repeat field names (clippy::redundant_field_names) | Matthias Krüger | -1/+1 | |
| 2020-03-04 | PlaceRef<'a, 'tcx> -> PlaceRef<'tcx> | Santiago Pastorino | -2/+2 | |
| 2020-03-04 | Make PlaceRef lifetimes of in_projection be both 'tcx | Santiago Pastorino | -1/+1 | |
| 2020-02-27 | Auto merge of #68528 - ecstatic-morse:maybe-init-variants, r=oli-obk | bors | -10/+42 | |
| Mark other variants as uninitialized after switch on discriminant During drop elaboration, which builds the drop ladder that handles destruction during stack unwinding, we attempt to remove MIR `Drop` terminators that will never be reached in practice. This reduces the number of basic blocks that are passed to LLVM, which should improve performance. In #66753, a user pointed out that unreachable `Drop` terminators are common in functions like `Option::unwrap`, which move out of an `enum`. While discussing possible remedies for that issue, @eddyb suggested moving const-checking after drop elaboration. This would allow the former, which looks for `Drop` terminators and replicates a small amount of drop elaboration to determine whether a dropped local has been moved out, leverage the work done by the latter. However, it turns out that drop elaboration is not as precise as it could be when it comes to eliminating useless drop terminators. For example, let's look at the code for `unwrap_or`. ```rust fn unwrap_or<T>(opt: Option<T>, default: T) -> T { match opt { Some(inner) => inner, None => default, } } ``` `opt` never needs to be dropped, since it is either moved out of (if it is `Some`) or has no drop glue (if it is `None`), and `default` only needs to be dropped if `opt` is `Some`. This is not reflected in the MIR we currently pass to codegen.  @eddyb also suggested the solution to this problem. When we switch on an enum discriminant, we should be marking all fields in other variants as definitely uninitialized. I implemented this on top of alongside a small optimization (split out into #68943) that suppresses drop terminators for enum variants with no fields (e.g. `Option::None`). This is the resulting MIR for `unwrap_or`.  In concert with #68943, this change speeds up many [optimized and debug builds](https://perf.rust-lang.org/compare.html?start=d55f3e9f1da631c636b54a7c22c1caccbe4bf0db&end=0077a7aa11ebc2462851676f9f464d5221b17d6a). We need to carefully investigate whether I have introduced any miscompilations before merging this. Code that never drops anything would be very fast indeed until memory is exhausted. | ||||
| 2020-02-19 | Reorder yield visitation order to match call | Jonas Schievink | -1/+1 | |
| 2020-02-13 | Use an `Iterator` for `MovePath` traversal | Dylan MacKenzie | -10/+42 | |
| 2020-02-10 | Implement a `find_descendant` method for `MovePath` | Dylan MacKenzie | -0/+47 | |
| 2020-02-02 | Add resume arg place to `Yield` MIR terminator | Jonas Schievink | -1/+3 | |
| 2020-01-28 | Place::ty_from takes local by value | Santiago Pastorino | -2/+2 | |
| 2020-01-28 | Local field on PlaceRef and RootPlace is not a reference anymore | Santiago Pastorino | -2/+2 | |
| 2020-01-27 | don't clone types that are copy, round two. | Matthias Krüger | -8/+6 | |
| 2020-01-10 | Remove PlaceBase enum and make Place base field be local: Local | Santiago Pastorino | -12/+8 | |
| 2020-01-10 | Remove Static from PlaceBase | Santiago Pastorino | -7/+0 | |
| 2020-01-06 | Improve hygiene of `newtype_index` | Matthew Jasper | -1/+1 | |
| Also add unit tests | ||||
| 2020-01-04 | canonicalize FxHash{Map,Set} imports | Mazdak Farrokhzad | -1/+1 | |
| 2020-01-01 | Rename `syntax_pos` to `rustc_span` in source code | Vadim Petrochenkov | -1/+1 | |
| 2019-12-22 | Format the world | Mark Rousskov | -37/+27 | |
| 2019-12-20 | Rollup merge of #67314 - matthewjasper:union-move-errors, r=nikomatsakis | Mazdak Farrokhzad | -9/+22 | |
| Don't suppress move errors for union fields closes #66500 | ||||
| 2019-12-19 | Don't suppress move errors for union fields | Matthew Jasper | -9/+22 | |
| 2019-12-18 | Add Rvalue::AddressOf to MIR | Matthew Jasper | -0/+1 | |
| This operator creates a raw pointer to a Place directly, without first creating a reference. See RFC #2582 for motivation. The Rvalue is currently unused. | ||||
| 2019-12-09 | Remove `uniform_array_move_out` passes | Matthew Jasper | -38/+93 | |
| These passes were buggy, MIR building is now responsible for canonicalizing `ConstantIndex` projections and `MoveData` is responsible for splitting `Subslice` projections. | ||||
| 2019-12-09 | Make const index and subslice array projections more useful | Matthew Jasper | -4/+5 | |
| * `min_length` is now exact for const index elements. * const index elements are always from the start. * make array `Subslice` `PlaceElems` count both `from` and `to` from the start. | ||||
| 2019-10-22 | Move Place::elem methods and friends to TyCtxt | Santiago Pastorino | -1/+1 | |
| 2019-10-22 | Intern place projection | Santiago Pastorino | -3/+3 | |
| 2019-10-22 | Pattern match over PlaceRef rather than Place | Santiago Pastorino | -1/+1 | |
| This prepares the code base for when projection is interned. Place's projection field is going to be `&List<PlaceElem<'tcx>>` so we won't be able to pattern match against it. | ||||
| 2019-09-29 | remove indexed_vec re-export from rustc_data_structures | csmoe | -5/+5 | |
| 2019-09-25 | Rename `sty` to `kind` | varkor | -2/+2 | |
| 2019-09-11 | Make Place Boxed on Statement to reduce size from 64 bytes to 32 bytes | Santiago Pastorino | -1/+1 | |
| 2019-09-09 | Use slice patterns to match projection base | Santiago Pastorino | -2/+1 | |
| 2019-09-09 | Convert Place's projection to a boxed slice | Santiago Pastorino | -83/+81 | |
| 2019-09-04 | Rustfmt the files I touched | Albin Stjerna | -135/+147 | |
