The GC argument is now passed to the compiler and codegen.

This commit is contained in:
Samuel Hammersberg 2023-04-28 14:24:44 +02:00
parent ddffe7913c
commit f9d28028b5
3 changed files with 6 additions and 6 deletions

View file

@ -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

View file

@ -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

View file

@ -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"