Skip to content
Snippets Groups Projects
  1. Mar 21, 2022
  2. Mar 13, 2020
    • erwan's avatar
      fix: try to do a better job with extern types. · 777c3f4f
      erwan authored
      In the -2c mode, in presence of extern types, I was defining them as int.
      The idea was to have something that compiles, and then to ask the user
      to redefine its extern types.
      
      Now I define extern types as string (char*).
      
      The rationale of this change is that before, the generated code was only
      working for int, which is pretty useless as an extern type.
      
      Have string by default is actually much more useful, for instance to use
      string in a Lustre program.
      
      Also, adapt to changes done in lutils, where the string type has ben added.
      (sha:8619aa285ca8322ab9, i.e., > lutils  1.49.10)
      6.101.16
      777c3f4f
  3. Aug 29, 2019
  4. Jul 12, 2017
  5. Jan 14, 2016
  6. Mar 18, 2015
    • Erwan Jahier's avatar
      lic2soc: try a few optimisation wrt Soc.gao scheduling and test opening. · 7d0da0b8
      Erwan Jahier authored
      Indeed, in order to sort Soc.gao, I currently process in 3 stages ;
      1. compute a total ordering of Actions.t according to the deps
      2. transform Actions.t into Soc.gao (List.map)
      3. factorize Soc.gao by looking at consecutive gao that have the same guard
      
      With this change, between steps 1 and 2, I reorder the list of actions
      so that group of independent actions are sorted according to their
      clock. The idea is of course to provide to step 3 more opportunities
      of factorization.
      
      The result is not very convincing yet.
      
      I've also tried to sort the actions wrt their clock before performing
      the toposort. Seems not too bad.
      
      I've kept the old behavior by default though.
      7d0da0b8
  7. 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
  8. 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
  9. Oct 06, 2014
  10. Aug 14, 2014
    • Erwan Jahier's avatar
      lic2soc: fix the translation of the current operator into SOC. · d3061085
      Erwan Jahier authored
      nb : the -exec mode was working because I did not use the generated soc,
      which was completely wrong.
      
      Note that to do that, I have modified the CURRENT variant of
      Lic.val_exp, to attach it the clock the current holds on. Indeed, the
      clock is mandatory to generated correct code...
      
      In an ideal world, this clock information may have explicitely been
      set by the user ("current(clk_of_X,X)" instead of "current(X)"), but
      for historical reason, it is not the case.
      
      Hence, this information is added as soon as it is available, namely,
      during clock checking.
      d3061085
  11. Jul 09, 2014
  12. May 21, 2014
  13. Jan 22, 2014
  14. Dec 11, 2013
    • Erwan Jahier's avatar
      Rewrite the topological sort of actions. · 612d8213
      Erwan Jahier authored
      The main difference is that I use a map instead of list to store
      visited nodes.  The compilation time of normal.ec is divided by 2!!
      (35s->15s)
      
      We do not really see the difference in the time of the non-reg tests
      since the execution of normal.ec still exceeds the 10s timeouts.
      612d8213
  15. May 21, 2013
  16. May 16, 2013
  17. Apr 17, 2013
  18. Apr 12, 2013
    • Erwan Jahier's avatar
      lus2lic is now working from ldbg and ltop. · fa71e77c
      Erwan Jahier authored
      As far as ldbg is concerned, it only traces the toplevel node, at
      call event.
      
      Note that I needed to rename quite a lot of modules to avoid name clashes
      between lus2lic.a and ltop.
      
      I've also merged the Verbose module with the one of Lutin so that
      they can be shared (there were sharing 95% already).
      fa71e77c
  19. Apr 08, 2013
    • Erwan Jahier's avatar
      Some work to prepare the merge with the lurette git repo. · 5316f18a
      Erwan Jahier authored
      I took the data type definition from SocExecValue to define a Data
      module that is a strict extension of the Lutin Data module.
      
      The duplicated Genlex module is now also identical to the one of
      Lurette.
      
      Quite boring, but simple thanks to the ocaml type system.
      5316f18a
  20. Apr 03, 2013
  21. Mar 21, 2013
  22. Mar 20, 2013
  23. Mar 19, 2013
  24. Feb 25, 2013
Loading