Use the list of builtin functions for inlining.
authorMatthijs Kooijman <matthijs@stdin.nl>
Wed, 10 Mar 2010 14:34:52 +0000 (15:34 +0100)
committerMatthijs Kooijman <matthijs@stdin.nl>
Wed, 10 Mar 2010 14:34:52 +0000 (15:34 +0100)
Previously a small, fixed list of functions was used for inlining. Now
we use the full list of builtin functions instead.

cλash/CLasH/Normalize/NormalizeTools.hs

index a291ccc7b7ba9f25fcc971d728118e67626899e9..b9f4544c2e768c0873302006d2efd2e7e9f9cd0a 100644 (file)
@@ -24,6 +24,7 @@ import qualified Type
 -- Local imports
 import CLasH.Normalize.NormalizeTypes
 import CLasH.Translator.TranslatorTypes
+import CLasH.VHDL.Constants (builtinIds)
 import CLasH.Utils
 import qualified CLasH.Utils.Core.CoreTools as CoreTools
 import qualified CLasH.VHDL.VHDLTools as VHDLTools
@@ -195,14 +196,11 @@ is_local_var _ = return False
 isUserDefined :: CoreSyn.CoreBndr -> Bool
 -- System names are certain to not be user defined
 isUserDefined bndr | Name.isSystemName (Id.idName bndr) = False
--- Check a list of typical compiler-defined names
-isUserDefined bndr = str `notElem` compiler_names
+-- Builtin functions are usually not user-defined either (and would
+-- break currently if they are...)
+isUserDefined bndr = str `notElem` builtinIds
   where
     str = Name.getOccString bndr
-    -- These are names of bindings usually generated by the compiler. For some
-    -- reason these are not marked as system, probably because the name itself
-    -- is not made up by the compiler, just this particular binding is.
-    compiler_names = ["fromInteger", "head", "tail", "init", "last", "+", "*", "-", "!"]
 
 -- Is the given binder normalizable? This means that its type signature can be
 -- represented in hardware, which should (?) guarantee that it can be made