summaryrefslogtreecommitdiff
path: root/src/Compile.hs
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 /src/Compile.hs
parentc06b4bd71a94601d467b509a26c08020d1fbd794 (diff)
Compile: Generate slightly less redundant C code
Diffstat (limited to 'src/Compile.hs')
-rw-r--r--src/Compile.hs9
1 files changed, 6 insertions, 3 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)