Commit graph

2612 commits

Author SHA1 Message Date
varkor
c6197541f7 Implement TypeFoldable for InferConst
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-06 14:05:26 +01:00
varkor
59ebd1b7c2 Shift const vars through binders
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-06 13:55:14 +01:00
bors
40bd145cbe Auto merge of #60567 - Manishearth:rollup-rjagqnw, r=Manishearth
Rollup of 5 pull requests

Successful merges:

 - #60131 (Fix broken link in rustc_plugin doc)
 - #60426 (Stop `-O`/`-C opt-level` and `-g`/`-C debuginfo` conflicting)
 - #60515 (use span instead of div for since version)
 - #60530 (rustc: rename all occurences of "freevar" to "upvar".)
 - #60536 (Correct code points to match their textual description)

Failed merges:

r? @ghost
2019-05-05 21:11:47 +00:00
bors
d628c2e642 Auto merge of #60237 - saleemjaffer:issue-56166-miri-fntype-arg-passing, r=eddyb
Move pointee_info_at from rustc_codegen_llvm to rustc_target.

Makes progress towards #56166.

This is a continuation of https://github.com/rust-lang/rust/pull/57150.

@oli-obk Should I close the older PR?
2019-05-05 18:25:13 +00:00
Saleem Jaffer
968eb7ff5a code review fixes 2019-05-05 23:39:04 +05:30
Eduard-Mihai Burtescu
8d9f4a128c rustc: rename all occurences of "freevar" to "upvar". 2019-05-05 18:49:32 +03:00
Eduard-Mihai Burtescu
125dc60dab rustc: replace uses of with_freevars with the freevars query. 2019-05-05 18:48:42 +03:00
bors
d65e721ef8 Auto merge of #60525 - eddyb:namespaces-not-kinds, r=petrochenkov
rustc: collapse relevant DefPathData variants into {Type,Value,Macro,Lifetime}Ns.

`DefPathData` was meant to disambiguate within each namespace, but over the years, that purpose was overlooked, and it started to serve a double-role as a sort of `DefKind` (which #60462 properly adds).
Now, we can go back to *only* categorizing namespaces (at least for the variants with names in them).

r? @petrochenkov or @nikomatsakis cc @michaelwoerister
2019-05-05 06:34:13 +00:00
varkor
0439efbbee Improve subst error when parameter kinds mismatch 2019-05-04 14:39:43 +01:00
Saleem Jaffer
80d5478649 removing param_env from pointee_info_at 2019-05-04 18:06:40 +05:30
Saleem Jaffer
94a48924da resolving conflicts 2019-05-04 16:10:47 +05:30
Saleem Jaffer
18679cdc54 adding HasParamEnv trait 2019-05-04 15:19:59 +05:30
Saleem Jaffer
8802dc037e adding is_freeze to TyLayoutMethods 2019-05-04 15:19:59 +05:30
Saleem Jaffer
852dd491ef removing map_same from MaybeResult 2019-05-04 15:19:59 +05:30
Saleem Jaffer
8e3d9f1039 add to_result to ty::MaybeResult 2019-05-04 15:17:26 +05:30
Saleem Jaffer
199ff02dac resolving conflicts 2019-05-04 15:17:26 +05:30
Daan de Graaf
7257fc34de Make line fit within 100 character limit. 2019-05-04 15:17:26 +05:30
Daan de Graaf
d47ec57a4f Add param_env parameter to pointee_info_at.
An associated type ParamEnv has been added to TyLayoutMethods to
facilitate this.
2019-05-04 15:17:26 +05:30
Daan de Graaf
ed716d4c89 Return instead of collecting to mut result. 2019-05-04 15:17:26 +05:30
Oliver Scherer
e395026aba Fix typo in src/librustc/ty/layout.rs
Co-Authored-By: wildarch <daandegraaf9@gmail.com>
2019-05-04 15:17:26 +05:30
Daan de Graaf
b7266c6008 Move pointee_info_at to TyLayoutMethods.
The original implementation is still present at
librustc_codegen_llvm/abi.rs, should be removed later to prevent code
duplication.
2019-05-04 15:17:26 +05:30
bors
e232636693 Auto merge of #59897 - tmandry:variantful-generators, r=eddyb
Multi-variant layouts for generators

This allows generators to overlap fields using variants, but doesn't do any such overlapping yet. It creates one variant for every state of the generator (unresumed, returned, panicked, plus one for every yield), and puts every stored local in each of the yield-point variants.

Required for optimizing generator layouts (#52924).

There was quite a lot of refactoring needed for this change. I've done my best in later commits to eliminate assumptions in the code that only certain kinds of types are multi-variant, and to centralize knowledge of the inner mechanics of generators in as few places as possible.

This change also emits debuginfo about the fields contained in each variant, as well as preserving debuginfo about stored locals while running in the generator.

Also, fixes #59972.

Future work:
- Use this change for an optimization pass that actually overlaps locals within the generator struct (#52924)
- In the type layout fields, don't include locals that are uninitialized for a particular variant, so miri and UB sanitizers can check our memory (see https://github.com/rust-lang/rust/issues/59972#issuecomment-483058172)
- Preserve debuginfo scopes across generator yield points
2019-05-04 03:18:14 +00:00
Tyler Mandry
77a6d29f48 Address review comments 2019-05-03 19:25:35 -07:00
Eduard-Mihai Burtescu
60f1944ebf rustc: rename DefPathData::{MacroDef,LifetimeParam} to {Macro,Lifetime}Ns. 2019-05-04 05:10:46 +03:00
Eduard-Mihai Burtescu
2efeb485a9 rustc: collapse relevant DefPathData variants into ValueNs. 2019-05-04 05:10:46 +03:00
Eduard-Mihai Burtescu
e5b9f54cd9 rustc: collapse relevant DefPathData variants into TypeNs. 2019-05-04 05:10:46 +03:00
Tyler Mandry
15dbe652ff Split out debuginfo from type info in MIR GeneratorLayout 2019-05-03 16:03:05 -07:00
Eduard-Mihai Burtescu
ff174fe09e rustc: rename hir::def::Def to Res (short for "resolution"). 2019-05-03 22:50:19 +03:00
Eduard-Mihai Burtescu
b92b1a76e1 rustc: use DefKind instead of Def, where possible. 2019-05-03 22:50:09 +03:00
Eduard-Mihai Burtescu
a3fcab36d2 rustc: factor most DefId-containing variants out of Def and into DefKind. 2019-05-03 22:48:27 +03:00
varkor
a68ed060bd Split ct_err out into CommonConsts
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-01 23:12:31 +01:00
varkor
541de81f8e Create ShallowResolver
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-01 23:11:20 +01:00
varkor
97c0c6653b Remove spurious assertion 2019-05-01 23:11:19 +01:00
varkor
f241693662 Fix missing parenthesis 2019-05-01 23:11:19 +01:00
varkor
d8b9387ace Take ConstValue::Placeholder into account in new locations 2019-05-01 23:11:19 +01:00
varkor
fc16b0a147 Fix rebase from LazyConst removal 2019-05-01 23:11:19 +01:00
varkor
e70797b575 Add PlaceholderConst 2019-05-01 23:10:57 +01:00
varkor
f5712d2de0 Add ConstValue::Placeholder 2019-05-01 23:10:57 +01:00
varkor
245a474ab7 Inline ConstError into TypeError 2019-05-01 23:10:57 +01:00
varkor
cf1a719c19 Implement fold_const for BoundVarReplacer 2019-05-01 23:10:57 +01:00
Gabriel Smith
fa394c2283 impl fold_const for Shifter
Signed-off-by: Gabriel Smith <ga29smith@gmail.com>
2019-05-01 23:10:57 +01:00
Gabriel Smith
57d3a5a32d impl visit_const for HasEscapingVarsVisitor
Signed-off-by: Gabriel Smith <ga29smith@gmail.com>
2019-05-01 23:10:57 +01:00
Gabriel Smith
e965b75603 impl mk_const_infer
Signed-off-by: Gabriel Smith <ga29smith@gmail.com>
2019-05-01 23:10:57 +01:00
Gabriel Smith
bd2fa222c0 Rename mk_infer to mk_ty_infer
Signed-off-by: Gabriel Smith <ga29smith@gmail.com>
2019-05-01 23:10:57 +01:00
varkor
ed3dae4aca Rename *shallow_resolve to *shallow_resolve_type
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-01 23:10:57 +01:00
varkor
d113ff8ada Handle generic consts in relate and infer
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-01 23:10:57 +01:00
varkor
69423b3345 Add stubs for fold_const
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-01 23:10:57 +01:00
varkor
bfc39b9b87 Implement TypeRelation::consts
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-01 23:10:57 +01:00
varkor
0728b62aca Add ct_err
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-01 23:10:57 +01:00
varkor
d7fdeffafc Add generic consts to BottomUpFolder
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-01 23:10:05 +01:00