diff options
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen.hs')
-rw-r--r-- | compiler/llvmGen/LlvmCodeGen.hs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/compiler/llvmGen/LlvmCodeGen.hs b/compiler/llvmGen/LlvmCodeGen.hs index 571348f577..241e52e392 100644 --- a/compiler/llvmGen/LlvmCodeGen.hs +++ b/compiler/llvmGen/LlvmCodeGen.hs @@ -14,8 +14,9 @@ import LlvmCodeGen.Ppr import LlvmMangler import CgUtils ( fixStgRegisters ) -import OldCmm -import OldPprCmm +import Cmm +import Hoopl +import PprCmm import BufWrite import DynFlags @@ -41,10 +42,11 @@ llvmCodeGen dflags h us cmms (cdata,env) = {-# SCC "llvm_split" #-} foldr split ([], initLlvmEnv dflags) cmm split (CmmData s d' ) (d,e) = ((s,d'):d,e) - split p@(CmmProc _ l live _) (d,e) = - let lbl = strCLabel_llvm env $ case topInfoTable p of - Nothing -> l - Just (Statics info_lbl _) -> info_lbl + split p@(CmmProc h l live g) (d,e) = + let lbl = strCLabel_llvm env $ + case mapLookup (g_entry g) h of + Nothing -> l + Just (Statics info_lbl _) -> info_lbl env' = funInsert lbl (llvmFunTy dflags live) e in (d,env') in do @@ -129,9 +131,6 @@ cmmProcLlvmGens dflags h _ _ [] _ ivars cmmProcLlvmGens dflags h us env ((CmmData _ _) : cmms) count ivars = cmmProcLlvmGens dflags h us env cmms count ivars -cmmProcLlvmGens dflags h us env ((CmmProc _ _ _ (ListGraph [])) : cmms) count ivars - = cmmProcLlvmGens dflags h us env cmms count ivars - cmmProcLlvmGens dflags h us env (cmm : cmms) count ivars = do (us', env', llvm) <- cmmLlvmGen dflags us (clearVars env) cmm let (docs, ivar) = mapAndUnzip (pprLlvmCmmDecl env' count) llvm |