summary refs log tree commit diff
path: root/src/librustc_mir/transform/inline.rs
AgeCommit message (Collapse)AuthorLines
2020-05-18Add asm! to MIRAmanieu d'Antras-0/+5
2020-05-09Visit move out of `_0` when visiting `return`Jonas Schievink-1/+5
2020-05-06Improve `LocalDecl` creation.Nicholas Nethercote-2/+2
This commit adds some new `LocalDecl` methods: - `with_source_info`, a most general constructor. - `new`, a variant of `with_source_info` which represents the most common use case. - `internal` a modifying method (like the already present `immutable`). It removes some old `LocalDecl` methods: - `new_internal` and `new_local`, because they're subsumed by the new methods. - `new_return_place`, because it was identical to `new_temp`. Finally, it cleans up all the use sites.
2020-04-24Auto merge of #70820 - spastorino:replace-fragile-erroneous-const-sys, r=oli-obkbors-1/+11
Replace fragile erroneous const sys Closes #67191 r? @oli-obk
2020-04-23Modify `as_local_hir_id` to return a bare `HirId`marmeladema-9/+5
2020-04-23Modify `as_local_hir_id` to accept a `LocalDefId` instead of a `DefId`marmeladema-3/+7
2020-04-23Rename uneval_consts to required_constsSantiago Pastorino-6/+8
2020-04-23Make inlining carry over unevaluated constsSantiago Pastorino-1/+9
2020-04-22Use `Body` everywhereDylan MacKenzie-6/+6
2020-04-22Don't use `*` for deref-coercionDylan MacKenzie-3/+3
2020-04-22Rollup merge of #70970 - eddyb:trait-vs-impl-mismatch, r=oli-obkDylan DPC-1/+2
Detect mistyped associated consts in `Instance::resolve`. *Based on #71049 to prevent redundant/misleading downstream errors.* Fixes #70942 by refusing to resolve an associated `const` if it doesn't have the same type in the `impl` that it does in the `trait` (which we assume had errored, and `delay_span_bug` guards against bugs).
2020-04-19MIR: use span instead of NodeId to determine if optimized_mir should be runljedrz-7/+5
2020-04-18Detect mistyped associated consts in `Instance::resolve`.Eduard-Mihai Burtescu-1/+2
2020-04-16don't clone types that are copy (clippy::clone_on_copy)Matthias Krüger-1/+1
2020-04-11Pass the `PlaceElem::Index` local to `visit_local`Jonas Schievink-12/+0
2020-03-31Use Place directly, it's Copy even more use casesSantiago Pastorino-2/+2
2020-03-30rustc -> rustc_middle part 3 (rustfmt)Mazdak Farrokhzad-4/+4
2020-03-30rustc -> rustc_middle part 2Mazdak Farrokhzad-5/+5
2020-03-21Use Reveal::All in MIR inlinerWesley Wiser-10/+3
2020-03-21Rollup merge of #69934 - andjo403:inlinecost, r=wesleywiserMazdak Farrokhzad-2/+17
Update the mir inline costs handle that when mir is lowered to llvm-ir more code is generated. Landingpads generates 10 llvm-ir instructions and resume 9 llvm-ir instructions. r? @wesleywiser
2020-03-16use direct imports for `rustc::{lint, session}`.Mazdak Farrokhzad-9/+6
2020-03-11Update the mir inline costsAndreas Jonson-2/+17
handle that when mir is lowered to llvm-ir more code is generated. landingpads generates 10 llvm-ir instructions and resume 9 llvm-ir instructions.
2020-02-05Selectively disable sanitizer instrumentationTomasz Miąsko-0/+23
Add `no_sanitize` attribute that allows to opt out from sanitizer instrumentation in an annotated function.
2020-02-01Move builtin attribute logic to new rustc_attr crate.Mazdak Farrokhzad-1/+1
For now, this is all the crate contains, but more attribute logic & types will be moved there over time.
2020-01-28make_integrate_local takes Local by valueSantiago Pastorino-4/+4
2020-01-27don't clone types that are copy, round two.Matthias Krüger-2/+2
2020-01-10Remove PlaceBase enum and make Place base field be local: LocalSantiago Pastorino-18/+10
2020-01-10Remove Static from PlaceBaseSantiago Pastorino-5/+0
2020-01-05Remove rustc_hir reexports in rustc::hir.Mazdak Farrokhzad-1/+1
2020-01-04extract rustc::middle::codegen_fn_attrsMazdak Farrokhzad-1/+1
2020-01-01Ensure that we process projections during MIR inliningAaron Hill-8/+4
Fixes #67710 Previously, we were not calling `super_place`, which resulted in us failing to update any local references that occur in ProjectionElem::Index. This caused the post-inlining MIR to contain a reference to a local ID from the inlined callee, leading to an ICE due to a type mismatch.
2019-12-27Fix `Instance::resolve()` incorrectly returning specialized instancesWesley Wiser-3/+10
We only want to return specializations when `Reveal::All` is passed, not when `Reveal::UserFacing` is. Resolving this fixes several issues with the `ConstProp`, `SimplifyBranches`, and `Inline` MIR optimization passes. Fixes #66901
2019-12-22Format the worldMark Rousskov-128/+92
2019-12-20[mir-opt] Fix `Inline` pass to handle inlining into `box` expressionsWesley Wiser-10/+20
2019-12-08Rollup merge of #66991 - Nashenas88:body_cache_cleanup, r=eddybMazdak Farrokhzad-6/+6
Cleanup BodyCache After this PR: - `BodyCache` is renamed to `BodyAndCache` - `ReadOnlyBodyCache` is renamed to `ReadOnlyBodyAndCache` - `ReadOnlyBodyAndCache::body` fn is removed and all calls to it are replaced by a deref (possible due to fix of its `Deref` imp in #65947) cc @eddyb @oli-obk
2019-12-05`#[track_caller]` suppresses MIR inlining.Adam Perry-0/+5
2019-12-05rustc: Apply clearer naming to BodyAndCache, fix Deref impl, remove unneeded ↵Paul Daniel Faria-6/+6
Index impl, remove body fn rustc_codegen_ssa: Fix BodyAndCache reborrow to Body and change instances of body() call to derefence rustc_mir: Fix BodyAndCache reborrow to Body and change intances of body() call to derefence
2019-12-02Remove HasLocalDecls impl from BodyCache's, properly reborrow to Body, ↵Paul Daniel Faria-31/+31
rename all body_cache back to body
2019-12-02Remove BodyCache.body and rely on Deref as much as possible for ↵Paul Daniel Faria-3/+3
ReadOnlyBodyCache
2019-12-02Fix tidy errorsPaul Daniel Faria-4/+9
2019-12-02Fix remaining compilation issuesPaul Daniel Faria-11/+11
2019-12-02Simplify BodyCache impl and fix all remaining type errors in librustc_mir ↵Paul Daniel Faria-23/+23
(lifetime errors still exist)
2019-12-02Address nits and remove unneeded passPaul Daniel Faria-1/+1
2019-12-02Move predecessors cache invalidation back to basic_blocks_mut, add a couple ↵Paul Daniel Faria-3/+3
more ensure_predecessors to prevent panics
2019-12-02Stop invalidating predecessors cache when accessing unique basic block, ↵Paul Daniel Faria-3/+3
invalidate cache when accessing unique terminator
2019-11-30rustc: move mir::SourceScopeLocalData to a field of SourceScopeData.Eduard-Mihai Burtescu-5/+1
2019-11-30rustc_mir: fix inliner to also copy over source_scope_local_data.Eduard-Mihai Burtescu-1/+10
2019-11-27rustc: move debug info from LocalDecl and UpvarDecl into a dedicated ↵Eduard-Mihai Burtescu-8/+4
VarDebugInfo.
2019-10-22Move Place::elem methods and friends to TyCtxtSantiago Pastorino-3/+3
2019-10-22Intern place projectionSantiago Pastorino-1/+8