Programs are now actually compiled all the way through.

This commit is contained in:
Samuel Hammersberg 2023-03-24 18:46:12 +01:00
parent e0c78f5783
commit e500c70529
3 changed files with 29 additions and 36 deletions

View file

@ -51,6 +51,7 @@ executable language
, hspec , hspec
, QuickCheck , QuickCheck
, directory , directory
, process
default-language: GHC2021 default-language: GHC2021
@ -83,5 +84,6 @@ Test-suite language-testsuite
, hspec , hspec
, QuickCheck , QuickCheck
, process , process
, bytestring
default-language: GHC2021 default-language: GHC2021

View file

@ -1,4 +1,4 @@
module Compiler where module Compiler (compile) where
import Grammar.ErrM (Err) import Grammar.ErrM (Err)
import System.Exit (exitFailure, exitSuccess) import System.Exit (exitFailure, exitSuccess)
@ -13,15 +13,10 @@ import System.Process.Extra (CreateProcess (..),
--spawnWait s = spawnCommand s >>= \s >>= waitForProcess --spawnWait s = spawnCommand s >>= \s >>= waitForProcess
optimize :: String -> IO String optimize :: String -> IO String
optimize prg = do optimize = readCreateProcess (shell "opt --O3 -S")
result <- readCreateProcess (shell "opt --O3") prg
putStrLn result
compileClang :: String -> IO String
compileClang = readCreateProcess (shell "clang -x ir -o hello_world -")
-- (Just hin, Just hout, _, _) <- createProcess (proc "opt" ["--O3"]){ std_in = CreatePipe, std_out = CreatePipe } compile :: String -> IO String
-- hSetBuffering hin NoBuffering compile s = optimize s >>= compileClang
-- hPutStrLn hin prg
-- hFlush hin
--bytes <- hGetContents hout
--putStrLn bytes
pure ""

View file

@ -14,15 +14,12 @@ import Monomorphizer.Monomorphizer (monomorphize)
import Control.Monad (when) import Control.Monad (when)
import Data.List.Extra (isSuffixOf) import Data.List.Extra (isSuffixOf)
import Compiler (optimize) import Compiler (compile)
import Renamer.Renamer (rename) import Renamer.Renamer (rename)
import System.Directory ( import System.Directory (createDirectory, doesPathExist,
createDirectory,
doesPathExist,
getDirectoryContents, getDirectoryContents,
removeDirectoryRecursive, removeDirectoryRecursive,
setCurrentDirectory, setCurrentDirectory)
)
import System.Environment (getArgs) import System.Environment (getArgs)
import System.Exit (exitFailure, exitSuccess) import System.Exit (exitFailure, exitSuccess)
import System.IO (stderr) import System.IO (stderr)
@ -67,8 +64,7 @@ main' debug s = do
writeFile "output/llvm.ll" generatedCode writeFile "output/llvm.ll" generatedCode
debugDotViz debugDotViz
optimize generatedCode compile generatedCode
-- interpred <- fromInterpreterErr $ interpret lifted -- interpred <- fromInterpreterErr $ interpret lifted
-- putStrLn "\n-- interpret" -- putStrLn "\n-- interpret"
-- print interpred -- print interpred