diff options
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen.hs')
-rw-r--r-- | compiler/llvmGen/LlvmCodeGen.hs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/compiler/llvmGen/LlvmCodeGen.hs b/compiler/llvmGen/LlvmCodeGen.hs index 2a568f820f..f649069b97 100644 --- a/compiler/llvmGen/LlvmCodeGen.hs +++ b/compiler/llvmGen/LlvmCodeGen.hs @@ -42,8 +42,8 @@ import System.IO -- | Top-level of the LLVM Code generator -- llvmCodeGen :: DynFlags -> Handle -> UniqSupply - -> Stream.Stream IO RawCmmGroup () - -> IO () + -> Stream.Stream IO RawCmmGroup a + -> IO a llvmCodeGen dflags h us cmm_stream = withTiming (pure dflags) (text "LLVM CodeGen") (const ()) $ do bufh <- newBufHandle h @@ -66,12 +66,14 @@ llvmCodeGen dflags h us cmm_stream $+$ text "We will try though...") -- run code generation - runLlvm dflags ver bufh us $ + a <- runLlvm dflags ver bufh us $ llvmCodeGen' (liftStream cmm_stream) bFlush bufh -llvmCodeGen' :: Stream.Stream LlvmM RawCmmGroup () -> LlvmM () + return a + +llvmCodeGen' :: Stream.Stream LlvmM RawCmmGroup a -> LlvmM a llvmCodeGen' cmm_stream = do -- Preamble renderLlvm header @@ -79,13 +81,15 @@ llvmCodeGen' cmm_stream cmmMetaLlvmPrelude -- Procedures - () <- Stream.consume cmm_stream llvmGroupLlvmGens + a <- Stream.consume cmm_stream llvmGroupLlvmGens -- Declare aliases for forward references renderLlvm . pprLlvmData =<< generateExternDecls -- Postamble cmmUsedLlvmGens + + return a where header :: SDoc header = sdocWithDynFlags $ \dflags -> |