Changes between Version 23 and Version 24 of Commentary/Compiler/RecompilationAvoidance


Ignore:
Timestamp:
Feb 13, 2012 9:23:50 AM (3 years ago)
Author:
simonmar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Compiler/RecompilationAvoidance

    v23 v24  
    550550   In GHC 6.12 we changed this so that compiler-generated bindings are given names of the form `f_x`, where `f` is the name of the exported Id that refers to the binding.  If there are multiple `f_x`s, then they are disambiguated with an integer suffix, but the numbers are assigned deterministically, by traversing the definition of `f` in depth-first left-to-right order to find references.  See `TidyPgm.chooseExternalIds`.
    551551
    552  * There are still some cases where an interface can change without changing the source code.  Here are the ones I know about
    553    * The `spec_ids` (specialised Ids) attached to an Id have a non-deterministic ordering
    554    * CSE can give different results depending on the order in which the bindings are considered, and since the ordering is
    555      non-deterministic, the result of CSE is also non-deterministic.  e.g. in `x = z; y = z; z = 3`, where `y` and `x` are
    556      exported, we can end up with either `x = y; y = 3` or `y = x; x = 3`.
    557    * There seems to be something unpredictable about the order of arguments to SpecConstr-generated specialisations, see [http://www.haskell.org/pipermail/glasgow-haskell-users/2011-April/020287.html]
     552 * There are still some cases where an interface can change without changing the source code.  The ones we know about are listed in #4012