Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
f79ba85
clean up E0185 explanation
GuillaumeGomez Jan 9, 2020
f45758c
Compile some CGUs in parallel at the start of codegen
Zoxc Jan 5, 2020
69bacd0
Precompile CGUs while the main thread has the implicit job server token
Zoxc Jan 8, 2020
54f8601
Fix ICE #68058
JohnTitor Jan 9, 2020
a59abfa
Revert const_eval call to use const_eval_raw to avoid const validatio…
spastorino Dec 31, 2019
1688719
Promote `Ref`s to constants instead of static
spastorino Nov 22, 2019
2508f17
Promote `Repeat`s to constants instead of statics
spastorino Dec 10, 2019
32fe477
Promote `Argument`s to constants instead of statics
spastorino Dec 11, 2019
6aa4b5a
Add promoted_operand closure to reuse code across different
spastorino Dec 11, 2019
6f2c702
Remove StaticKind::Promoted
spastorino Dec 11, 2019
b63597d
Remove StaticKind
spastorino Dec 11, 2019
fb2f0ec
Use if let instead of match with one meaningful arm
spastorino Dec 11, 2019
9e70c47
Remove unused param_env parameter
spastorino Dec 11, 2019
fd5aa32
Remove Static from PlaceBase
spastorino Dec 11, 2019
5d9b399
Remove PlaceBase enum and make Place base field be local: Local
spastorino Dec 11, 2019
a9de4f1
Fix print const on librustdoc
spastorino Dec 13, 2019
7f3459a
No need to use local.into here
spastorino Dec 13, 2019
a5715a3
Use re_erased instead of re_static
spastorino Dec 19, 2019
8533caa
Make Place Copy
spastorino Dec 19, 2019
1565612
Add span_bug that notes that shuffle indices must be constant
spastorino Dec 19, 2019
36b1756
Do not store lint_root
spastorino Jan 1, 2020
6e1bbff
Promoteds also need param envs.
oli-obk Jan 8, 2020
ecd5852
Errors in promoteds may only cause lints not hard errors
oli-obk Jan 8, 2020
050146f
Add regression tests for promotion mir expansion
oli-obk Jan 9, 2020
43313d5
Remove an outdated comment
oli-obk Jan 9, 2020
a5d8ab7
Rebase fallout
oli-obk Jan 9, 2020
c899f67
Improve E0185 wording
GuillaumeGomez Jan 10, 2020
4fadb50
Update E0185.md
Dylan-DPC Jan 10, 2020
f3ce144
Run codegen unit partitioning and assert_symbols_are_distinct in para…
Zoxc Dec 31, 2019
4beeadd
Fix a deadlock
Zoxc Dec 31, 2019
51a73eb
Avoid a duplicate hash map lookup
Zoxc Dec 31, 2019
4a64716
Add a comment
Zoxc Jan 10, 2020
48cad46
Fix test not to depend on environment
JohnTitor Jan 11, 2020
8f1df30
Only require `allow_internal_unstable` for stable `const fn`
ecstatic-morse Jan 11, 2020
09b5c85
Remove unnecessary `const_fn` feature gates
ecstatic-morse Jan 11, 2020
1d418a1
Test that stable `const fn` requires `allow_internal_unstable`
ecstatic-morse Jan 11, 2020
a5f4239
Rename Result::as_deref_ok to as_deref
tesuji Jan 6, 2020
c2c2d3b
Update test after renaming Result::as_deref
tesuji Jan 7, 2020
fc30825
Expand comment
ecstatic-morse Jan 11, 2020
883932c
Ban `...X` pats, harden tests, and improve diagnostics.
Centril Jan 11, 2020
8e35c4f
feature_gate: Remove `GateStrength`
petrochenkov Jan 8, 2020
020c465
Rollup merge of #67000 - spastorino:remove-promoted-from-place, r=oli…
Centril Jan 11, 2020
f5077d7
Rollup merge of #67756 - Zoxc:collector-tweaks, r=Mark-Simulacrum
Centril Jan 11, 2020
72bf6f4
Rollup merge of #67889 - Zoxc:parallel-cgus, r=michaelwoerister
Centril Jan 11, 2020
1691ee2
Rollup merge of #67930 - lzutao:result-as_deref, r=dtolnay
Centril Jan 11, 2020
71a719c
Rollup merge of #68018 - petrochenkov:nosoft, r=Centril
Centril Jan 11, 2020
b2027df
Rollup merge of #68070 - GuillaumeGomez:clean-up-e0185, r=Dylan-DPC
Centril Jan 11, 2020
544c981
Rollup merge of #68072 - JohnTitor:fix-macro-ice, r=petrochenkov
Centril Jan 11, 2020
b00abbe
Rollup merge of #68114 - ecstatic-morse:fix-feature-gating, r=Centril
Centril Jan 11, 2020
b8f6eb9
Rollup merge of #68120 - Centril:ban-range-to-dotdotdot, r=oli-obk
Centril Jan 11, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Do not store lint_root
  • Loading branch information
spastorino authored and oli-obk committed Jan 10, 2020
commit 36b17567117a881f94b83ae6c80b6808a208e026
22 changes: 13 additions & 9 deletions src/librustc_mir/transform/const_prop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,6 @@ struct ConstPropagator<'mir, 'tcx> {
// Because we have `MutVisitor` we can't obtain the `SourceInfo` from a `Location`. So we store
// the last known `SourceInfo` here and just keep revisiting it.
source_info: Option<SourceInfo>,
lint_root: Option<HirId>,
}

impl<'mir, 'tcx> LayoutOf for ConstPropagator<'mir, 'tcx> {
Expand Down Expand Up @@ -344,7 +343,6 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
local_decls: body.local_decls.clone(),
ret: ret.map(Into::into),
source_info: None,
lint_root: None,
}
}

Expand Down Expand Up @@ -378,6 +376,10 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
F: FnOnce(&mut Self) -> InterpResult<'tcx, T>,
{
self.ecx.tcx.span = source_info.span;
// FIXME(eddyb) move this to the `Panic(_)` error case, so that
// `f(self)` is always called, and that the only difference when the
// scope's `local_data` is missing, is that the lint isn't emitted.
let lint_root = self.lint_root(source_info)?;
let r = match f(self) {
Ok(val) => Some(val),
Err(error) => {
Expand Down Expand Up @@ -411,7 +413,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
diagnostic.report_as_lint(
self.ecx.tcx,
"this expression will panic at runtime",
self.lint_root?,
lint_root,
None,
);
}
Expand All @@ -423,7 +425,11 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
r
}

fn eval_constant(&mut self, c: &Constant<'tcx>) -> Option<Const<'tcx>> {
fn eval_constant(
&mut self,
c: &Constant<'tcx>,
source_info: SourceInfo,
) -> Option<Const<'tcx>> {
self.ecx.tcx.span = c.span;

// FIXME we need to revisit this for #67176
Expand All @@ -435,7 +441,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
Ok(op) => Some(op),
Err(error) => {
let err = error_to_const_error(&self.ecx, error);
match self.lint_root {
match self.lint_root(source_info) {
Some(lint_root) if c.literal.needs_subst() => {
// Out of backwards compatibility we cannot report hard errors in unused
// generic functions using associated constants of the generic parameters.
Expand All @@ -462,7 +468,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {

fn eval_operand(&mut self, op: &Operand<'tcx>, source_info: SourceInfo) -> Option<Const<'tcx>> {
match *op {
Operand::Constant(ref c) => self.eval_constant(c),
Operand::Constant(ref c) => self.eval_constant(c, source_info),
Operand::Move(ref place) | Operand::Copy(ref place) => {
self.eval_place(place, source_info)
}
Expand Down Expand Up @@ -801,14 +807,13 @@ impl<'mir, 'tcx> MutVisitor<'tcx> for ConstPropagator<'mir, 'tcx> {
fn visit_constant(&mut self, constant: &mut Constant<'tcx>, location: Location) {
trace!("visit_constant: {:?}", constant);
self.super_constant(constant, location);
self.eval_constant(constant);
self.eval_constant(constant, self.source_info.unwrap());
}

fn visit_statement(&mut self, statement: &mut Statement<'tcx>, location: Location) {
trace!("visit_statement: {:?}", statement);
let source_info = statement.source_info;
self.source_info = Some(source_info);
self.lint_root = self.lint_root(source_info);
if let StatementKind::Assign(box (ref place, ref mut rval)) = statement.kind {
let place_ty: Ty<'tcx> = place.ty(&self.local_decls, self.tcx).ty;
if let Ok(place_layout) = self.tcx.layout_of(self.param_env.and(place_ty)) {
Expand Down Expand Up @@ -860,7 +865,6 @@ impl<'mir, 'tcx> MutVisitor<'tcx> for ConstPropagator<'mir, 'tcx> {
let source_info = terminator.source_info;
self.source_info = Some(source_info);
self.super_terminator(terminator, location);
self.lint_root = self.lint_root(source_info);
match &mut terminator.kind {
TerminatorKind::Assert { expected, ref msg, ref mut cond, .. } => {
if let Some(value) = self.eval_operand(&cond, source_info) {
Expand Down