summary refs log tree commit diff
path: root/src/librustc_mir/transform/inline.rs
AgeCommit message (Collapse)AuthorLines
2018-06-14rustc: rename ty::maps to ty::query.Eduard-Mihai Burtescu-3/+2
2018-05-30rustc: rename mir::LocalDecl's syntactic_source_info to source_info.Eduard-Mihai Burtescu-3/+3
2018-05-30rustc: turn mir::LocalDecl's visibility_source_info into a SourceScope.Eduard-Mihai Burtescu-3/+1
2018-05-30rustc: rename mir::LocalDecl's source_info to visibility_source_info.Eduard-Mihai Burtescu-2/+3
2018-05-30rustc: turn mir::LocalDecl's syntactic_scope into a SourceInfo.Eduard-Mihai Burtescu-0/+3
2018-05-30rustc: rename mir::VisibilityScope to mir::SourceScope.Eduard-Mihai Burtescu-5/+5
2018-05-17Rename trans to codegen everywhere.Irina Popa-8/+8
2018-05-01rustc: return impl Iterator from Terminator(Kind)::successors(_mut).Eduard-Mihai Burtescu-1/+1
2018-04-27Auto merge of #50102 - Zoxc:query-nomacro, r=michaelwoeristerbors-1/+1
Move query code outside macros and store query jobs separately from query results Based on https://github.com/rust-lang/rust/pull/50067 r? @michaelwoerister
2018-04-27Auto merge of #50097 - glandium:box_free, r=nikomatsakisbors-63/+2
Partial future-proofing for Box<T, A> In some ways, this is similar to @eddyb's PR #47043 that went stale, but doesn't cover everything. Notably, this still leaves Box internalized as a pointer in places, so practically speaking, only ZSTs can be practically added to the Box type with the changes here (the compiler ICEs otherwise). The Box type is not changed here, that's left for the future because I want to test that further first, but this puts things in place in a way that hopefully will make things easier.
2018-04-27Move query functions out from the define_maps! macroJohn Kåre Alsaker-1/+1
2018-04-26rustc_target: move in syntax::abi and flip dependency.Irina Popa-1/+1
2018-04-20Pass the right type to box_free() in MIRMike Hommey-63/+2
Currently, MIR just passes the raw Box to box_free(), which happens to work because practically, it's the same thing. But that might not be true in the future, with Box<T, A: Alloc>. The MIR inline pass actually fixes up the argument while inlining box_free, but this is not enabled by default and doesn't necessarily happen (the inline threshold needs to be passed). This change effectively moves what the MIR inline pass does to the elaborate_drops pass, so that box_free() is passed the raw pointer instead of the Box.
2018-03-14remove defaulting to unitAndrew Cann-1/+1
Types will no longer default to `()`, instead always defaulting to `!`. This disables the associated warning and removes the flag from TyTuple
2018-03-13`trans_apply_param_substs` => `subst_and_normalize_erasing_regions`Niko Matsakis-27/+7
Consolidate `trans_apply_param_substs` and `trans_apply_param_substs_env`. Also remove `trans_impl_self_ty`
2018-03-08Produce instead of pointersOliver Schneider-0/+7
2018-03-06Replace attr::contains_name(..., "cold")Wesley Wiser-5/+5
Part of #47320
2018-03-06Add `inline` to `TransFnAttrs`Wesley Wiser-1/+1
Part of #47320
2018-02-09Auto merge of #47802 - bobtwinkles:loop_false_edge, r=nikomatsakisbors-0/+3
[NLL] Add false edges out of infinite loops Resolves #46036 by adding a `cleanup` member to the `FalseEdges` terminator kind. There's also a small doc fix to one of the other comments in `into.rs` which I can pull out in to another PR if desired =) This PR should pass CI but the test suite has been relatively unstable on my system so I'm not 100% sure. r? @nikomatsakis
2018-02-08Encode (in MIR) whether borrows are explicit in source or arise due to autoref.Felix S. Klock II-2/+2
This is foundation for issue 46747 (limit two-phase borrows to method-call autorefs).
2018-02-05mir: Add TerminatorKind::FalseUnwindbobtwinkles-0/+3
Sometimes a simple goto misses the cleanup/unwind edges. Specifically, in the case of infinite loops such as those introduced by a loop statement without any other out edges. Analogous to TerminatorKind::FalseEdges; this new terminator kind is used when we want borrowck to consider an unwind path, but real control flow should never actually take it.
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