%
% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
%
-% $Id: CgHeapery.lhs,v 1.28 2001/11/23 11:58:00 simonmar Exp $
+% $Id: CgHeapery.lhs,v 1.29 2001/12/12 12:19:11 simonmar Exp $
%
\section[CgHeapery]{Heap management functions}
-- build up a bitmap of the live pointer registers
+#if __GLASGOW_HASKELL__ >= 503
+shiftL = uncheckedShiftL#
+#else
+shiftL = shiftL#
+#endif
+
mkRegLiveness :: [MagicId] -> Word#
mkRegLiveness [] = int2Word# 0#
mkRegLiveness (VanillaReg rep i : regs) | isFollowableRep rep
- = ((int2Word# 1#) `shiftL#` (i -# 1#)) `or#` mkRegLiveness regs
+ = ((int2Word# 1#) `shiftL` (i -# 1#)) `or#` mkRegLiveness regs
mkRegLiveness (_ : regs) = mkRegLiveness regs
-- The two functions below are only used in a GranSim setup
import Stix ( StixStmt(..), StixExpr(..), StixReg(..),
CodeSegment, DestInfo(..) )
import Panic ( panic )
-import GlaExts ( word2Int#, int2Word#, shiftRL#, and#, (/=#) )
+import GlaExts
import Outputable ( pprPanic, ppr, showSDoc )
import IOExts ( trace )
import Config ( cLeadingUnderscore )
Just (toInteger (iBox (pow2 x#)))
}
where
+#if __GLASGOW_HASKELL__ >= 503
+ shiftr x y = uncheckedShiftRL# x y
+#else
shiftr x y = shiftRL# x y
+#endif
pow2 x# | x# ==# 1# = 0#
| otherwise = 1# +# pow2 (w2i (i2w x# `shiftr` 1#))