Santiago Pastorino
250a636217
Avoid copying some undef memory in MIR
...
During MIR interpretation it may happen that a place containing
uninitialized bytes is copied. This would read the current
representation of these bytes and write it to the destination even
though they must, by definition, not matter to the execution.
This elides that representation change when no bytes are defined in such
a copy, saving some cpu cycles. In such a case, the memory of the target
allocation is not touched at all which also means that sometimes no
physical page backing the memory allocation of the representation needs
to be provided by the OS at all, reducing memory pressure on the system.
2019-12-28 14:13:44 -03:00
Santiago Pastorino
bd93b7718e
Avoid memory copy logic for zsts
...
Closes #67539
2019-12-27 09:33:22 -03:00
bors
8f5f8f916f
Auto merge of #67192 - oli-obk:const_zst_addr, r=RalfJung,varkor
...
Various const eval and pattern matching ICE fixes
r? @RalfJung
cc @spastorino
This PR does not change existing behaviour anymore and just fixes a bunch of ICEs reachable from user code (sometimes even on stable via obscure union transmutes).
2019-12-27 07:38:52 +00:00
bors
a04c789f69
Auto merge of #66936 - cjgillot:hirene-expr, r=Zoxc
...
Allocate HIR on an arena 2/4 -- Expr & Pat
This is the second PR in the series started by #66931
This time, commits don't really make sense on their own.
They are mostly split by type of compile error.
The additional diff is here: https://github.com/cjgillot/rust/compare/hirene-preamble...hirene-expr
2019-12-27 01:40:41 +00:00
Camille GILLOT
fb100e5ddc
Move arena_vec inside lowering.
2019-12-26 23:40:50 +01:00
Camille GILLOT
75632c5ffe
Remove some type information.
2019-12-26 23:40:13 +01:00
Camille GILLOT
1984ec5d20
Fewer calls to arena.alloc.
2019-12-26 23:39:14 +01:00
Camille GILLOT
8284035372
Fallout in other crates.
2019-12-26 23:38:46 +01:00
Camille GILLOT
58b908d09c
Lowering for hir::Expr.
2019-12-26 23:36:12 +01:00
Camille GILLOT
52e9825ba8
Visit for hir::Expr.
2019-12-26 23:36:12 +01:00
Camille GILLOT
2b1cfe5b5b
Syntax for hir::Expr.
2019-12-26 23:36:12 +01:00
Oliver Scherer
f65a91eb47
Make ui test bitwidth independent
2019-12-26 22:50:18 +01:00
Oliver Scherer
12a4c2ca18
Fix rebase fallout
2019-12-26 22:50:18 +01:00
Oliver Scherer
aaffe12453
Use the targetted const eval functions
2019-12-26 22:50:18 +01:00
Oliver Scherer
b476344ccc
Reintroduce the recursion comment
2019-12-26 22:50:18 +01:00
Oliver Scherer
1531c3937b
Documentation nit
2019-12-26 22:50:18 +01:00
Oliver Scherer
20c1b3fb49
Add a const_eval
helper to InterpCx
2019-12-26 22:50:18 +01:00
Oliver Scherer
1acbf4b802
Early abort instead of building up zero sized values
2019-12-26 22:50:18 +01:00
Oliver Scherer
95205518dd
Explain why const_eval
is ok here
2019-12-26 22:50:17 +01:00
Oliver Scherer
0e3fafaea7
Typo
2019-12-26 22:50:17 +01:00
Oliver Scherer
72ebce0e1b
Remove unintended noisy log statement
2019-12-26 22:50:17 +01:00
Oliver Scherer
6937ca2c90
Explain the currently necessary existance of TransmuteSizeDiff
2019-12-26 22:50:17 +01:00
Oliver Scherer
cb8d1c3c65
Explain what we are doing with parameter environments for statics
2019-12-26 22:50:17 +01:00
Oliver Scherer
8a88ff1006
Comments should start capitalized and end in a period
2019-12-26 22:50:17 +01:00
Oliver Scherer
41d58185dd
Explain ParamEnv::reveal_all usage
2019-12-26 22:50:17 +01:00
Oliver Scherer
6b651b1a88
Add regression test for ZST statics being allowed to "read" from themselves
2019-12-26 22:50:17 +01:00
Oliver Scherer
a7a011d2fa
Immediately evaluate and validate constants when we want them as operands
2019-12-26 22:50:17 +01:00
Oliver Scherer
0e969b73f6
Interning even happens when validation of a constant fails
2019-12-26 22:50:17 +01:00
Oliver Scherer
a0bd1a695d
Prevent an ICE on invalid transmutes
2019-12-26 22:50:16 +01:00
Oliver Scherer
13694de4a2
Comment on a few odd things that we should look at
2019-12-26 22:50:16 +01:00
Oliver Scherer
bb1ecee5b6
Simplify force_allocation_maybe_sized
2019-12-26 22:50:16 +01:00
Oliver Scherer
b5b5258d74
Retire to_ptr
which should already have no users but still kept getting new ones
2019-12-26 22:50:14 +01:00
Oliver Scherer
1e40681f50
Don't ICE on the use of integer addresses for ZST constants in pattern matching
2019-12-26 22:46:22 +01:00
bors
3e0a1c0910
Auto merge of #67592 - matthewjasper:cleanup-match, r=Centril
...
Prepare for lowering or-patterns
This is probably best reviewed commit-by-commit.
* Rustfmt `rustc_mir::build::{self, matches}`
* Remove `-Znll-dont-emit-read-for-match`
* Split `match_expr` into smaller functions
* Feature gate or-patterns in const contexts
cc https://github.com/rust-lang/rust/issues/54883
r? @Centril
2019-12-26 16:44:52 +00:00
bors
3ac40b69c7
Auto merge of #67327 - oli-obk:cleanup, r=RalfJung
...
Split up `const_eval.rs`
Fixes #67316
r? @RalfJung
2019-12-26 13:15:05 +00:00
Oliver Scherer
07df1479e5
Rebase fallout
2019-12-26 12:11:12 +01:00
Oliver Scherer
7d5f36a1e5
A cycle error on a diverging function is now a const stack overflow again
2019-12-26 12:11:12 +01:00
Oliver Scherer
2e66f85111
Bail out before running the query
2019-12-26 12:11:12 +01:00
Oliver Scherer
b97abd0761
Tidy
2019-12-26 12:11:12 +01:00
Oliver Scherer
49f5b0834b
Fix imports after rebase
2019-12-26 12:11:12 +01:00
Oliver Scherer
d5f1d75dd2
Rename query
module
2019-12-26 12:11:12 +01:00
Oliver Scherer
4ffdd9a16a
Move function definitions before their first use
2019-12-26 12:11:12 +01:00
Oliver Scherer
e21d2c8f9b
Move all functions used by the queries to query.rs
2019-12-26 12:11:12 +01:00
Oliver Scherer
43221a684d
Move a function to make its adjacent impl block easier to discover
2019-12-26 12:11:11 +01:00
Oliver Scherer
eea51e3427
Make some functions crate local
2019-12-26 12:11:11 +01:00
Oliver Scherer
eda3fa9eb5
Move eval_body_using_ecx
to the only module it is used in
2019-12-26 12:11:11 +01:00
Oliver Scherer
9a82458e70
Move eval_const_fn_call
to the const_eval
module
2019-12-26 12:11:11 +01:00
Oliver Scherer
2d67edd32c
Move const eval query components into their own module
2019-12-26 12:11:11 +01:00
Oliver Scherer
3e7fa3c6f2
Move const eval machine into its own module
2019-12-26 12:10:36 +01:00
bors
acb6690e1d
Auto merge of #66670 - crlf0710:normalize_ident, r=Dylan-DPC
...
Normalize ident
Perform unicode normalization on identifiers. Resolving the first bullet point in #55467 .
2019-12-26 09:55:00 +00:00