diff --git a/ghc/compiler/simplCore/ConFold.lhs b/ghc/compiler/simplCore/ConFold.lhs
index 1dfaf8242ac2763086fe97be3deb6bd45472fb96..e6f4be7fbbd1f057d0a127cb39bf712ff7294b19 100644
--- a/ghc/compiler/simplCore/ConFold.lhs
+++ b/ghc/compiler/simplCore/ConFold.lhs
@@ -104,7 +104,7 @@ tryPrimOp TagToEnumOp [Type ty, Con (Literal (MachInt i _)) _]
   | otherwise = panic "tryPrimOp: tagToEnum# on non-enumeration type"
     where tag = fromInteger i
 	  constrs = tyConDataCons tycon
-	  (dc:_) = [ dc | dc <- constrs, tag == dataConTag dc ]
+	  (dc:_) = [ dc | dc <- constrs, tag == dataConTag dc - fIRST_TAG ]
 	  (Just (tycon,_)) = splitTyConApp_maybe ty
 \end{code}