From d5d642a170cd29e60c4d1dacd18ac4c5a8f8becd Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Wed, 1 Feb 2017 15:19:48 +0100 Subject: Dots before labels to prevent namespace pollution --- codegen.hs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/codegen.hs b/codegen.hs index 4c3bca9..f1c4305 100644 --- a/codegen.hs +++ b/codegen.hs @@ -64,12 +64,12 @@ runCGMonad m = let (e, s) = runState (runExceptT (unMon m)) initialGenState getUniqueId :: CGMonad Integer getUniqueId = state $ \s -> (nextId s, s {nextId = nextId s + 1}) -getNewName :: String -> CGMonad String +getNewName :: String -> CGMonad LLName getNewName base = fmap ((base++) . show) getUniqueId newBlock :: CGMonad LLName newBlock = do - name <- getNewName "bb" + name <- getNewName ".bb" state $ \s -> (name, s { currentBlock = Just name, allBlocks = Map.insert name (A.BasicBlock (A.Name name) [] undefined) $ allBlocks s @@ -96,7 +96,7 @@ addInstr :: A.Instruction -> CGMonad LLName addInstr instr | instrReturnsVoid instr = addNamedInstr $ A.Do instr | otherwise = do - name <- getNewName "t" + name <- getNewName ".t" addNamedInstr $ A.Name name A.:= instr addNamedInstr :: A.Named A.Instruction -> CGMonad LLName @@ -150,7 +150,7 @@ lookupGlobalFunction name = liftM (fromJust . Map.lookup name . globalFunctions) addStringLiteral :: String -> CGMonad (A.Type, LLName) addStringLiteral str = do - name <- getNewName "str" + name <- getNewName ".str" state $ \s -> ((A.ptr $ A.ArrayType (fromIntegral (length str + 1)) A.i8, name), s {stringLiterals = (name, str) : stringLiterals s}) @@ -229,7 +229,7 @@ genGlobalVars (Program decs) = liftM (mapMaybe id) $ mapM gen decs return Nothing gen (DecExtern t@(TypeFunc rt ats) n) = do setGlobalFunction n n t - argnames <- sequence $ replicate (length ats) (getNewName "arg") + argnames <- sequence $ replicate (length ats) (getNewName ".arg") return $ Just $ A.GlobalDefinition $ A.functionDefaults { A.G.returnType = toLLVMType rt, @@ -277,7 +277,7 @@ genFunctions (Program decs) = liftM (mapMaybe id) $ mapM gen decs return $ Just $ A.GlobalDefinition $ A.functionDefaults { A.G.returnType = toLLVMType rettype, A.G.name = A.Name name, - A.G.parameters = ([A.Parameter (toLLVMType t) (A.Name ("farg_"++n)) [] | (t,n) <- args], False), + A.G.parameters = ([A.Parameter (toLLVMType t) (A.Name (".farg_"++n)) [] | (t,n) <- args], False), A.G.basicBlocks = bbs } gen _ = return Nothing @@ -291,7 +291,7 @@ genFunctionBlock bl (rettype, fname) args = do prepArg (t,n) = do label <- addInstr $ A.Alloca (toLLVMType t) Nothing 0 [] void $ addInstr $ A.Store False (A.LocalReference (A.ptr (toLLVMType t)) (A.Name label)) - (A.LocalReference (toLLVMType t) (A.Name ("farg_"++n))) + (A.LocalReference (toLLVMType t) (A.Name (".farg_"++n))) Nothing 0 [] setVar n label t sequence_ $ map prepArg args -- cgit v1.2.3