diff --git a/ghc/compiler/nativeGen/StixInfo.lhs b/ghc/compiler/nativeGen/StixInfo.lhs
index 61bd8ec7f1faaf4644ce3cddf43220531278120f..1bfefc32d6fd6592f6837a1d9c424c7c1dabc305 100644
--- a/ghc/compiler/nativeGen/StixInfo.lhs
+++ b/ghc/compiler/nativeGen/StixInfo.lhs
@@ -14,7 +14,7 @@ import StgSyn		( SRT(..) )
 import ClosureInfo	( closurePtrsSize,
 			  closureNonHdrSize, closureSMRep,
 			  infoTableLabelFromCI,
-			  infoTblNeedsSRT, getSRTInfo
+			  infoTblNeedsSRT, getSRTInfo, closureSemiTag
 			)
 import PrimRep		( PrimRep(..) )
 import SMRep		( SMRep(..), getSMRepClosureTypeInt )
@@ -22,6 +22,7 @@ import Stix		-- all of it
 import UniqSupply	( returnUs, UniqSM )
 import Outputable	( int )
 import BitSet		( intBS )
+import Maybes		( maybeToBool )
 
 import Bits
 import Word
@@ -68,6 +69,8 @@ genCodeInfoTable (CClosureInfoAndCode cl_info _ _ cl_descr)
 	srt = getSRTInfo cl_info	     
 
 	(srt_label,srt_len)
+           | is_constr
+           = (StInt 0, tag)
            | needs_srt
 	   = case srt of
 		(lbl, SRT off len) -> 
@@ -76,6 +79,10 @@ genCodeInfoTable (CClosureInfoAndCode cl_info _ _ cl_descr)
            | otherwise
            = (StInt 0, 0)
 
+        maybe_tag = closureSemiTag cl_info
+        is_constr = maybeToBool maybe_tag
+        (Just tag) = maybe_tag
+
 	layout_info :: Word32
 #ifdef WORDS_BIGENDIAN
 	layout_info = (fromInt ptrs `shiftL` 16) .|. fromInt nptrs