Permalink
Commits on Jun 19, 2008
  1. added examples fib.hs and simple.hs that don't require the Prelude.

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Jun 19, 2008
    They work well without transformation ORC, but they fail with this transformation turned on,
    giving the runtime error "non partial apply applied".
    
    changed transformation ORC so that definitions of FFI functions are moved to the outermost level,
    satisfying some invariant of the Core-to-GRIN transformation.
Commits on Jun 11, 2008
  1. bugfix in transformation CLM

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Jun 11, 2008
  2. bugfix in transformation CLFR

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Jun 11, 2008
Commits on Jun 9, 2008
  1. added transformation Core/Trf/RenAddSuffix.cag

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Jun 9, 2008
    It adds a suffix to every identifier so that the lazy and strict version can
    coexist in one compilation unit
  2. Strict evaluation is now based on a 'state' monad

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Jun 9, 2008
      OrcM a = [Int] -> ([Int], a)
    that threads the oracle through the program
Commits on Jun 8, 2008
  1. oops.

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Jun 8, 2008
  2. Now, transformation DebugStrict prepares a module for the

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Jun 8, 2008
    oracle-directed evaluation, and transformation OracleCreation
    enables it to create an oracle.
Commits on Jun 6, 2008
  1. cleanup, added transformation Core/Trf/LetFixrec.cag

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Jun 6, 2008
    This transformation replaces recursive let-bindings with an explicit
    fixpoint calculation:
    
      let x=e1 in e2
    
    becomes
    
      letrec fix = \f -> f (fix f)
      in let x = fix (\x -> e1)
         in e2
Commits on May 30, 2008
  1. MERGED with version 1106 of trunk, added core transformations CLM, DBGS.

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed May 30, 2008
    CLM turns mutually recursive definitions into single recursions (and is still buggy)
    
    DBGS adds calls to the oracle creation mechanism to acore program (and shows strange behavior, too)
Commits on May 8, 2008
  1. new Core transformation LetUnMutual, bugfix in prim.cc, experiments w…

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed May 8, 2008
    …ith opcodes for GRIN interpreter backend
Commits on Apr 15, 2008
  1. added primitives for

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Apr 15, 2008
    - oracle creation (primInitOracle, primOracleEnter, primOracleLeave,
    	primOracleNewEntry)
    	)
    - consuming the current oracle (primWhatIsNextOracle)
    
    - printing the current oracle (primDumpOracle)
    
    - checking if a thunk is evaluated (thunkIsEvaluated)
    
    These primitives will only work with the interpreter backend.
    
    - Added some small testcases for these functions to ehclib/ehcbase/t
  2. updated branch to rev. 1079

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Apr 15, 2008
Commits on Apr 8, 2008
  1. Created branch for the oracle-based debugging extension of EHC.

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Apr 8, 2008
  2. changed option to date command

    HolgerSiegel HolgerSiegel
    HolgerSiegel authored and HolgerSiegel committed Apr 8, 2008
Commits on Apr 7, 2008
  1. - Expressing fake AG dependencies by AG annotation, instead of on Has…

    atzedijkstra committed Apr 7, 2008
    …kell level.
    
    WARNING: the most recent AG version (from svn) must be used because of a fix to the AG implementation of introducing fake dependencies.
Commits on Apr 4, 2008
  1. Introduction of thesis

    JohnVanSchie JohnVanSchie
    JohnVanSchie authored and JohnVanSchie committed Apr 4, 2008
  2. - Fixed loop ehc when using strict AG evaluator.

    atzedijkstra committed Apr 4, 2008
      Caused by combination of:
      - unintended dependency from type to kind analysis
      - which went unnoticed because warning were switched off (AG will be changed to report cycles when using strict evaluation as an error, so it will stop),
        now turned on, which gives much warnings about missing type signatures for local attributes as well.
      - polarity not tied in with the rest caused many induced dependencies, also unnoticed
Commits on Mar 31, 2008
  1. * Cosmetic change to llvm-compilerdriver, saving bitcode (.bc) and op…

    JohnVanSchie JohnVanSchie
    JohnVanSchie authored and JohnVanSchie committed Mar 31, 2008
    …timized bitcode (_opt.bc) in separate files
    
    * Added unreachable directive to the LLVM bindings (and generated after a call to primPatternMatchFailure() )
  2. Generate and use LLVM code on Windows/Cygwin platform

    JeroenFokker committed Mar 31, 2008
    (re-run autoconf and configure)
  3. * Added IfThenElse to the LLVMBackend.

    JohnVanSchie JohnVanSchie
    JohnVanSchie authored and JohnVanSchie committed Mar 31, 2008
Commits on Mar 28, 2008
  1. * Commented a boehm-gc valgrind work-around, due to some ancient GCC

    JohnVanSchie JohnVanSchie
    JohnVanSchie authored and JohnVanSchie committed Mar 28, 2008
    versions on apples ;) But this is ok, because valgrind is only supported 
    on linux and AIX. Thus when valgrind is needed, just uncomment two lines 
    in llvm-gc.cc
    * Added some chapters that were forgotten the previous commit.
  2. - fixed HS->EH bug in operator section not properly avoiding name cap…

    atzedijkstra committed Mar 28, 2008
    …ture for e.g. (<x),
    
      faulty translated to (\x -> x < x) instead of a uniqified version (\$x_35_1_0 -> $x_35_1_0 < x)).
    - start with on-the-fly cleanup of unique id generation, giving more meaningful names to attributes holding unique ids
  3. * Replaced the GC with version 7.0. This saves a couple of seconds. P…

    JohnVanSchie JohnVanSchie
    JohnVanSchie authored and JohnVanSchie committed Mar 28, 2008
    …lease remove
    
    $EHC_HOME/build/bgc-non-threaded/ before building a new version of EHC
    * Fixed a LLVM optimizer bug (Rerun configure)
Commits on Mar 25, 2008
  1. - Integration of Arie's polarity inferencing, in particular with modu…

    atzedijkstra committed Mar 25, 2008
    …le system etc. Not yet put to use by fitsIn, nor finished yet, but does not hinder either.
    
      - Fixes for polarity inferencing:
         - unnecessary substitutions,
         - inference for tuples (missing binding in environment for "_Rec" record constructor),
         - error messages for absent bindings (strictly not necessary, but helps debugging)
      - Feature interaction:
         - type synonyms
         - dependency on presence of 'error' for data types with fields caused Exception to be in the same binding group as error, leading to too strict polarity
      - Todo:
         - Had to turn off UUAGC strictness pragmas in EH/MainAG because of loop, unclear why as no cycles are reported.
         - Proper analysis for class predicates and type annotations 'e :: t', currently either too liberal or too strict
      - Other fixes/improvements:
         - mutual recursive type synonyms are allowed, infinite recursion was already checked during synonym expansion.
         - improved cyclic/infinite type reporting
    - rerun ./configure
  2. Modification of ruler. If you write:

    amiddelk committed Mar 25, 2008
    > judge* ...
    
    instead of:
    
    > judge ...
    
    the /next/ judgement (if any) will be pp-ed on the same line with a little bit of hspace in between.
Commits on Mar 21, 2008
  1. - Regression testing adapted to use installed uhc for variant 101, 'm…

    atzedijkstra committed Mar 21, 2008
    …ake test-regress TEST_VARIANTS=101' thus can be used to test regress the installed uhc.
    
      A variant independent 'make test-regress TEST_VARIANTS=uhc' is also allowed.
Commits on Mar 20, 2008
  1. A new transformation merges adjacent Grin case-expressions in some si…

    JeroenFokker committed Mar 20, 2008
    …tuations.
    
    Many such opportunities arise from the recently introduced "Late Inlining".
    Currently it is only performed with --priv=1, because the LLVM backend is not yet ready for it.
    
    Detailed explanation:
    Many case expression in Grin originate from inlining Eval.
    They have the following form:
        CASE x
        {   [N] #F/f y -> CALL f y; \r ->
                          UPDATEUNIT r x
            [I] #C/c   -> UNIT x
        }; \z ->
    That is: if a function was postponed, it is called now, and the result updates the redex;
    if it was already evaluated, nothing happens.
    Often, such a case expression is followed by another case:
        CASE z
        {   [N] #C/c   -> do something useful
        }
    It is a waste do do the case-distinction twice.
    As a preparation to the merge, we annotate the alternatives as either "[N]ormal" or "[I]dent".
    
    Two adjacent case-expressions can be merged if the pattern after the first (z in the example)
    is the scrutinee of the second.
    In the example we get:
        CASE x
        {   [R] #F/f y -> CALL f y; \r ->
                          UPDATEUNIT r x
            [N] #C/c   -> do something useful
        }
    That is: the [N]ormal alternatives from the first case are re-annotated as [R]e-entrant;
    the [I]dent alternatives from the first case are thrown away.
    All alternatives from the second case are kept.
    Alternatives annotated [R]e-entrant have special semantics: they generate special code, 
    in order to scrutinize the result again.
    
    Subtlety: any z that may occur free in the body must be replaced by x.
  2. * With this fix, only the non-threaded bgc library is build and linke…

    JohnVanSchie JohnVanSchie
    JohnVanSchie authored and JohnVanSchie committed Mar 20, 2008
    …d against. It is installed in $EHC_HOME/install and thus used by all backends. This solves the
    
    slowness of the GC which was caused by the threaded version.
Commits on Mar 19, 2008
  1. - First version of 'make install', which installs ehc as uhc.

    atzedijkstra committed Mar 19, 2008
      The easiest way to do this turned out to make a new variant 101 (previous 101 renamed to 102. Thus avoiding mixing up with variant 100),
      and parameterize make with a globally available install location, usually inside /usr/local etc. Variant 101 should not be run as 'ehc', only as an installed 'uhc'.
      Current 'good to realize' aspects:
          - via 'sudo make install' all libraries are build under root permission, an effect of sudo.
          - the globally shared libutil library is build in the install dir as well, triggering a rebuild of e.g. ruler as well.
          - a non writeable dir of a file to be compiled prevents compilation, but then assumes that the file already is compiled.
      - Rerun ./configure.
      - Run: ghc-pkg --user unregister EH101-0.1
             ghc-pkg --user unregister GRIN101-0.1
          if you ever have built variant 101
      - The Prelude is compiled/installed and put into the right place, but cannot be used without the original sources.
      - Full program analysis & llvm has not been tried out with make install.
    - Todo: extend regression testing to test the installed version
    
    - Fixed compilerdriver bug which did leave out optimizations in refactored cpTransformGrin.
      (Caused by 'if ... else x ++ if ... else y' meaning 'if ... else (x ++ if ... else y)' instead of intended '(if ... else x) ++ (if ... else y)')
  2. Changed the regression test-suite to accumulate an error count.

    amiddelk committed Mar 19, 2008
    This error count is printed at the end of the test report.
    The make process now fails at the end of the regression test iff errors were encountered.
  3. Regarding John's commit: added a case for my gcc version (4.2.3) to a…

    amiddelk committed Mar 19, 2008
    …dd flag -std=gnu99
    
    (hmm, from which gcc version is this flag available/needed? Then we can add one case to the configure script instead of 
    separate cases for each gcc version... )
Commits on Mar 18, 2008
  1. * Configure detects GCC version and adapts -std flag to that. If you …

    JohnVanSchie JohnVanSchie
    JohnVanSchie authored and JohnVanSchie committed Mar 18, 2008
    …get miscompiles from the RTS C compilation (and linking!) after this version, please look at the
    
    configure output for this variable
    * Reset an option so that GCC is not invoked when creating LLVM binaries with version 99
    * Created a seperate build dir for Boehm GC non threaded.
  2. Added an annotation to Grin alternatives, that it is either:

    JeroenFokker committed Mar 18, 2008
    - Normal
    - Ident: an alternative that just returns the scrutinee
    - Reenter: an alternative that returns a value that needs to be scrutinized again
    
    The Reenter annotation will be used in the forthcoming CaseHoist transformation,
    but as it is not yet used, this commit is semantically neutral.