summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2025-03-30 11:17:05 +0200
committerTom Smeding <tom@tomsmeding.com>2025-03-30 11:17:05 +0200
commit79920e874f1fa4191cd758fd6597d582fa52c447 (patch)
tree8efe52b10a1379d52c6e0841593404d4fb298d40
parentc06b4bd71a94601d467b509a26c08020d1fbd794 (diff)
Compile: Generate slightly less redundant C code
-rw-r--r--src/Compile.hs9
-rw-r--r--src/Compile/Exec.hs3
2 files changed, 8 insertions, 4 deletions
diff --git a/src/Compile.hs b/src/Compile.hs
index b4261ca..7bbb043 100644
--- a/src/Compile.hs
+++ b/src/Compile.hs
@@ -1082,9 +1082,12 @@ compile' env = \case
compileAssign :: String -> SList (Const String) env -> Ex env t -> CompM String
compileAssign prefix env e = do
e' <- compile' env e
- name <- genName' prefix
- emit $ SVarDecl True (repSTy (typeOf e)) name e'
- return name
+ case e' of
+ CELit name -> return name
+ _ -> do
+ name <- genName' prefix
+ emit $ SVarDecl True (repSTy (typeOf e)) name e'
+ return name
data Increment = Increment | Decrement
deriving (Show)
diff --git a/src/Compile/Exec.hs b/src/Compile/Exec.hs
index 9b29486..5f90ea2 100644
--- a/src/Compile/Exec.hs
+++ b/src/Compile/Exec.hs
@@ -40,7 +40,8 @@ buildKernel csource funnames = do
,"-std=c99", "-x", "c"
,"-o", outso, "-"
,"-Wall", "-Wextra"
- ,"-Wno-unused-variable", "-Wno-unused-parameter", "-Wno-unused-function"]
+ ,"-Wno-unused-variable", "-Wno-unused-but-set-variable"
+ ,"-Wno-unused-parameter", "-Wno-unused-function"]
(ec, gccStdout, gccStderr) <- readProcessWithExitCode "gcc" args csource
-- Print the source before the GCC output.