diff options
| author | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2019-02-05 13:24:49 +0200 |
|---|---|---|
| committer | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2019-02-14 13:36:51 +0200 |
| commit | af131d55b6bb0e6824cf5921d04cbb5fc02c47d9 (patch) | |
| tree | c523f16188a95eae28111d6722fb5c76983ee626 | |
| parent | b4fbebb636d0f31658354f9cecee52d265602d2e (diff) | |
| download | rust-af131d55b6bb0e6824cf5921d04cbb5fc02c47d9.tar.gz rust-af131d55b6bb0e6824cf5921d04cbb5fc02c47d9.zip | |
rustc_mir: remove qualify_consts::Qualif::FN_ARGUMENT.
| -rw-r--r-- | src/librustc_mir/transform/qualify_consts.rs | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/src/librustc_mir/transform/qualify_consts.rs b/src/librustc_mir/transform/qualify_consts.rs index 44c7327044f..0d3080d3f22 100644 --- a/src/librustc_mir/transform/qualify_consts.rs +++ b/src/librustc_mir/transform/qualify_consts.rs @@ -41,16 +41,13 @@ bitflags::bitflags! { // Constant containing an ADT that implements Drop. const NEEDS_DROP = 1 << 1; - // Function argument. - const FN_ARGUMENT = 1 << 2; - // Not constant at all - non-`const fn` calls, asm!, // pointer comparisons, ptr-to-int casts, etc. - const NOT_CONST = 1 << 3; + const NOT_CONST = 1 << 2; // Refers to temporaries which cannot be promoted as // promote_consts decided they weren't simple enough. - const NOT_PROMOTABLE = 1 << 4; + const NOT_PROMOTABLE = 1 << 3; // Const items can only have MUTABLE_INTERIOR // and NOT_PROMOTABLE without producing an error. @@ -136,10 +133,6 @@ impl<'a, 'tcx> Qualifier<'a, 'tcx> { let mut qualif = self.local_qualif[local] .unwrap_or(Qualif::NOT_CONST); - if let LocalKind::Arg = kind { - qualif = qualif | Qualif::FN_ARGUMENT; - } - if !self.temp_promotion_state[local].is_promotable() { qualif = qualif | Qualif::NOT_PROMOTABLE; } @@ -498,9 +491,8 @@ impl<'a, 'tcx> Checker<'a, 'tcx> { let mut local_qualif = IndexVec::from_elem(None, &mir.local_decls); for arg in mir.args_iter() { - let mut qualif = Qualif::NEEDS_DROP; - qualif.restrict(mir.local_decls[arg].ty, tcx, param_env); - local_qualif[arg] = Some(qualif); + let qualif = Qualif::for_ty(mir.local_decls[arg].ty, tcx, param_env); + local_qualif[arg] = Some(Qualif::NOT_PROMOTABLE | qualif); } Checker { |
