1. 23 May, 2017 7 commits
    • Gwenaël Delaval's avatar
      Passes optimization · 7d6106d0
      Gwenaël Delaval authored
      Translation to tail-recursive versions of functions
      for handling of (very) big nodes.
      7d6106d0
    • Gwenaël Delaval's avatar
      Debug mode in _tags.in · b9870eef
      Gwenaël Delaval authored
      b9870eef
    • Gwenaël Delaval's avatar
      Tests addition · db5524df
      Gwenaël Delaval authored
      db5524df
    • Gwenaël Delaval's avatar
      User manual update · e4b0578b
      Gwenaël Delaval authored
      e4b0578b
    • Gwenaël Delaval's avatar
      Correction of unary minus priority · 1ead8a98
      Gwenaël Delaval authored
      To fix: see test minus_pre.ept:
      
      node main() = (o,p:int)
      let
        o = ~-1 -> pre o + 1;
        p = -1 fby p + 1
      tel
      1ead8a98
    • Gwenaël Delaval's avatar
      Clean-up of verbose output · 028c564a
      Gwenaël Delaval authored
      Leave only comments about compilation passes.
      Remove output of intermediate code on standard output: added
      generation of <module>.log containing all intermediate code.
      028c564a
    • Gwenaël Delaval's avatar
      Corrected bug in causality analysis · 63e09063
      Gwenaël Delaval authored
      The following node was accepted by the causality analysis:
      
      node m(x:int) = (y,z:int)
      let
          automaton
          state A
          do
            y = x + z;
            z = x + 1;
          until x = 3 then B
          state B
          do
            y = x + 3;
            z = y * x;
          until x = 10 then A
          end
      tel
      
      Each state is indeed causal, but once the automaton is translated to equations
      (which is the systematic way in the current version), the node is not
      schedulable.
      
      Correction: all "Or" of dependency constraints translated to "And".
      
      This constraint could be relaxed if code generation is done from Heptagon code,
      before translation to minils equations.
      63e09063
  2. 17 Mar, 2017 3 commits
  3. 16 Mar, 2017 3 commits
  4. 14 Mar, 2017 2 commits
  5. 13 Mar, 2017 1 commit
  6. 05 Mar, 2017 2 commits
    • Gwenaël Delaval's avatar
      Added SDC tests · b0d719dc
      Gwenaël Delaval authored
      b0d719dc
    • Gwenaël Delaval's avatar
      Modification of compile_sdc_run test script · 3a8a3e1f
      Gwenaël Delaval authored
      Test script compile_sdc_run: handling of different controller
      synthesis algorithms.
      In a test file, put a special comment :
      (* SDC algorithm *)
      on a single line, to activate synthesis algorithm "algorithm"
      for this test file.
      
      Examples:
      (* SDC sB *)
      (* SDC sS *)
      (* SDC sS:d={P:D} *)
      
      NB: assertions not yet handled.
      3a8a3e1f
  7. 04 Mar, 2017 1 commit
  8. 03 Mar, 2017 1 commit
  9. 23 Feb, 2017 1 commit
  10. 08 Feb, 2017 1 commit
  11. 06 Feb, 2017 5 commits
  12. 02 Jul, 2016 1 commit
  13. 25 Jun, 2016 2 commits
  14. 01 Jun, 2016 5 commits
  15. 26 Apr, 2016 1 commit
    • Timothy Bourke's avatar
      Add error for non-stateful decls. in pervasives · 0b7eba84
      Timothy Bourke authored
      Attempts to compile a pervasives.epi containing functions with multiple
      outputs or nodes now fail with an informative error message.
      
      * The following files demonstrate the problem:
      
        pervasives.epi:
          type bool = true | false
          external val node test(bool;bool) returns bool
      
        broken.ept:
          node broken() returns (y : bool)
          let
            y = test(false, false);
          tel
      
        Running:
          heptc -nopervasives pervasives.epi
          heptc -stdlib . -target c broken.ept
      
        Fails with:
      
          ---------
          Internal compiler error
          Passe : Static evaluation failed of the pervasive operator test
          ----------
          Fatal error: exception Misc.Assert_false
      
      * A different error occurs for nodes that return multiple outputs:
      
        pervasives.epi:
          type bool = true | false
          external val node test(bool;bool) returns (bool;bool)
      
        broken.ept:
          node broken() returns (y : bool)
          var l1 : bool;
          let
            (y,l1) = test(false, false);
          tel
      
        Running:
          heptc -nopervasives pervasives.epi
          heptc -stdlib . broken.ept
      
        Gives:
          Inconsistent clock annotation for exp test(false, false).
          File "broken.ept", line 4, characters 11-29:
          >  (y,l1) = test(false, false);
          >           ^^^^^^^^^^^^^^^^^^
          Clock Clash: this expression has clock 'a3,
          but is expected to have clock ('a4 * 'a5).
      
        The name "test" is parsed as an Eextvalue (rather than an Eapp), and there
        is an implicit assumption in compiler/minils/analysis/clocking.ml that such
        values have a simple clock.
      0b7eba84
  16. 30 Mar, 2016 1 commit
  17. 16 Feb, 2016 2 commits
  18. 18 Jan, 2016 1 commit