about summary refs log tree commit diff
path: root/compiler/rustc_mir/src/transform
AgeCommit message (Collapse)AuthorLines
2021-01-17Fix `unused_unsafe` label with `unsafe_block_in_unsafe_fnLeSeulArtichaut-8/+9
2021-01-17Avoid logging the whole MIR body in SimplifyCfgTomasz Miąsko-1/+1
2021-01-17Copy body span instead of querying itDániel Buga-1/+1
2021-01-17Add regression testoli-5/+15
2021-01-17Remove an unnecessary field from a `NonConstOp`oli-3/+3
2021-01-17Visit only terminators when removing unneeded dropsTomasz Miąsko-41/+20
No functional changes intended
2021-01-16Review changesJack Huey-16/+16
2021-01-16Auto merge of #80290 - RalfJung:less-intrinsic-write, r=lcnrbors-8/+0
implement ptr::write without dedicated intrinsic This makes `ptr::write` more consistent with `ptr::write_unaligned`, `ptr::read`, `ptr::read_unaligned`, all of which are implemented in terms of `copy_nonoverlapping`. This means we can also remove `move_val_init` implementations in codegen and Miri, and its special handling in the borrow checker. Also see [this Zulip discussion](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/ptr.3A.3Aread.20vs.20ptr.3A.3Awrite).
2021-01-16Use PlaceRef more consistently in rustc_mirOlivia Crain-90/+83
2021-01-15inline: Round word-size cost estimates upTomasz Miąsko-1/+1
2021-01-14Use Option::map_or instead of `.map(..).unwrap_or(..)`LingMan-2/+2
2021-01-12Auto merge of #78407 - oli-obk:ub_checkable_ctfe, r=RalfJung,pnkfelixbors-27/+123
Make CTFE able to check for UB... ... by not doing any optimizations on the `const fn` MIR used in CTFE. This means we duplicate all `const fn`'s MIR now, once for CTFE, once for runtime. This PR is for checking the perf effect, so we have some data when talking about https://github.com/rust-lang/const-eval/blob/master/rfcs/0000-const-ub.md To do this, we now have two queries for obtaining mir: `optimized_mir` and `mir_for_ctfe`. It is now illegal to invoke `optimized_mir` to obtain the MIR of a const/static item's initializer, an array length, an inline const expression or an enum discriminant initializer. For `const fn`, both `optimized_mir` and `mir_for_ctfe` work, the former returning the MIR that LLVM should use if the function is called at runtime. Similarly it is illegal to invoke `mir_for_ctfe` on regular functions. This is all checked via appropriate assertions and I don't think it is easy to get wrong, as there should be no `mir_for_ctfe` calls outside the const evaluator or metadata encoding. Almost all rustc devs should keep using `optimized_mir` (or `instance_mir` for that matter).
2021-01-12Coverage computation needs access to the MIR, toooli-6/+13
2021-01-12Auto merge of #80499 - matthiaskrgr:red_clos, r=estebankbors-6/+6
remove redundant closures (clippy::redundant_closure)
2021-01-10Add ABI argument to `find_mir_or_eval_fn`Nym Seddon-0/+2
Add ABI argument for called function in `find_mir_or_eval_fn` and `call_extra_fn`. Useful for comparing with expected ABI in interpreters. Related to [miri/1631](https://github.com/rust-lang/miri/issues/1631)
2021-01-08Rollup merge of #80521 - richkadel:llvm-coverage-counters-2.4.0, r=wesleywiserYuki Okushi-0/+9
MIR Inline is incompatible with coverage Fixes: #80060 Fixed by disabling inlining if `-Zinstrument-coverage` is set. The PR also adds additional use cases to the coverage test for doctests. r? `@wesleywiser` cc: `@tmandry`
2021-01-07Auto merge of #80648 - Aaron1011:expn-data-private, r=petrochenkovbors-4/+4
Make `ExpnData` fields `krate` and `orig_id` private These fields are only used by hygiene serialized, and should not be accessed by anything outside of `rustc_span`.
2021-01-04Do not run const prop on the `mir_for_ctfe` of `const fn`oli-19/+34
2021-01-04No doc comments on expressionsoli-3/+3
2021-01-04Small comment adjustmentsoli-0/+3
2021-01-04Move MIR body loading to a machine functionoli-0/+7
2021-01-04Document all the thingsoli-0/+13
2021-01-04Simplify the `optimize_mir` queryoli-17/+9
2021-01-04Differentiate between the availability of ctfe MIR and runtime MIRoli-12/+2
2021-01-04Keep an unoptimized duplicate of `const fn` aroundoli-0/+70
This allows CTFE to reliably detect UB, as otherwise optimizations may hide UB.
2021-01-04Stop optimizing promotedsoli-1/+0
2021-01-04Inlining enabled by -mir-opt-level > 1 is incompatible with coverageRich Kadel-0/+9
Fixes: #80060 Also adds additional test cases for coverage of doctests.
2021-01-03Stylistic fixes to diagnostic messagesoli-3/+3
2021-01-03Refactor the non-transient cell borrow error diagnosticoli-3/+22
2021-01-03Dangling pointers point to everything and nothingOli Scherer-2/+1
Co-authored-by: Ralf Jung <post@ralfj.de>
2021-01-03Grammar fixesOli Scherer-1/+1
Co-authored-by: Ralf Jung <post@ralfj.de>
2021-01-03Make `ExpnData` fields `krate` and `orig_id` privateAaron Hill-4/+4
These fields are only used by hygiene serialized, and should not be accessed by anything outside of `rustc_span`.
2021-01-03Update now-more-precise operation with a preciser messageoli-2/+2
2021-01-03Apply suggestions from code reviewOli Scherer-4/+9
comment nits Co-authored-by: Ralf Jung <post@ralfj.de>
2021-01-03remove redundant closures (clippy::redundant_closure)Matthias Krüger-6/+6
2021-01-01Don't mix feature gates and hard errors, decide on one per op and stick with itoli-15/+18
2021-01-01Reinstate the error-code error over the feature gate erroroli-9/+15
2021-01-01Enhance some commentsoli-0/+2
2021-01-01Fix cell checks in const fnoli-0/+7
2021-01-01The proper name for the rule is "enclosing scope"oli-1/+1
2021-01-01Allow references to interior mutable data behind a feature gateoli-1/+53
2020-12-31remove move_val_init leftoversRalf Jung-8/+0
2020-12-30Rollup merge of #80458 - RalfJung:promotion-refactor, r=oli-obkMara Bos-99/+115
Some Promotion Refactoring Clean up promotion a bit: * factor out some common code * more exhaustive matches This *should* not break anything... the only potentially-breaking change is that `BorrowKind::Shallow | BorrowKind::Unique` are now rejected for internal references. r? ``@oli-obk``
2020-12-30where possible, pass slices instead of &Vec or &String (clippy::ptr_arg)Matthias Krüger-5/+5
2020-12-29Remove `compile-fail` test suiteVadim Petrochenkov-1/+1
2020-12-29fix a commentRalf Jung-1/+1
2020-12-29Auto merge of #79084 - simonvandel:instcombine-perf, r=oli-obkbors-4/+24
Small perf changes for InstCombine
2020-12-28make more matches exhaustiveRalf Jung-20/+41
2020-12-28use exhaustive pattern match to prevent future bugsSimon Vandel Sillesen-4/+13
2020-12-28merge two match'es for more exhaustivenessRalf Jung-39/+41