summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
265bedd)
It is in the NatM monad, which has DynFlags as part of its state.
-- Top-level of the native codegen
data NcgImpl instr jumpDest = NcgImpl {
-- Top-level of the native codegen
data NcgImpl instr jumpDest = NcgImpl {
- cmmTopCodeGen :: DynFlags -> RawCmmTop -> NatM [NatCmmTop instr],
+ cmmTopCodeGen :: RawCmmTop -> NatM [NatCmmTop instr],
generateJumpTableForInstr :: instr -> Maybe (NatCmmTop instr),
getJumpDestBlockId :: jumpDest -> Maybe BlockId,
canShortcut :: instr -> Maybe jumpDest,
generateJumpTableForInstr :: instr -> Maybe (NatCmmTop instr),
getJumpDestBlockId :: jumpDest -> Maybe BlockId,
canShortcut :: instr -> Maybe jumpDest,
- -> (DynFlags -> RawCmmTop -> NatM [NatCmmTop instr])
+ -> (RawCmmTop -> NatM [NatCmmTop instr])
-> RawCmmTop
-> UniqSM
( [NatCmmTop instr]
-> RawCmmTop
-> UniqSM
( [NatCmmTop instr]
genMachCode dflags cmmTopCodeGen cmm_top
= do { initial_us <- getUs
; let initial_st = mkNatM_State initial_us 0 dflags
genMachCode dflags cmmTopCodeGen cmm_top
= do { initial_us <- getUs
; let initial_st = mkNatM_State initial_us 0 dflags
- (new_tops, final_st) = initNat initial_st (cmmTopCodeGen dflags cmm_top)
+ (new_tops, final_st) = initNat initial_st (cmmTopCodeGen cmm_top)
final_delta = natm_delta final_st
final_imports = natm_imports final_st
; if final_delta == 0
final_delta = natm_delta final_st
final_imports = natm_imports final_st
; if final_delta == 0
- :: DynFlags
- -> RawCmmTop
-> NatM [NatCmmTop Instr]
-> NatM [NatCmmTop Instr]
-cmmTopCodeGen dflags (CmmProc info lab (ListGraph blocks)) = do
+cmmTopCodeGen (CmmProc info lab (ListGraph blocks)) = do
(nat_blocks,statics) <- mapAndUnzipM basicBlockCodeGen blocks
picBaseMb <- getPicBaseMaybeNat
(nat_blocks,statics) <- mapAndUnzipM basicBlockCodeGen blocks
picBaseMb <- getPicBaseMaybeNat
+ dflags <- getDynFlagsNat
let proc = CmmProc info lab (ListGraph $ concat nat_blocks)
tops = proc : concat statics
os = platformOS $ targetPlatform dflags
let proc = CmmProc info lab (ListGraph $ concat nat_blocks)
tops = proc : concat statics
os = platformOS $ targetPlatform dflags
Just picBase -> initializePicBase_ppc ArchPPC os picBase tops
Nothing -> return tops
Just picBase -> initializePicBase_ppc ArchPPC os picBase tops
Nothing -> return tops
-cmmTopCodeGen dflags (CmmData sec dat) = do
+cmmTopCodeGen (CmmData sec dat) = do
return [CmmData sec dat] -- no translation, we just use CmmStatic
basicBlockCodeGen
return [CmmData sec dat] -- no translation, we just use CmmStatic
basicBlockCodeGen
import Unique
import Control.Monad ( mapAndUnzipM )
import Unique
import Control.Monad ( mapAndUnzipM )
-- | Top level code generation
cmmTopCodeGen
-- | Top level code generation
cmmTopCodeGen
- :: DynFlags
- -> RawCmmTop
-> NatM [NatCmmTop Instr]
-> NatM [NatCmmTop Instr]
(CmmProc info lab (ListGraph blocks))
= do
(nat_blocks,statics) <- mapAndUnzipM basicBlockCodeGen blocks
(CmmProc info lab (ListGraph blocks))
= do
(nat_blocks,statics) <- mapAndUnzipM basicBlockCodeGen blocks
-cmmTopCodeGen _ (CmmData sec dat) = do
+cmmTopCodeGen (CmmData sec dat) = do
return [CmmData sec dat] -- no translation, we just use CmmStatic
return [CmmData sec dat] -- no translation, we just use CmmStatic
if b then sse2 else x87
cmmTopCodeGen
if b then sse2 else x87
cmmTopCodeGen
- :: DynFlags
- -> RawCmmTop
-> NatM [NatCmmTop Instr]
-> NatM [NatCmmTop Instr]
-cmmTopCodeGen dynflags (CmmProc info lab (ListGraph blocks)) = do
+cmmTopCodeGen (CmmProc info lab (ListGraph blocks)) = do
(nat_blocks,statics) <- mapAndUnzipM basicBlockCodeGen blocks
picBaseMb <- getPicBaseMaybeNat
(nat_blocks,statics) <- mapAndUnzipM basicBlockCodeGen blocks
picBaseMb <- getPicBaseMaybeNat
+ dflags <- getDynFlagsNat
let proc = CmmProc info lab (ListGraph $ concat nat_blocks)
tops = proc : concat statics
let proc = CmmProc info lab (ListGraph $ concat nat_blocks)
tops = proc : concat statics
- os = platformOS $ targetPlatform dynflags
+ os = platformOS $ targetPlatform dflags
case picBaseMb of
Just picBase -> initializePicBase_x86 ArchX86 os picBase tops
Nothing -> return tops
case picBaseMb of
Just picBase -> initializePicBase_x86 ArchX86 os picBase tops
Nothing -> return tops
-cmmTopCodeGen _ (CmmData sec dat) = do
+cmmTopCodeGen (CmmData sec dat) = do
return [CmmData sec dat] -- no translation, we just use CmmStatic
return [CmmData sec dat] -- no translation, we just use CmmStatic