Andrew Cann
9b15ddb29e
remove defaulting to unit
...
Types will no longer default to `()`, instead always defaulting to `!`.
This disables the associated warning and removes the flag from TyTuple
2018-03-14 12:44:51 +08:00
Niko Matsakis
6288faa3a3
trans_apply_param_substs
=> subst_and_normalize_erasing_regions
...
Consolidate `trans_apply_param_substs` and
`trans_apply_param_substs_env`. Also remove `trans_impl_self_ty`
2018-03-13 11:22:08 -04:00
Oliver Schneider
918b6d7633
Produce instead of pointers
2018-03-08 08:08:14 +01:00
Wesley Wiser
97b30f0961
Replace attr::contains_name(..., "cold")
...
Part of #47320
2018-03-06 19:58:02 -05:00
Wesley Wiser
4f840a683a
Add inline
to TransFnAttrs
...
Part of #47320
2018-03-06 19:58:02 -05:00
bors
3bcda48a30
Auto merge of #47802 - bobtwinkles:loop_false_edge, r=nikomatsakis
...
[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-09 13:04:17 +00:00
Felix S. Klock II
c00266b7ac
Encode (in MIR) whether borrows are explicit in source or arise due to autoref.
...
This is foundation for issue 46747 (limit two-phase borrows to method-call autorefs).
2018-02-08 12:16:25 +01:00
bobtwinkles
bdc37aa057
mir: Add TerminatorKind::FalseUnwind
...
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-05 15:00:40 -05:00
Eduard-Mihai Burtescu
9c3dc7e872
rustc: prefer ParamEnvAnd and LayoutCx over tuples for LayoutOf.
2018-02-01 00:01:08 +02:00
David Henningsson
dd6127e4af
Mir: Add Terminatorkind::Abort
...
The Abort Terminatorkind will cause an llvm.trap function call to be
emitted.
Signed-off-by: David Henningsson <diwic@ubuntu.com>
2017-12-21 04:43:27 +01:00
Eduard-Mihai Burtescu
473f044225
MIR: s/lv(al(ue)?)?/place in function/variable/module names.
2017-12-01 18:48:57 +02:00
Eduard-Mihai Burtescu
511743c438
MIR: s/Lvalue/Place in type names.
2017-12-01 18:47:36 +02:00
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