import Unique ( Unique, getUnique )
import UniqSupply
import DynFlags
-#if powerpc_TARGET_ARCH
-import StaticFlags ( opt_Static, opt_PIC )
-#endif
+import StaticFlags
import Util
-#if !defined(darwin_TARGET_OS)
-import Config ( cProjectVersion )
-#endif
+import Config
import Digraph
import qualified Pretty
import FastString
import UniqSet
import ErrUtils
+import Module
-- DEBUGGING ONLY
--import OrdList
import Data.Maybe
import Control.Monad
import System.IO
+import Distribution.System
{-
The native-code generator has machine-independent and
handleBlock addr (BasicBlock id instrs)
= BasicBlock id (zipWith makeFar [addr..] instrs)
- makeFar addr (BCC ALWAYS tgt) = BCC ALWAYS tgt
+ makeFar _ (BCC ALWAYS tgt) = BCC ALWAYS tgt
makeFar addr (BCC cond tgt)
| abs (addr - targetAddr) >= nearLimit
= BCCFAR cond tgt
| otherwise
= BCC cond tgt
where Just targetAddr = lookupUFM blockAddressMap tgt
- makeFar addr other = other
+ makeFar _ other = other
nearLimit = 7000 -- 8192 instructions are allowed; let's keep some
-- distance, as we have a few pseudo-insns that are
(CmmLit $ CmmInt (fromIntegral off) wordWidth)
]
-#if powerpc_TARGET_ARCH
- -- On powerpc (non-PIC), it's easier to jump directly to a label than
- -- to use the register table, so we replace these registers
- -- with the corresponding labels:
+ -- On powerpc (non-PIC), it's easier to jump directly to a label than
+ -- to use the register table, so we replace these registers
+ -- with the corresponding labels:
CmmReg (CmmGlobal EagerBlackholeInfo)
- | not opt_PIC
+ | cTargetArch == PPC && not opt_PIC
-> cmmExprConFold referenceKind $
CmmLit (CmmLabel (mkCmmCodeLabel rtsPackageId (fsLit "__stg_EAGER_BLACKHOLE_info")))
CmmReg (CmmGlobal GCEnter1)
- | not opt_PIC
+ | cTargetArch == PPC && not opt_PIC
-> cmmExprConFold referenceKind $
CmmLit (CmmLabel (mkCmmCodeLabel rtsPackageId (fsLit "__stg_gc_enter_1")))
CmmReg (CmmGlobal GCFun)
- | not opt_PIC
+ | cTargetArch == PPC && not opt_PIC
-> cmmExprConFold referenceKind $
CmmLit (CmmLabel (mkCmmCodeLabel rtsPackageId (fsLit "__stg_gc_fun")))
-#endif
other
-> return other