about summary refs log tree commit diff
path: root/src/librustc_mir/transform/inline.rs
AgeCommit message (Collapse)AuthorLines
2018-02-01rustc: prefer ParamEnvAnd and LayoutCx over tuples for LayoutOf.Eduard-Mihai Burtescu-2/+1
2017-12-21Mir: Add Terminatorkind::AbortDavid Henningsson-0/+1
The Abort Terminatorkind will cause an llvm.trap function call to be emitted. Signed-off-by: David Henningsson <diwic@ubuntu.com>
2017-12-01MIR: s/lv(al(ue)?)?/place in function/variable/module names.Eduard-Mihai Burtescu-13/+13
2017-12-01MIR: s/Lvalue/Place in type names.Eduard-Mihai Burtescu-17/+17
2017-11-28MIR: split Operand::Consume into Copy and Move.Eduard-Mihai Burtescu-4/+4
2017-11-28rustc_mir: enforce that arguments are replaced with Local's only.Eduard-Mihai Burtescu-41/+14
2017-11-21Auto merge of #45879 - nikomatsakis:nll-kill-cyclic-closures, r=arielb1bors-8/+39
move closure kind, signature into `ClosureSubsts` Instead of using side-tables, store the closure-kind and signature in the substitutions themselves. This has two key effects: - It means that the closure's type changes as inference finds out more things, which is very nice. - As a result, it avoids the need for the `freshen_closure_like` code (though we still use it for generators). - It avoids cyclic closures calls. - These were never meant to be supported, precisely because they make a lot of the fancy inference that we do much more complicated. However, due to an oversight, it was previously possible -- if challenging -- to create a setup where a closure *directly* called itself (see e.g. #21410). We have to see what the effect of this change is, though. Needs a crater run. Marking as [WIP] until that has been assessed. r? @arielb1
2017-11-19fix closure inlining by spilling arguments to a temporaryNiko Matsakis-8/+39
2017-11-19rustc: move size, align & primitive_align from Abi::Aggregate to layout.Eduard-Mihai Burtescu-1/+1
2017-11-19rustc: remove Ty::layout and move everything to layout_of.Eduard-Mihai Burtescu-3/+2
2017-11-15Auto merge of #45913 - sinkuu:mir-inlining-closure, r=arielb1bors-22/+61
Handle closures correctly in MIR inlining Fixes #45894.
2017-11-14Add TyCtxt::is_closureShotaro Yamada-2/+1
2017-11-14Make create_temp_necessary a methodShotaro Yamada-46/+40
2017-11-14Handle closures correctly in MIR inliningShotaro Yamada-10/+56
2017-11-14rustc: split off BodyOwnerKind from MirSource.Eduard-Mihai Burtescu-8/+7
2017-11-14rustc: move the MIR pass infrastructure and list to rustc_mir.Eduard-Mihai Burtescu-1/+2
2017-11-14Auto merge of #45909 - sinkuu:issue-45885, r=arielb1bors-5/+33
Normalize inlined function in MIR inliner Fixes #45885 r? @arielb1
2017-11-10Normalize inlined function in MIR inlinerShotaro Yamada-5/+33
2017-11-09add a bunch of debug logging to transform::inlineAriel Ben-Yehuda-6/+23
2017-11-02add TerminatorKind::FalseEdges and use it in matchesMikhail Modin-0/+6
2017-09-29stop using monomorphize::resolve()Douglas Campos-1/+4
2017-09-29take ParamEnv into account when resolvingDouglas Campos-2/+5
2017-09-29make it not to be a methodDouglas Campos-1/+1
2017-09-29always use resolveDouglas Campos-19/+4
2017-09-29re-enable mir inlining across trait methodsDouglas Campos-8/+23
this fixes #44389
2017-09-11Auto merge of #44383 - qmx:gh/40473/no-inline-trait-method, r=nikomatsakisbors-6/+8
MIR: should not inline trait method Fixes #40473. The idea here is bailing out of inlining if we're talking about a trait method.
2017-09-08simplifyDouglas Campos-9/+1
2017-09-08Auto merge of #44142 - alexcrichton:dllimport-query, r=nikomatsakisbors-1/+1
Migrate a slew of metadata methods to queries This PR intends to make more progress on #41417, knocking off some low-hanging fruit. Closes #44190 cc #44137
2017-09-06ugly, but works!Douglas Campos-6/+16
2017-09-06Reintroduce the early returnsOliver Schneider-4/+9
2017-09-06Fix a bug in the inlinerOliver Schneider-1/+2
2017-09-05rustc: Migrate lang items to a queryAlex Crichton-1/+1
This commit moves the calculation of the `LanguageItems` structure into a query rather than being calculated before the `TyCtxt` exists, with the eventual end goal of removing some `CrateStore` methods.
2017-09-03rustc_mir: implement visit_local instead/along visit_lvalue where possible.Eduard-Mihai Burtescu-31/+24
2017-08-28Merge branch 'master' of https://github.com/rust-lang/rust into genJohn Kåre Alsaker-1/+6
2017-08-25rustc: Add a FIXME for `try_get` in MIR inliningAlex Crichton-1/+6
It sounds like this is being handled elsewhere, so for now just preserve the existing behavior of ignoring th error.
2017-08-16Merge remote-tracking branch 'origin/master' into genAlex Crichton-9/+9
2017-08-15use field init shorthand EVERYWHEREZack M. Davis-9/+9
Like #43008 (f668999), but _much more aggressive_.
2017-07-28Rename suspend to yieldJohn Kåre Alsaker-2/+2
2017-07-28Generator literal supportJohn Kåre Alsaker-0/+6
2017-07-12overload the mir ty methods to make them more ergonomic to useRalf Jung-5/+5
2017-07-11Refactor: {Lvalue,Rvalue,Operand}::ty only need the locals' types, not the ↵Ralf Jung-5/+5
full &Mir
2017-06-27rustc: move the PolyFnSig out of TyFnDef.Eduard-Mihai Burtescu-3/+4
2017-06-01rewrite layout to take a (param-env, ty) pair instead of infcxNiko Matsakis-4/+2
2017-06-01move projection mode into parameter environmentNiko Matsakis-3/+3
2017-05-22rename `parameter_environment` to `param_env`Niko Matsakis-1/+1
2017-05-22rename `ParameterEnvironment` to `ParamEnv`Niko Matsakis-1/+1
2017-05-22centralize the caching for is-copy, is-sized, and is-freezeNiko Matsakis-1/+1
Use the trait-environment+type as the key. Note that these are only invoked on types that live for the entire compilation (no inference artifacts). We no longer need the various special-case bits and caches that were in place before.
2017-05-13rustc: uniformly compute ParameterEnvironment's "free outlive scope".Eduard-Mihai Burtescu-1/+2
2017-05-02update comment about heuristicsNiko Matsakis-1/+3
2017-05-02rename from `item_mir` to `optimized_mir`Niko Matsakis-1/+1