diff --git a/src/Codegen/Codegen.hs b/src/Codegen/Codegen.hs index e3343d7..60135a7 100644 --- a/src/Codegen/Codegen.hs +++ b/src/Codegen/Codegen.hs @@ -18,8 +18,8 @@ import TypeChecker.TypeCheckerIr (Ident (..)) An easy way to actually "compile" this output is to Simply pipe it to LLI -} -generateCode :: MIR.Program -> Err String -generateCode (MIR.Program scs) = do +generateCode :: MIR.Program -> Bool -> Err String +generateCode (MIR.Program scs) addGc = do let tree = filter (not . detectPrelude) (sortBy lowData scs) let codegen = initCodeGenerator tree llvmIrToString . instructions <$> execStateT (compileScs tree) codegen diff --git a/src/Compiler.hs b/src/Compiler.hs index 43c9c5e..12f36b0 100644 --- a/src/Compiler.hs +++ b/src/Compiler.hs @@ -29,5 +29,5 @@ compileClang = , "-" ] -compile :: String -> IO String -compile s = optimize s >>= compileClang +compile :: String -> Bool -> IO String +compile s addGc = optimize s >>= compileClang diff --git a/src/Main.hs b/src/Main.hs index 316024d..c870d8b 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -137,7 +137,7 @@ main' opts s = log monomorphized printToErr "\n -- Compiler --" - generatedCode <- fromErr $ generateCode monomorphized + generatedCode <- fromErr $ generateCode monomorphized (gc opts) check <- doesPathExist "output" when check (removeDirectoryRecursive "output") @@ -146,7 +146,7 @@ main' opts s = writeFile "output/llvm.ll" generatedCode debugDotViz - compile generatedCode + compile generatedCode (gc opts) printToErr "Compilation done!" printToErr "\n-- Program output --" print =<< spawnWait "./output/hello_world"