+data CgInfo = CgInfo
+ !Arity -- Exact arity for calling purposes
+ !CafInfo
+#ifdef DEBUG
+ | NoCgInfo -- In debug mode we don't want a black hole here
+ -- See Id.idCgInfo
+
+ -- noCgInfo is used for local Ids, which shouldn't need any CgInfo
+noCgInfo = NoCgInfo
+#else
+noCgInfo = panic "NoCgInfo!"
+#endif
+
+cgArity (CgInfo arity _) = arity
+cgCafInfo (CgInfo _ caf_info) = caf_info
+
+setCafInfo info caf_info =
+ case cgInfo info of { CgInfo arity _ ->
+ info `setCgInfo` CgInfo arity caf_info }
+
+setCgArity info arity =
+ case cgInfo info of { CgInfo _ caf_info ->
+ info `setCgInfo` CgInfo arity caf_info }
+
+cgMayHaveCafRefs (CgInfo _ caf_info) = mayHaveCafRefs caf_info
+
+seqCg c = c `seq` () -- fields are strict anyhow
+
+vanillaCgInfo = CgInfo 0 MayHaveCafRefs -- Definitely safe
+
+-- CafInfo is used to build Static Reference Tables (see simplStg/SRT.lhs).
+