Skip to content
Snippets Groups Projects
  1. Aug 29, 2019
  2. Aug 18, 2017
    • erwan's avatar
      Do dep-loop checking before removing alias, otherwise some variables disappear ! · b13c9efb
      erwan authored
      And it is now done only by Lic2soc (L2lCheckLoops is not used anymore)
      
      Also, during this change, I was bitten again by the « "__" versus "::" in ident
      names » problem again.
      
      The core of this problem is due to the fact that I use LicDump both for
      (1) dealing with internal ident names
      (2) generating lustre files
      
      Because of (2), ident names may depend on the ec or the v4 option. hence, internal
      names were sometimes translated with "__" instead of "::".
      
      To (try to) fix that, I've added a boolean flag to all "to_string" functions that
      states whether the function is used for internal purposes, or for generating lustre
      files.
      
      It was quite a boring change, that triggered other problems, that I've fixed
      in this (too long) commit :
       - -esa should force -en, otherwise bad things happen (-esa is used for -ec anyway)
       - in -esa mode, #/nor inputs tuples of bool, not arrays
       - fix the list of predi op that returns a type different that its arg (SocPredef)
      b13c9efb
  3. Jun 22, 2017
  4. Nov 30, 2016
  5. Jan 14, 2016
  6. Feb 27, 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. Jun 27, 2014
  9. 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
  10. Apr 03, 2013
  11. Apr 02, 2013
  12. Mar 27, 2013
    • Erwan Jahier's avatar
      Rework the type of Lic expressions w.r.t. predef expressions. · 28f47082
      Erwan Jahier authored
      1) At the Lic level, there's no reason to distinguish betwenn node
      calls, and predef node calls. Indeed it makes things simpler and more
      homogeneous afterwards.
      
      2) int strings are only converted when necessary (constant evaluation).
      
      3) const are handled directly under Lic.by_pos_op instead of being under
         PREDEF_CALL, which make things easier and more logical.
      28f47082
  13. Feb 13, 2013
  14. Feb 06, 2013
  15. Feb 04, 2013
  16. Jan 31, 2013
  17. Dec 20, 2012
  18. Dec 13, 2012
    • Erwan Jahier's avatar
      Documentation et renommage des modules. · 65dfa567
      Erwan Jahier authored
      nb: les tests ne passent toujours bien sur.
      
      * Partie lus -> AST
      
      predef.ml -> srcPredef.ml
      syntaxTreeCore.ml -> astCore.ml
      syntaxTree.ml     -> astV6.ml
      syntaxTreeDump.mli-> astV6Dump.mli
      
      * Partie Ast -> Ast
      
      solveIdent.mli -> astRecognizePredef.mli
      syntaxTab.mli -> astTab.mli
      symbolTab.mli -> astTabSymbol.mli
      
      * Partie  AST -> lic (static evaluation)
      
      eff.ml  -> lic.ml
      getEff.mli -> ast2lic.mli
      lazyCompiler.mli -> licTab.mli
      builtIn.ml -> licMetaOp.ml
      predefEval*.ml -> licEval*.ml
      name.mli -> licName.mli
      
      * Partie Lic -> Lic
      
      uniqueOutput.mli      -> l2lCheckOutputs.mli
      structArrayExpand.mli -> l2lExpandArrays.mli
      nodesExpand.mli       -> l2lExpandNodes.mli
      doNoPoly.ml           -> l2lRmPoly.ml
      doAliasTypes.ml       -> l2lAliasType.ml
      doSplit.ml            -> l2lSplit.ml
      65dfa567
  19. Aug 10, 2012
    • Pascal Raymond's avatar
      gros menage : · fbd5b3bc
      Pascal Raymond authored
      - plus de macros prefefinies (e.g. FILL, BOOLRED etc...)
        (remplacé par la notion de BuiltIn)
      - split.ml adapté et remanié pour rentrer dans le moule
        source to source (voir DoSplit)
      fbd5b3bc
  20. Aug 03, 2012
  21. Jul 14, 2012
  22. Jul 12, 2012
  23. Jul 11, 2012
    • Pascal Raymond's avatar
      Debut de DoNoPoly, qui necessite une modif assez · 4e1418a0
      Pascal Raymond authored
      importante du mecanisme de UnifyType :
      - fait :
        * definition de Eff.poly_match
        * TypeVar type_var au lieu de Any/Overload
          avec type_var = Any | AnyNum
          (pour l'instant et pour longtemps ?!)
      - à faire :
        * revoir UnifyType pour qu'il rende un poly_match
        * stocker là où c'est nécessaire les poly_match
          calculés lors du type check
          (pour les CALL et peut-être les sargs ?)
      4e1418a0
  24. Jul 10, 2012
  25. Jul 06, 2012
  26. Jul 04, 2012
  27. Jun 01, 2011
    • Erwan Jahier's avatar
      Fix several bugs in static argument handling, in particular when · 65695130
      Erwan Jahier authored
      parametric nodes (or predef iterators) are nested.
      
      Before, nested iterators were handles as follows : a source-level
      (i.e., not compiled) alias node was created on-the-fly, and then
      compiled. But this way to proceed was buggy for static args coming
      from nested iterators or nested parametric nodes.
      
      Now, I rely on Inline.iterators to get rid of iterators (the iterator
      inlining is now recursive).
      65695130
  28. May 26, 2009
    • Erwan Jahier's avatar
      Lookup provided constants that are used in iterators, and issue a better error · 1184114d
      Erwan Jahier authored
      message if the constant is abstract ("an integer is expected whereas an int is
      provided" was not a great message...).
      1184114d
    • Erwan Jahier's avatar
      Attach the clock of Eff.val_exp to the val_exp itself, instead of · e7ef1b90
      Erwan Jahier authored
      maintaining (ugly and error-prone) hash tables.
      
      That change revealed an untriggered bug in EvalClock.check_args: it was wrong
      to add in subst the substitutions made of the parameters and the arguments (it
      is enough to unify the clocks of the pars and of the args). For instance, consider
      the node (in should_work/clock/clock.lus)
      
         node clock5(x :  bool; y:  bool when x; z: bool when y)
      
      and the call
      
        z2 = clock5(a, b when a, c when e);
      
      I was adding y/b in the subst, which was wrong.
      
      Other minor changes:
       - move const_to_val_eff from Eff to UnifyClock.
       - GetEff.translate_val_exp now returns a substitution, in order to be able
         to unify clock vars and propagate the resulting substitution.
      e7ef1b90
  29. Mar 04, 2009
  30. Feb 04, 2009
  31. Feb 03, 2009
  32. Dec 12, 2008
    • Erwan Jahier's avatar
      Break the recursivity is the Eff.node_exp representation (which fix nested iter. pbs). · 5c722d86
      Erwan Jahier authored
      In  short, the  rationale for  this change,  is that  it is  having a
      recursive node_exp is
      - useless,
      - too complicated,
      - wrong w.r.t. nesting iterator calls
      
      In long:
      
      - It is useless because, at the  Eff level, a node cannot call itself
        via one  of its  static arg (which  was where the  recursivity came
        from).
      
      - and indeed, it  is much simpler to consider that  a static arg node
        can only be ident.long that identifies a node alias.
      
        This  means of  course, that  nested iterators  have  been unnested
        before,   inventing  alias   node  names   along  the   way...  And
        polymorphism makes thing difficult once again.
      
      - But the  *big* problem  with a recursive  node_exp is that  it make
        things very  complicated to (lic)dump nested  iterator call because
        of polymorphism!   Actually, it  even makes thing  complicated when
        the iterators were themselves not nested in the source code !
      
        Some ugly  things were done in  LicDump to unnest  those calls when
        printing node_exp.   But this uglyness  have a price:  tricky code,
        and bugs! Indeed, nested iterators calls were wong for example when
        using  the --inline-iterator  mode (but  i would  not  be surprised
        that is wrong in other cases...).
      
      Hence,  LicDump  is  simpler,  but  of course  LazyCompiler  is  more
      complicated.  But  this  is  reasonable:  a  pretty-printer  is  not
      supposed to be complicated.
      5c722d86
  33. Nov 20, 2008
  34. Sep 15, 2008
  35. Aug 29, 2008
  36. Aug 28, 2008
    • Erwan Jahier's avatar
      untabify all files. · a0ee285c
      Erwan Jahier authored
      a0ee285c
    • Erwan Jahier's avatar
      Avoid the generation of polymorphic type variables when iterating on · 8d8dcbd0
      Erwan Jahier authored
      polymorphic operators.
      
      For instance, when LicDumping expression such as
      
          map<<map<<+,4>>,5>>
      
      an  alias  node was  created  for  "map<<+,4>>"  (to unnest  iterator
      calls). Fut this node is intrically overloaded (polymorphic). In this
      change, we  look at  the type this  innr call  is used to  generate a
      specialised (mono-morphic) version of the node alias.
      
      Note that we currently still generate type variable when users write
      
           node mymap = map<<+,4>>;
      8d8dcbd0
Loading