1039 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
17e1f23209
Rollup merge of #64817 - csmoe:closure, r=nikomatsakis
Replace ClosureSubsts with SubstsRef

Addresses https://github.com/rust-lang/rust/issues/42340 part 3
https://github.com/rust-lang/rust/pull/59312 might benefit from this clean up.
r? @nikomatsakis
2019-10-04 07:24:34 +02:00
csmoe
9b91bef78b generate ClosureSubsts from SubstsRef 2019-10-03 19:24:59 +08:00
csmoe
64f61c7888 remove indexed_vec re-export from rustc_data_structures 2019-09-29 16:48:31 +00:00
csmoe
1f8e1d8aea remove ClosureSubsts with SubstsRef 2019-09-29 16:17:46 +00:00
Mazdak Farrokhzad
d7d7c2fce2
Rollup merge of #64824 - Mark-Simulacrum:no-stable-hasher-result-everywhere, r=michaelwoerister
No StableHasherResult everywhere

This removes the generic parameter on `StableHasher`, instead moving it to the call to `finish`. This has the side-effect of making all `HashStable` impls nicer, since we no longer need the verbose `<W: StableHasherResult>` that previously existed -- often forcing line wrapping.

This is done for two reasons:
 * we should avoid false "generic" dependency on the result of StableHasher
     * we don't need to codegen two/three copies of all the HashStable impls when they're transitively used to produce a fingerprint, u64, or u128. I haven't measured, but this might actually make our artifacts somewhat smaller too.
 * Easier to understand/read/write code -- the result of the stable hasher is irrelevant when writing a hash impl.
2019-09-29 04:36:02 +02:00
bors
488381ce9e Auto merge of #64419 - wesleywiser:const_prop_use_ecx, r=oli-obk
Deduplicate some code between miri and const prop

r? @oli-obk
2019-09-28 15:54:12 +00:00
Mark Rousskov
14a5aefb01 Switch over all StableHash impls to new format 2019-09-28 11:47:36 -04:00
Wesley Wiser
a99f255015 Allow reading non-mutable statics in const prop 2019-09-28 07:51:38 -04:00
Wesley Wiser
dcc6c28c53 Introduce a ConstPropMachine
This allows us to avoid changing things directly in the miri engine just
for const prop.
2019-09-27 20:11:13 -04:00
Wesley Wiser
4e58e2e3a3 Work around for #64506 2019-09-27 20:11:13 -04:00
Wesley Wiser
9333514102 Move Ref-from-arg checking from step.rs to const_prop.rs 2019-09-27 20:11:13 -04:00
Wesley Wiser
15d2b7ae81 Respond to code review feedback and fix tidy 2019-09-27 20:11:12 -04:00
Wesley Wiser
c0c8ce80b3 [const-prop] Replace Ref handling with use of InterpCx 2019-09-27 20:11:12 -04:00
Wesley Wiser
86c7c4d7be [const-prop] Replace Use handling with use of InterpCx 2019-09-27 20:11:12 -04:00
Wesley Wiser
bc17936c8a [const-prop] Replace eval_place() with use of InterpCx 2019-09-27 20:11:12 -04:00
varkor
8bd0382134 Rename Pat.node to Pat.kind 2019-09-26 18:21:09 +01:00
varkor
bea3d67c77 Rename subst::Kind to subst::GenericArg 2019-09-26 11:48:05 +01:00
bors
dc45735f29 Auto merge of #64513 - varkor:sty-begone, r=eddyb
Rename `TyS.sty` to `TyS.kind`

Fixes https://github.com/rust-lang/rust/issues/64353.

r? @eddyb
2019-09-26 04:29:18 +00:00
varkor
e2e0f9af85 Rename sty to kind 2019-09-25 15:50:04 +01:00
varkor
2808a46a49 Rename non-TyS uses of sty 2019-09-25 15:48:51 +01:00
gnzlbg
e1cf0a1d67 Format 2019-09-25 13:39:28 +02:00
gnzlbg
e74a268db5 Test errors 2019-09-25 13:39:20 +02:00
gnzlbg
5976674a71 Refactor 2019-09-25 12:54:23 +02:00
gnzlbg
02b3234a77 Tidy 2019-09-25 10:34:44 +02:00
gnzlbg
97ce904340 Remove unreachable code 2019-09-25 10:33:12 +02:00
gnzlbg
f0bbd2b71c Move tests to SIMD subdirectory 2019-09-24 16:52:03 +02:00
gnzlbg
03ac54aed6 Add const-eval support for SIMD types, insert, and extract 2019-09-24 16:14:43 +02:00
Mazdak Farrokhzad
bda52e558e
Rollup merge of #63448 - RalfJung:miri-discriminant, r=eddyb
fix Miri discriminant handling

This can be reviewed commit-by-commit fairly well.

The Miri side is at https://github.com/rust-lang/miri/pull/903.

Fixes https://github.com/rust-lang/rust/issues/62138

r? @eddyb @oli-obk
2019-09-19 18:31:37 +02:00
Ralf Jung
1de533ac1a first determine if the variant is a niche-variant, then compute absolute variant 2019-09-19 09:15:03 +02:00
Oliver Scherer
0de9485038 Get rid of special const intrinsic query in favour of const_eval 2019-09-17 16:31:55 +02:00
Ralf Jung
61a28d5c88 do the variant idx computations on the host (non-overflowing) 2019-09-16 15:04:33 +02:00
Ralf Jung
75fe84f4fc factor getting the discriminant layout to a new method 2019-09-16 13:15:56 +02:00
Ralf Jung
b73f1a51dc better and more consistent variable names 2019-09-16 13:08:21 +02:00
Ralf Jung
8c0f601105 fix Miri discriminant load/store when overflows are involved 2019-09-16 12:33:47 +02:00
Ralf Jung
5462ecb4b1 update intern classification comment 2019-09-15 14:25:30 +02:00
Ralf Jung
224e2e5e9e explain ty == None 2019-09-15 14:25:30 +02:00
Ralf Jung
3424811852 assert that nobody asks for mutable constants 2019-09-15 14:25:30 +02:00
Ralf Jung
14e3506738 note a FIXME 2019-09-15 14:25:30 +02:00
Ralf Jung
b1d4d2bfea relocations -> allocations 2019-09-15 14:25:29 +02:00
Ralf Jung
75c82b4dd8 drop redundant ParamEnv, and avoid constructing InternVisitor without visiting 2019-09-15 14:23:14 +02:00
Ralf Jung
7b8693eff8 all memory behind a constant must be immutable 2019-09-15 13:57:59 +02:00
Ralf Jung
6137691933 const interning: move mutability computation into intern_shallow, and always intern constants as immutable 2019-09-15 13:57:58 +02:00
Santiago Pastorino
8ee77a268f
Use try_fold instead of manually carrying an accumulator 2019-09-14 19:51:40 -03:00
Santiago Pastorino
87420cd1bc
Make Place Boxed on Statement to reduce size from 64 bytes to 32 bytes 2019-09-11 16:28:06 -03:00
Santiago Pastorino
e9c41148c0
Convert Place's projection to a boxed slice 2019-09-09 18:16:49 -03:00
Mazdak Farrokhzad
23265741d3
Rollup merge of #64100 - wesleywiser:fix_miri_const_eval, r=oli-obk
Fix const eval bug breaking run-pass tests in Miri

PR #63580 broke miri's ability to run the run-pass test suite with MIR
optimizations enabled. The issue was that we weren't properly handling
the substs and DefId associated with a Promoted value. This didn't break
anything in rustc because in rustc this code runs before the Inliner
pass which is where the DefId and substs can diverge from their initial
values. It broke Miri though because it ran this code again after
running the optimization pass.

r? @oli-obk
cc @RalfJung
2019-09-05 12:11:17 +02:00
bors
b50520835f Auto merge of #63561 - HeroicKatora:alloc-private-bytes, r=oli-obk
Make Allocation::bytes private

Fixes #62931.

Direct immutable access to the bytes is still possible but redirected through the new method `raw_bytes_with_undef_and_ptr`, similar to `get_bytes_with_undef_and_ptr` but without requiring an interpretation context and not doing *any* relocation or bounds checks. The `size` of the allocation is stored separately which makes access as `Size` and `usize` more ergonomic.

cc: @RalfJung
2019-09-02 22:07:40 +00:00
Wesley Wiser
46877e2890 Fix const eval bug breaking run-pass tests in Miri
PR #63580 broke miri's ability to run the run-pass test suite with MIR
optimizations enabled. The issue was that we weren't properly handling
the substs and DefId associated with a Promoted value. This didn't break
anything in rustc because in rustc this code runs before the Inliner
pass which is where the DefId and substs can diverge from their initial
values. It broke Miri though because it ran this code again after
running the optimization pass.
2019-09-02 17:23:21 -04:00
Ralf Jung
d75723e9fe mod-level doc comment for validity check 2019-08-30 08:37:02 +02:00
Ralf Jung
0f3e596c1d miri: detect too large dynamically sized objects 2019-08-30 07:44:51 +02:00