matthijs/master-project/cλash.git
13 years agoBuiltin builder arguments now get an extra Type.Type
christiaanb [Thu, 17 Jun 2010 14:17:00 +0000 (16:17 +0200)]
Builtin builder arguments now get an extra Type.Type

13 years agoImplement API change of shiftl and shiftr, limit Prelude import of HardwareTypes
christiaanb [Thu, 17 Jun 2010 08:30:57 +0000 (10:30 +0200)]
Implement API change of shiftl and shiftr, limit Prelude import of HardwareTypes

13 years agoFix vhdl type generation of index type, as upper bound is now exclusive
christiaanb [Thu, 17 Jun 2010 08:26:44 +0000 (10:26 +0200)]
Fix vhdl type generation of index type, as upper bound is now exclusive

13 years agoGive the index type an exclusive upper-bound, and fix related types accordingly
christiaanb [Wed, 16 Jun 2010 14:49:34 +0000 (16:49 +0200)]
Give the index type an exclusive upper-bound, and fix related types accordingly

13 years agoAdd a CaseAlt constructor to CoreContext.
Matthijs Kooijman [Wed, 16 Jun 2010 13:37:19 +0000 (15:37 +0200)]
Add a CaseAlt constructor to CoreContext.

Since a case expression can introduce a binder (for its scrutinee), we
should be able to denote that in the CoreContext.

13 years agoStore which binders become in scope in the CoreContext.
Matthijs Kooijman [Wed, 16 Jun 2010 13:34:14 +0000 (15:34 +0200)]
Store which binders become in scope in the CoreContext.

This allows us to determine what variables are local in a more reliable
way and allows distinguishing arguments from other local variables.

13 years agoUse the CoreContext predicate functions.
Matthijs Kooijman [Wed, 16 Jun 2010 13:15:49 +0000 (15:15 +0200)]
Use the CoreContext predicate functions.

Previously, comparisons were made to the constructors directly, which
will break when arguments are added to the CoreContext constructors.

13 years agoAdd predicate functions for the CoreContext type.
Matthijs Kooijman [Wed, 16 Jun 2010 13:15:33 +0000 (15:15 +0200)]
Add predicate functions for the CoreContext type.

13 years agoLet genApplication handle (built-in) enumeration types.
Matthijs Kooijman [Wed, 16 Jun 2010 11:28:47 +0000 (13:28 +0200)]
Let genApplication handle (built-in) enumeration types.

Since datacons are no longer seen as local variables, genApplication
sees simple datacons without arguments (e.g., x = True). Now it knows
how to handle these.

13 years agoRestructure genApplication to handle all AggrTypes.
Matthijs Kooijman [Wed, 16 Jun 2010 11:27:14 +0000 (13:27 +0200)]
Restructure genApplication to handle all AggrTypes.

Previously, some cases of AggrType (resulting from recently added extra
ADT support) were not properly handled.

13 years agoDon't treat datacon id's as local variables.
Matthijs Kooijman [Wed, 16 Jun 2010 10:47:44 +0000 (12:47 +0200)]
Don't treat datacon id's as local variables.

This ensures that datacon id's get simplified like they should.
Previously, this wasn't really needed, since a datacon id would become a
constant that could be used in conditional assignments directly. Now,
however, there might be more complex ADT's (like the Maybe type), where
one of the constructors is without arguments (e.g., Nothing), but
assigning the enumeration value directly won't work (it should go into
the constructor field).

13 years agoAdd getConstructorFieldLabel accessor function.
Matthijs Kooijman [Wed, 16 Jun 2010 10:39:58 +0000 (12:39 +0200)]
Add getConstructorFieldLabel accessor function.

13 years agoAdd datacons_for function to get the datacons for a TypedThing.
Matthijs Kooijman [Wed, 16 Jun 2010 10:37:20 +0000 (12:37 +0200)]
Add datacons_for function to get the datacons for a TypedThing.

13 years agoCorrectly treat errors as a nested list in mkTyConHType.
Matthijs Kooijman [Wed, 16 Jun 2010 09:19:49 +0000 (11:19 +0200)]
Correctly treat errors as a nested list in mkTyConHType.

This prevents no errors (list of empty lists) to be treated as an error
condition (since the list is not empty).

13 years agoDon't mix up the i and dc_i variables.
Matthijs Kooijman [Wed, 16 Jun 2010 09:18:15 +0000 (11:18 +0200)]
Don't mix up the i and dc_i variables.

13 years agoAdd support for multiple-constructor datatypes with fields.
Matthijs Kooijman [Wed, 9 Jun 2010 20:30:13 +0000 (22:30 +0200)]
Add support for multiple-constructor datatypes with fields.

This is the naïve implementation that will not try to use the same
storage space for fields from different constructors, so it might
quickly become inefficient with bigger datatypes. For simple types like
the Maybe type, this should be fine.

The support is not quite working yet, for some reason these new types
are not marked as representable. This is cause because the type
substitution in mkTyConHType does not work for some reason, so the field
type of the Just constructor in (for example) a Maybe Bool type stays
"a" instead of "Bool".

13 years agoAdd stringToVHDLExpr function.
Matthijs Kooijman [Wed, 9 Jun 2010 20:29:23 +0000 (22:29 +0200)]
Add stringToVHDLExpr function.

13 years agoAdd datacon_index function to find a datacon in a type.
Matthijs Kooijman [Wed, 9 Jun 2010 20:28:34 +0000 (22:28 +0200)]
Add datacon_index function to find a datacon in a type.

13 years agoMake casesimpl support multiple-alt cases with fields.
Matthijs Kooijman [Wed, 9 Jun 2010 20:27:58 +0000 (22:27 +0200)]
Make casesimpl support multiple-alt cases with fields.

13 years agoMerge branch 'master' of git://github.com/christiaanb/clash
Matthijs Kooijman [Tue, 8 Jun 2010 13:48:06 +0000 (15:48 +0200)]
Merge branch 'master' of git://github.com/christiaanb/clash

* 'master' of git://github.com/christiaanb/clash:
  Do not be overzealous with inlining results of polymorphic functions
  Do not function extract functions that still have free type variables
  Add setup file
  Fix cabal file to reflect temp bug fixes
  Temporarily disable "inlinenonrepresult" transformation, and apply eta-expansion transformation to all expressions
  Rename cλash dir to clash so it behaves well within the ghc build tree
  update cabal file to upload to hackage
  Remove defunct makeVHDLStrings function, messes with haddock
  Update reducer to use new integer types
  Reflect moving TFVec and TFP Integers into clash in sourcefiles related to builtin types
  Update package dependencies
  Move TFVec and TFP integers (Signed, Unsiged and Index) into clash

13 years agoDo not be overzealous with inlining results of polymorphic functions
christiaanb [Tue, 8 Jun 2010 13:45:14 +0000 (15:45 +0200)]
Do not be overzealous with inlining results of polymorphic functions

13 years agoDo not function extract functions that still have free type variables
christiaanb [Tue, 8 Jun 2010 13:43:39 +0000 (15:43 +0200)]
Do not function extract functions that still have free type variables

13 years agoAdd setup file
christiaanb [Mon, 7 Jun 2010 20:41:14 +0000 (22:41 +0200)]
Add setup file

13 years agoFix cabal file to reflect temp bug fixes
christiaanb [Mon, 7 Jun 2010 20:37:42 +0000 (22:37 +0200)]
Fix cabal file to reflect temp bug fixes

13 years agoTemporarily disable "inlinenonrepresult" transformation, and apply eta-expansion...
christiaanb [Mon, 7 Jun 2010 20:36:13 +0000 (22:36 +0200)]
Temporarily disable "inlinenonrepresult" transformation, and apply eta-expansion transformation to all expressions

13 years agoRename cλash dir to clash so it behaves well within the ghc build tree
christiaanb [Wed, 2 Jun 2010 08:03:58 +0000 (10:03 +0200)]
Rename cλash dir to clash so it behaves well within the ghc build tree

13 years agoupdate cabal file to upload to hackage
christiaanb [Tue, 1 Jun 2010 15:02:51 +0000 (17:02 +0200)]
update cabal file to upload to hackage

13 years agoRemove defunct makeVHDLStrings function, messes with haddock
christiaanb [Tue, 1 Jun 2010 15:01:49 +0000 (17:01 +0200)]
Remove defunct makeVHDLStrings function, messes with haddock

13 years agoUpdate reducer to use new integer types
christiaanb [Tue, 1 Jun 2010 14:21:30 +0000 (16:21 +0200)]
Update reducer to use new integer types

13 years agoReflect moving TFVec and TFP Integers into clash in sourcefiles related to builtin...
christiaanb [Tue, 1 Jun 2010 14:20:33 +0000 (16:20 +0200)]
Reflect moving TFVec and TFP Integers into clash in sourcefiles related to builtin types

13 years agoUpdate package dependencies
christiaanb [Tue, 1 Jun 2010 14:19:04 +0000 (16:19 +0200)]
Update package dependencies

13 years agoMove TFVec and TFP integers (Signed, Unsiged and Index) into clash
christiaanb [Tue, 1 Jun 2010 14:16:00 +0000 (16:16 +0200)]
Move TFVec and TFP integers (Signed, Unsiged and Index) into clash

13 years agoAlso simplify top level binder scrutinees.
Matthijs Kooijman [Wed, 26 May 2010 18:05:20 +0000 (20:05 +0200)]
Also simplify top level binder scrutinees.

Previously, if the scrutinee was a variable reference, it would not be
simplified, skipping top level binders as scrutinees. Now only local
variable references are skipped.

13 years agoAdd a new "section" for type-class transformations.
Matthijs Kooijman [Wed, 26 May 2010 15:27:06 +0000 (17:27 +0200)]
Add a new "section" for type-class transformations.

13 years agoImprove listBindings output.
Matthijs Kooijman [Tue, 25 May 2010 19:30:50 +0000 (21:30 +0200)]
Improve listBindings output.

13 years agoReorder transformations to match my thesis.
Matthijs Kooijman [Tue, 18 May 2010 09:59:33 +0000 (11:59 +0200)]
Reorder transformations to match my thesis.

Also add or correct some comments.

13 years agoMove a part of β-reduction to application propagation.
Matthijs Kooijman [Tue, 18 May 2010 08:16:07 +0000 (10:16 +0200)]
Move a part of β-reduction to application propagation.

14 years agoMake debug output controllable with a top-level "constant".
Matthijs Kooijman [Wed, 14 Apr 2010 13:19:02 +0000 (15:19 +0200)]
Make debug output controllable with a top-level "constant".

14 years agoAdd traceIf function for conditional tracing.
Matthijs Kooijman [Wed, 14 Apr 2010 13:16:42 +0000 (15:16 +0200)]
Add traceIf function for conditional tracing.

14 years agoMove the application of "everywhere" to dotransforms.
Matthijs Kooijman [Tue, 13 Apr 2010 15:26:58 +0000 (17:26 +0200)]
Move the application of "everywhere" to dotransforms.

Since every transformation is now applied "everywhere", we don't need to
specify this for every transform. This allows us to change the
application order in the future.

14 years agoRemove some commented out code.
Matthijs Kooijman [Tue, 13 Apr 2010 15:10:41 +0000 (17:10 +0200)]
Remove some commented out code.

14 years agos/normalise/normalize/
Matthijs Kooijman [Tue, 13 Apr 2010 14:56:19 +0000 (16:56 +0200)]
s/normalise/normalize/

14 years agoDon't inline non representable results with free type variables.
Matthijs Kooijman [Tue, 13 Apr 2010 14:48:35 +0000 (16:48 +0200)]
Don't inline non representable results with free type variables.

argprop should ensure that these variables get removed eventually
anyway.

14 years agoImprove error message in mkSelCase.
Matthijs Kooijman [Tue, 13 Apr 2010 14:48:24 +0000 (16:48 +0200)]
Improve error message in mkSelCase.

14 years agoReplace fst with a lambda in a map.
Matthijs Kooijman [Tue, 13 Apr 2010 14:47:36 +0000 (16:47 +0200)]
Replace fst with a lambda in a map.

Cλash doesn't like mapping the fst builtin yet, so avoid that for now.

14 years agoForbid inlinenonrepresult to inline dictionaries.
Matthijs Kooijman [Tue, 13 Apr 2010 14:09:47 +0000 (16:09 +0200)]
Forbid inlinenonrepresult to inline dictionaries.

14 years agoRemove two debug traces.
Matthijs Kooijman [Tue, 13 Apr 2010 14:09:36 +0000 (16:09 +0200)]
Remove two debug traces.

14 years agoRewrite fromInteger and literal generation.
Matthijs Kooijman [Tue, 13 Apr 2010 12:40:17 +0000 (14:40 +0200)]
Rewrite fromInteger and literal generation.

Literals are less of a hack now and should work more reliably.

14 years agoNo longer treat tfp ints as builtin types.
Matthijs Kooijman [Tue, 13 Apr 2010 12:39:17 +0000 (14:39 +0200)]
No longer treat tfp ints as builtin types.

This makes tfp ints non-representable, breaking their use as literal
arguments to fromIntegerT for now.

14 years agoAdd genCoreArgs wrapper to VHDL.Generate.
Matthijs Kooijman [Tue, 13 Apr 2010 12:38:23 +0000 (14:38 +0200)]
Add genCoreArgs wrapper to VHDL.Generate.

14 years agoMove tfp_to_int from VHDLTools to CoreTools.
Matthijs Kooijman [Tue, 13 Apr 2010 12:33:28 +0000 (14:33 +0200)]
Move tfp_to_int from VHDLTools to CoreTools.

14 years agoAdd getFullString function to get a qualified name.
Matthijs Kooijman [Tue, 13 Apr 2010 11:41:40 +0000 (13:41 +0200)]
Add getFullString function to get a qualified name.

14 years agoAdd non-representable result inlining transformation.
Matthijs Kooijman [Wed, 7 Apr 2010 13:12:03 +0000 (15:12 +0200)]
Add non-representable result inlining transformation.

14 years agoAdd case of known constructor simplification.
Matthijs Kooijman [Wed, 7 Apr 2010 13:08:35 +0000 (15:08 +0200)]
Add case of known constructor simplification.

14 years agoAllow normalized functions to have a non-representable result.
Matthijs Kooijman [Wed, 7 Apr 2010 12:45:11 +0000 (14:45 +0200)]
Allow normalized functions to have a non-representable result.

An extra boolean argument to getNormalized / isNormalizeable switches
this behaviour when needed (which is never currently).

This commit also removes the unused isNormalizeable'.

14 years agoAdd allM and anyM functions.
Matthijs Kooijman [Wed, 7 Apr 2010 12:15:22 +0000 (14:15 +0200)]
Add allM and anyM functions.

14 years agoSplit off selector case creation code into CoreTools.
Matthijs Kooijman [Tue, 6 Apr 2010 17:47:01 +0000 (19:47 +0200)]
Split off selector case creation code into CoreTools.

14 years agoMake top level inlining handle non-representable results gracefully.
Matthijs Kooijman [Tue, 6 Apr 2010 17:44:57 +0000 (19:44 +0200)]
Make top level inlining handle non-representable results gracefully.

Since it does not know (nor care) if the function result is
representable, it now uses splitNormalizedNonRep and checks if the
result is a Var afterwards.

14 years agoFix typo in error message.
Matthijs Kooijman [Tue, 6 Apr 2010 17:17:49 +0000 (19:17 +0200)]
Fix typo in error message.

14 years agoAdd variant of splitNormalized for non-representable expressions.
Matthijs Kooijman [Tue, 6 Apr 2010 15:11:45 +0000 (17:11 +0200)]
Add variant of splitNormalized for non-representable expressions.

14 years agoSwitch order of clauses in retvalsimpl to match thesis.
Matthijs Kooijman [Tue, 6 Apr 2010 14:50:39 +0000 (16:50 +0200)]
Switch order of clauses in retvalsimpl to match thesis.

14 years agoUpdate comment for return value simplification.
Matthijs Kooijman [Tue, 6 Apr 2010 14:45:17 +0000 (16:45 +0200)]
Update comment for return value simplification.

14 years agoFix let binding inlining in some cases.
Matthijs Kooijman [Tue, 6 Apr 2010 14:22:04 +0000 (16:22 +0200)]
Fix let binding inlining in some cases.

Let binding inlining was not working properly when an to-be-inlined
binding used another to-be-inlined binding and they were inlined in the
wrong order (the result would be a reference to a no longer existing
binding).

14 years agoTurn letderecursification into let recursification again.
Matthijs Kooijman [Wed, 31 Mar 2010 15:21:27 +0000 (17:21 +0200)]
Turn letderecursification into let recursification again.

Since we can't completely derecursify everything, just make our lives
easy by making everything recursive.

14 years agoRevert "Make inlinebind work for non-recursive lets."
Matthijs Kooijman [Wed, 31 Mar 2010 15:20:20 +0000 (17:20 +0200)]
Revert "Make inlinebind work for non-recursive lets."

This reverts commit 077fe523188b85aff82569232acecfc9dbb082cb.

Conflicts:

cλash/CLasH/Normalize/NormalizeTools.hs

14 years agoSlightly move the "after normalization" debug output.
Matthijs Kooijman [Wed, 31 Mar 2010 14:44:47 +0000 (16:44 +0200)]
Slightly move the "after normalization" debug output.

This should ensure it is always printed. Previously, it seems it was printed
only when the final state from the monad was accessed, not when the
value was used (which caused problems if the value caused an error
further on).

14 years agoCompilefix debug output.
Matthijs Kooijman [Wed, 31 Mar 2010 14:33:28 +0000 (16:33 +0200)]
Compilefix debug output.

14 years agoUpdate reducer to latest design (that runs at 159 MHz)
christiaanb [Wed, 31 Mar 2010 13:07:28 +0000 (15:07 +0200)]
Update reducer to latest design (that runs at 159 MHz)

14 years agoAdd time dependency to cabal package
christiaanb [Wed, 31 Mar 2010 13:02:51 +0000 (15:02 +0200)]
Add time dependency to cabal package

14 years agoShow number of transformations per function.
Matthijs Kooijman [Wed, 31 Mar 2010 12:22:29 +0000 (14:22 +0200)]
Show number of transformations per function.

14 years agoKeep (and show) a count of applied transformations.
Matthijs Kooijman [Wed, 31 Mar 2010 12:17:37 +0000 (14:17 +0200)]
Keep (and show) a count of applied transformations.

14 years agoMerge lambdasimpl, letsimpl and simplres into retvalsimpl transformation.
Matthijs Kooijman [Wed, 31 Mar 2010 12:15:50 +0000 (14:15 +0200)]
Merge lambdasimpl, letsimpl and simplres into retvalsimpl transformation.

This makes these transformations like described in my thesis.

14 years agoShow the current transformation context in the debug output.
Matthijs Kooijman [Wed, 31 Mar 2010 11:57:07 +0000 (13:57 +0200)]
Show the current transformation context in the debug output.

14 years agoDerive Show for CoreContext.
Matthijs Kooijman [Wed, 31 Mar 2010 11:56:34 +0000 (13:56 +0200)]
Derive Show for CoreContext.

14 years agoAdd is_let predicate.
Matthijs Kooijman [Wed, 31 Mar 2010 11:55:44 +0000 (13:55 +0200)]
Add is_let predicate.

14 years agoLog the time needed for compilation.
Matthijs Kooijman [Wed, 31 Mar 2010 11:01:47 +0000 (13:01 +0200)]
Log the time needed for compilation.

14 years agoOnly apply eta expansion to expressions at the top level.
Matthijs Kooijman [Wed, 31 Mar 2010 10:39:44 +0000 (12:39 +0200)]
Only apply eta expansion to expressions at the top level.

14 years agoDerive Eq for CoreContext.
Matthijs Kooijman [Wed, 31 Mar 2010 10:38:39 +0000 (12:38 +0200)]
Derive Eq for CoreContext.

14 years agoAdd LambdaBody to CoreContext.
Matthijs Kooijman [Wed, 31 Mar 2010 10:38:27 +0000 (12:38 +0200)]
Add LambdaBody to CoreContext.

14 years agoOnly inline top level functions that are completely applied.
Matthijs Kooijman [Wed, 31 Mar 2010 09:35:05 +0000 (11:35 +0200)]
Only inline top level functions that are completely applied.

Partial function applications will be inlined in their entirety to make
them fully applied first.

14 years agoInline all simple top level functions, not just compiler-generated ones.
Matthijs Kooijman [Wed, 31 Mar 2010 09:28:51 +0000 (11:28 +0200)]
Inline all simple top level functions, not just compiler-generated ones.

The checking for compiler generated functions wasn't watertight, so
let's just don't check at all. There is no risk for loops with
funextract anymore, since we only inline functions applied in let
bindings now.

14 years agoOnly inline dictionaries that are likely to be resolvable.
Matthijs Kooijman [Wed, 31 Mar 2010 09:03:38 +0000 (11:03 +0200)]
Only inline dictionaries that are likely to be resolvable.

14 years agoOnly inline top level functions that are applied in a let binding.
Matthijs Kooijman [Tue, 30 Mar 2010 14:52:13 +0000 (16:52 +0200)]
Only inline top level functions that are applied in a let binding.

This should limit the amount of inlinings that happen a bit, make sure
inlining is only done in later stages of inlining and only when it
actually helps to prevent useless components. This should help to
prevent loops with inlinedict, since dictionary arguments should never
be inlined anymore.

14 years agoAdd LetBody and LetBinding to the CoreContext.
Matthijs Kooijman [Tue, 30 Mar 2010 14:49:51 +0000 (16:49 +0200)]
Add LetBody and LetBinding to the CoreContext.

14 years agoRemove notappargs, which is unused now.
Matthijs Kooijman [Tue, 30 Mar 2010 13:00:16 +0000 (15:00 +0200)]
Remove notappargs, which is unused now.

14 years agoLet eta expansion use the passed context instead of using notappargs.
Matthijs Kooijman [Tue, 30 Mar 2010 12:59:43 +0000 (14:59 +0200)]
Let eta expansion use the passed context instead of using notappargs.

14 years agoAdd AppFirst and AddSecond to CoreContext.
Matthijs Kooijman [Tue, 30 Mar 2010 12:56:43 +0000 (14:56 +0200)]
Add AppFirst and AddSecond to CoreContext.

Also let subeverywhere set those contexts when appropriate.

14 years agoPass the context in which an expression occurs to each transformation.
Matthijs Kooijman [Tue, 30 Mar 2010 12:25:54 +0000 (14:25 +0200)]
Pass the context in which an expression occurs to each transformation.

Currently, the only context supported is "Other" and contexts are only
passed around and not yet used anywhere.

14 years agoadd fromRangedWord function, and add error message to genVarArgs
christiaanb [Tue, 30 Mar 2010 09:50:10 +0000 (11:50 +0200)]
add fromRangedWord function, and add error message to genVarArgs

14 years agoMerge branch 'master' of http://git.stderr.nl/matthijs/master-project/cλash
Christiaan Baaij [Thu, 25 Mar 2010 08:52:36 +0000 (09:52 +0100)]
Merge branch 'master' of git.stderr.nl/matthijs/master-project/cλash

Conflicts:
cλash/CLasH/Normalize.hs
cλash/CLasH/Normalize/NormalizeTools.hs

14 years agoFix gencopy' to use proper vhdl names
Christiaan Baaij [Sun, 21 Mar 2010 21:41:38 +0000 (22:41 +0100)]
Fix gencopy' to use proper vhdl names

14 years agoAdd "init" to list of builtin function within NormalizeTools
Christiaan Baaij [Sat, 20 Mar 2010 21:23:45 +0000 (22:23 +0100)]
Add "init" to list of builtin function within NormalizeTools

14 years agoMove built_in names to different list within NormalizeTools
Christiaan Baaij [Sat, 20 Mar 2010 21:18:43 +0000 (22:18 +0100)]
Move built_in names to different list within NormalizeTools

14 years agoFix zipWith template to work with partially applied functions, add support for boolea...
Christiaan Baaij [Sat, 20 Mar 2010 15:42:05 +0000 (16:42 +0100)]
Fix zipWith template to work with partially applied functions, add support for boolean negation, and update error message of classopresolution transformation

14 years agoDon't inline == and /=.
Matthijs Kooijman [Wed, 10 Mar 2010 15:23:34 +0000 (16:23 +0100)]
Don't inline == and /=.

This is a hack to prevent problems caused by the derived Eq instances.
This is not a real solution, though.

14 years agoRestructure the top level inlining transformation.
Matthijs Kooijman [Wed, 10 Mar 2010 15:05:56 +0000 (16:05 +0100)]
Restructure the top level inlining transformation.

It now checks to see if the original (non-normalized) body is already
simple and only resorts to normalizing if the original body isn't simple
already. This should speed things up a bit, also because inlining the
normalized body probably needs some extra cleanups.

14 years agoDon't resolve class operations that are builtin functions.
Matthijs Kooijman [Wed, 10 Mar 2010 15:03:51 +0000 (16:03 +0100)]
Don't resolve class operations that are builtin functions.

We already have a fixed VHDL translation for these, and usually the
actual implementation is not translateable (for example, the derived Eq
instances translate dataconstructors to Int#'s and use GHC.Prim.==# to
compare them).

14 years agoUse the list of builtin functions for inlining.
Matthijs Kooijman [Wed, 10 Mar 2010 14:34:52 +0000 (15:34 +0100)]
Use the list of builtin functions for inlining.

Previously a small, fixed list of functions was used for inlining. Now
we use the full list of builtin functions instead.

14 years agoSlightly improve normalization debug output.
Matthijs Kooijman [Wed, 10 Mar 2010 14:33:50 +0000 (15:33 +0100)]
Slightly improve normalization debug output.

When tracing individual transformations, their before and after outputs
are now always directly after each other.

14 years agoFix casesimpl and caseremove wrt scrutinee binders.
Matthijs Kooijman [Wed, 10 Mar 2010 13:54:04 +0000 (14:54 +0100)]
Fix casesimpl and caseremove wrt scrutinee binders.

Previously, they would not check if the scrutinee binder was used,
resulting in it being removed or incorrectly used in some cases.