about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc/ty/subst.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/librustc/ty/subst.rs b/src/librustc/ty/subst.rs
index 3eb859679da..cf6a1e354d3 100644
--- a/src/librustc/ty/subst.rs
+++ b/src/librustc/ty/subst.rs
@@ -18,6 +18,7 @@ use serialize::{self, Encodable, Encoder, Decodable, Decoder};
 use syntax_pos::{Span, DUMMY_SP};
 use rustc_data_structures::accumulate_vec::AccumulateVec;
 
+use core::intrinsics;
 use core::nonzero::NonZero;
 use std::fmt;
 use std::iter;
@@ -84,14 +85,12 @@ impl<'tcx> Kind<'tcx> {
     #[inline]
     pub fn unpack(self) -> UnpackedKind<'tcx> {
         let ptr = self.ptr.get();
-        match ptr & TAG_MASK {
-            REGION_TAG => unsafe {
-                UnpackedKind::Lifetime(&*((ptr & !TAG_MASK) as *const _))
-            },
-            TYPE_TAG => unsafe {
-                UnpackedKind::Type(&*((ptr & !TAG_MASK) as *const _))
-            },
-            _ => bug!("packed kind has invalid tag")
+        unsafe {
+            match ptr & TAG_MASK {
+                REGION_TAG => UnpackedKind::Lifetime(&*((ptr & !TAG_MASK) as *const _)),
+                TYPE_TAG => UnpackedKind::Type(&*((ptr & !TAG_MASK) as *const _)),
+                _ => intrinsics::unreachable()
+            }
         }
     }
 }