Hopefully generate completely unique varNames now (also for comp_ins labels)
authorChristiaan Baaij <christiaan.baaij@gmail.com>
Thu, 13 Aug 2009 16:03:30 +0000 (18:03 +0200)
committerChristiaan Baaij <christiaan.baaij@gmail.com>
Thu, 13 Aug 2009 16:03:30 +0000 (18:03 +0200)
cλash/CLasH/VHDL/Generate.hs
cλash/CLasH/VHDL/VHDLTools.hs

index 0be4f60be94c58bec17826191353d832ad83482a..ba84747854c05bd14582cd7d71f1b8e84d0008ee 100644 (file)
@@ -863,7 +863,7 @@ genApplication dst f args = do
           let entity_id = ent_id signature
           -- TODO: Using show here isn't really pretty, but we'll need some
           -- unique-ish value...
-          let label = "comp_ins_" ++ (either show prettyShow) dst
+          let label = "comp_ins_" ++ (either (prettyShow . varToVHDLName) prettyShow) dst
           let portmaps = mkAssocElems args' ((either varToVHDLName id) dst) signature
           return ([mkComponentInst label entity_id portmaps], [f])
         False -> do
index 2cd647bad3a5f0b0ca55d57ae7ad12e2b2eb95cf..0d95f55425c90ec9198a93bd1dbc46ee2a108b2c 100644 (file)
@@ -5,6 +5,7 @@ module CLasH.VHDL.VHDLTools where
 import qualified Maybe
 import qualified Data.Either as Either
 import qualified Data.List as List
+import qualified Data.Char as Char
 import qualified Data.Map as Map
 import qualified Control.Monad as Monad
 import qualified Control.Arrow as Arrow
@@ -183,7 +184,10 @@ dataconToVHDLExpr dc = AST.PrimLit lit
 varToVHDLId ::
   CoreSyn.CoreBndr
   -> AST.VHDLId
-varToVHDLId var = mkVHDLExtId $ (varToString var ++ varToStringUniq var)
+varToVHDLId var = mkVHDLExtId $ (varToString var ++ varToStringUniq var ++ (show $ lowers $ varToStringUniq var))
+  where
+    lowers :: String -> Int
+    lowers xs = length [x | x <- xs, Char.isLower x]
 
 -- Creates a VHDL Name from a binder
 varToVHDLName ::