Eduard-Mihai Burtescu
c42a118188
MIR: split Operand::Consume into Copy and Move.
2017-11-28 04:18:32 +02:00
Eduard-Mihai Burtescu
73f5bab33f
rustc_mir: enforce that arguments are replaced with Local's only.
2017-11-28 04:11:09 +02:00
bors
d6d09e0b4d
Auto merge of #45879 - nikomatsakis:nll-kill-cyclic-closures, r=arielb1
...
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-21 22:52:19 +00:00
Niko Matsakis
df6fdbc9ae
fix closure inlining by spilling arguments to a temporary
2017-11-19 05:36:56 -05:00
Eduard-Mihai Burtescu
b28f668e26
rustc: move size, align & primitive_align from Abi::Aggregate to layout.
2017-11-19 02:14:32 +02:00
Eduard-Mihai Burtescu
8c4d5af52b
rustc: remove Ty::layout and move everything to layout_of.
2017-11-19 02:14:29 +02:00
bors
8a98531973
Auto merge of #45913 - sinkuu:mir-inlining-closure, r=arielb1
...
Handle closures correctly in MIR inlining
Fixes #45894 .
2017-11-15 01:32:30 +00:00
Shotaro Yamada
ec2ff8f734
Add TyCtxt::is_closure
2017-11-14 17:43:43 +09:00
Shotaro Yamada
c3ec175857
Make create_temp_necessary a method
2017-11-14 17:12:08 +09:00
Shotaro Yamada
cc36f88ed4
Handle closures correctly in MIR inlining
2017-11-14 17:12:08 +09:00
Eduard-Mihai Burtescu
d6aa56f44e
rustc: split off BodyOwnerKind from MirSource.
2017-11-14 08:54:27 +02:00
Eduard-Mihai Burtescu
86206f22a0
rustc: move the MIR pass infrastructure and list to rustc_mir.
2017-11-14 08:52:25 +02:00
bors
9b53f0a662
Auto merge of #45909 - sinkuu:issue-45885, r=arielb1
...
Normalize inlined function in MIR inliner
Fixes #45885
r? @arielb1
2017-11-14 02:05:37 +00:00
Shotaro Yamada
3c96c3012d
Normalize inlined function in MIR inliner
2017-11-10 20:54:58 +09:00
Ariel Ben-Yehuda
48655ea661
add a bunch of debug logging to transform::inline
2017-11-09 23:03:41 +02:00
Mikhail Modin
2d71c5f10c
add TerminatorKind::FalseEdges and use it in matches
2017-11-02 09:43:36 +03:00
Douglas Campos
081b29c1f6
stop using monomorphize::resolve()
2017-09-29 22:34:48 -04:00
Douglas Campos
8a5800e1d4
take ParamEnv into account when resolving
2017-09-29 22:34:47 -04:00
Douglas Campos
24fc50fffa
make it not to be a method
2017-09-29 22:34:46 -04:00
Douglas Campos
5eb302fba8
always use resolve
2017-09-29 22:34:46 -04:00
Douglas Campos
3bd09dee45
re-enable mir inlining across trait methods
...
this fixes #44389
2017-09-29 22:34:46 -04:00
bors
909733286f
Auto merge of #44383 - qmx:gh/40473/no-inline-trait-method, r=nikomatsakis
...
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-11 04:59:28 +00:00
Douglas Campos
10a5b539c7
simplify
2017-09-08 11:06:28 -04:00
bors
dead08cb33
Auto merge of #44142 - alexcrichton:dllimport-query, r=nikomatsakis
...
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-08 09:47:58 +00:00
Douglas Campos
784e4316eb
ugly, but works!
2017-09-06 23:06:14 -04:00
Oliver Schneider
5bb870faca
Reintroduce the early returns
2017-09-06 12:25:46 +02:00
Oliver Schneider
02fb1b0b72
Fix a bug in the inliner
2017-09-06 10:33:53 +02:00
Alex Crichton
a2e2aba07d
rustc: Migrate lang items to a query
...
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-05 07:37:57 -07:00
Eduard-Mihai Burtescu
c911925243
rustc_mir: implement visit_local instead/along visit_lvalue where possible.
2017-09-03 19:14:31 +03:00
John Kåre Alsaker
d29af37999
Merge branch 'master' of https://github.com/rust-lang/rust into gen
2017-08-28 02:41:16 +02:00
Alex Crichton
82bad957c0
rustc: Add a FIXME for try_get
in MIR inlining
...
It sounds like this is being handled elsewhere, so for now just preserve the
existing behavior of ignoring th error.
2017-08-25 16:08:35 -07:00
Alex Crichton
1210ebff43
Merge remote-tracking branch 'origin/master' into gen
2017-08-16 10:03:47 -07:00
Zack M. Davis
1b6c9605e4
use field init shorthand EVERYWHERE
...
Like #43008 (f668999
), but _much more aggressive_.
2017-08-15 15:29:17 -07:00
John Kåre Alsaker
df608e710c
Rename suspend to yield
2017-07-28 15:46:24 +02:00
John Kåre Alsaker
d861982ca6
Generator literal support
2017-07-28 15:46:23 +02:00
Ralf Jung
66fce33ecb
overload the mir ty methods to make them more ergonomic to use
2017-07-12 12:59:05 -07:00
Ralf Jung
62b2e5446d
Refactor: {Lvalue,Rvalue,Operand}::ty only need the locals' types, not the full &Mir
2017-07-11 16:38:16 -07:00
Eduard-Mihai Burtescu
33ecf72e8e
rustc: move the PolyFnSig out of TyFnDef.
2017-06-27 16:39:52 +03:00
Niko Matsakis
541523d10d
rewrite layout to take a (param-env, ty) pair instead of infcx
2017-06-01 12:56:30 -04:00
Niko Matsakis
6c4b961eff
move projection mode into parameter environment
2017-06-01 12:56:30 -04:00
Niko Matsakis
45dd0632bc
rename parameter_environment
to param_env
2017-05-22 15:55:56 -04:00
Niko Matsakis
226358e2fb
rename ParameterEnvironment
to ParamEnv
2017-05-22 15:54:16 -04:00
Niko Matsakis
1b7acb6f34
centralize the caching for is-copy, is-sized, and is-freeze
...
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-22 14:55:03 -04:00
Eduard-Mihai Burtescu
bd8246be74
rustc: uniformly compute ParameterEnvironment's "free outlive scope".
2017-05-13 17:42:59 +03:00
Niko Matsakis
0afcfce8d8
update comment about heuristics
2017-05-02 16:21:57 -04:00
Niko Matsakis
393fa4f1b7
rename from item_mir
to optimized_mir
2017-05-02 16:21:57 -04:00
Niko Matsakis
1dd9c3e52a
support inlining by asking for optimizer mir for callees
...
I tested this with it enabled 100% of the time, and we were able to run
mir-opt tests successfully.
2017-05-02 16:21:56 -04:00
Niko Matsakis
9c154a67bf
rip out everything but MirPass
, move the logic into suites
2017-05-02 16:21:55 -04:00
Niko Matsakis
c253df5249
remove Pass
and (temporarily) drop Inline
2017-05-02 16:21:55 -04:00
Niko Matsakis
a26e966307
convert the inline
pass to use the new multi result
...
This involves changing various details about that system,
though the basic shape remains the same.
2017-05-02 14:01:36 -04:00