]> git.lizzy.rs Git - rust.git/commitdiff
rustc_mir: remove qualify_consts::Qualif::FN_ARGUMENT.
authorEduard-Mihai Burtescu <edy.burt@gmail.com>
Tue, 5 Feb 2019 11:24:49 +0000 (13:24 +0200)
committerEduard-Mihai Burtescu <edy.burt@gmail.com>
Thu, 14 Feb 2019 11:36:51 +0000 (13:36 +0200)
src/librustc_mir/transform/qualify_consts.rs

index 44c7327044fdaa0ae1d51aacbe0f299d6c5a72a8..0d3080d3f22acb68f2234fa5760b7a14f502ec72 100644 (file)
@@ -41,16 +41,13 @@ struct Qualif: u8 {
         // 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 @@ fn qualify_local(&self, local: Local) -> Qualif {
                 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 @@ fn new(tcx: TyCtxt<'a, 'tcx, '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 {