Skip to content
Snippets Groups Projects
  1. Feb 13, 2015
    • Erwan Jahier's avatar
      soc2c: fix a bug occuring when copying arrays with memcpy(). · fffd1850
      Erwan Jahier authored
      Indeed, in order to copy an array, I used to generate something like
      
         memcpy(out, in, sizeof(in));
      
      but if 'out' and 'in' are arrays, and if 'in' is an argument of a function,
      sizeof() considers it as a pointer, not an array !!!!
      
      note that if 'in' is a local var, sizeof(in) works fine.
      
      To fix it, I use the type of the dest (instead of the id) as argument of sizeof.
      
      nb : The pb never occured before, as in the heap mode only the ctx is
      passed a args of step functions.
      fffd1850
  2. Feb 12, 2015
  3. Feb 09, 2015
  4. Jan 27, 2015
  5. Jan 26, 2015
  6. Jan 22, 2015
  7. Jan 21, 2015
    • Erwan Jahier's avatar
      Check node declaration wrt safety and memory. · b29c70ff
      Erwan Jahier authored
        More precisely, a node that has memory ougth to be declared using
        "node", and using "function" otherwise.
      
        Moreover, a node that performs side-effects (i.e., if it calls an
        extern node that performs side effects) ougth to be declared as
        "unsafe".
      
        Safe/unsafe mismatches raise an error.
      
        Memory mismatches raise an error in one way (a "function" that uses
        memory), and a warning in the other way (a "node" that uses no
        memory).
      
      Also fix some errors done when transmitting the unsafe flag (well, it's
      the first time I use it!).
      b29c70ff
    • Erwan Jahier's avatar
      Fix a couple of bugs in the -oite option. · 6af23f41
      Erwan Jahier authored
      - predef Lustre op were declared as memoryful.
      - expr like "if true then ..." were badly translated
      - The clock and types of some expressions created by L2lOptimIte had
        a bad arity (in presence of tuples)
      - in order to perform the -oite optim, also check that each branch is safe.
      6af23f41
  8. Jan 20, 2015
  9. Jan 19, 2015
    • Erwan Jahier's avatar
      Add a --optimize-ite/-oite option that transforms if/then/else into merge when possible. · d783b03e
      Erwan Jahier authored
      Indeed it is possible when each branch of the ite updates no memory.
      This is done in the new L2lOptimIte module.
      
      For the time being, it does detect when the node has no memory. It
      only looks at the declaration: nodes have memory, and not functions.
      
      I should infer that information and raise warnings or errors if what
      I infer is not compatible with waht is declared (will come later).
      
      Also split ActionsDep into ActionsDep and Action.
      
      Also fix a bug in L2lsplit where deeply nested (>2) merge were not
      splitted.
      d783b03e
  10. Jan 14, 2015
    • Erwan Jahier's avatar
      Fix a bug when using -esa -en -2c on programs with assert · 79e85ff2
      Erwan Jahier authored
      Report by willie (cf mail of 8/10/2014 to get the file)
      
      file:/tmp/modes3x2.lus
      
      lus2lic -esa -en -2c /tmp/modes3x2.lus -n modes3x2
      
      But it gives an error of:
      Error. in file "/mnt/A/wsept/modes3x2_pre_orig_lus2lic_en_esa/modes3x2.lus",
      line 74, col 8 to 8, token '#': only one operator per equation is allowed
      (v04_0, v04_1).
      
      Which is the line:
      assert #(on_off, toggle);
      
      -----------------------------------------------------------------
      
      Actually, refuse programs that uses "#" or "nor" run with -esa and
      -2c|-exec
      
      That means that willie program is now rejected.
      
      Nevertheless, that change migth fix some other programs (that uses
      arrays, and used with -esa and -exec or -2c).
      79e85ff2
  11. Jan 07, 2015
    • Erwan Jahier's avatar
      Merge does not generate soc anymore ! · fcf73b92
      Erwan Jahier authored
      Also fix a bug in Lic2soc.make_e2a_elt where some deps and some
      actions were lost. Actually, this bug ought to be triggered only with
      nested calls. So this affects only programs executed via the
      -knc/-keep-nested-calls option. and -2c is not supposed to work in
      conjunction with -knc ! Hence this fix does not fix anything. But
      still it fixes potentially future code if I (or someone else) decide
      to handle nested calls in the lic one day.
      fcf73b92
  12. Dec 12, 2014
  13. Dec 08, 2014
  14. Nov 17, 2014
  15. Oct 09, 2014
  16. Oct 07, 2014
    • Erwan Jahier's avatar
      lic2soc: factorize some Soc.gao tests · 55efeade
      Erwan Jahier authored
      For the time being, we simple try to factorise out the test of
      consecutive gao that holds on the same clock.
      
      ps : also fix a pb (infinite loop in SortActions.topo_sort)
      introduced in the previous change that, for a strange reason
      (Makefile issue), was not catched by the test (almost all test were
      failing !!).
      
      pps : it actually seems to break quite a lot of test, but its my test
      script that wrong ! since version 527 (we are 534), the compiler used
      to perform the test in the tmp dirs is not upadated ! (well it is,
      but on the wrong machine...).
      
      I commit this change still as it introduces no more test failures.
      55efeade
  17. Oct 06, 2014
  18. Oct 03, 2014
  19. Oct 02, 2014
  20. Oct 01, 2014
  21. Sep 29, 2014
  22. Sep 09, 2014
  23. Sep 05, 2014
  24. Sep 04, 2014
  25. Sep 03, 2014
  26. Sep 02, 2014
    • Erwan Jahier's avatar
      -ei (and thus -ec): Fix a bug when translating condact. · 5ee67626
      Erwan Jahier authored
      The translation was faithfull to the comment, but the comment was wrong :
      in order to translate a condact, we need clocks (when) !
      
      node condact_toto(i0:bool; i1:int; i2:int) returns (o0:int) = Lustre::condact<<toto, 0>>;
      
      is now translated into:
      
      condact_toto(i0:bool; i1:int; i2:int) returns (o0:int)
      let
        o0 = if i0 then current(toto(i1 when i0, i2 when i0) ) else (0 fby o0);
      tel
      5ee67626
Loading