1. 09 May, 2022 34 commits
  2. 06 May, 2022 2 commits
  3. 29 Mar, 2022 2 commits
  4. 27 Mar, 2022 1 commit
  5. 24 Mar, 2022 1 commit
    • Hans-Nikolai Viessmann's avatar
      filter out invalid function ercs · cff1065b
      Hans-Nikolai Viessmann authored
      Through LivermoreLoop issue
      https://github.com/SacBase/LivermoreLoops/issues/5, it was discovered
      that EMRL can cause a race condition. Specifically, by design EMRL must
      find a suitable matching avis to use as part of a buffer-swap otherwise
      it **will not** cause a memory lift. In specific situations, the chosen
      candidate is not suitable as it has later references. For example:
      a = alloc()
      emr_lift = alloc ()
      x = loop (a, emr_lift)
      print (x)
      free (x)
      print (a)
      free (a)
      here `a` is referenced both by the loop and a call to `print`. The
      return value `x` can in this situation be an alias to either `a` **or**
      `emr_lift` depending on the return criteria of the loop. In the first
      case the second free errors out as `a`, via `x`, has already been freed.
      The latter case does not display this problem.
      This commit extends FRC (filter reuse candidates) to additionally check
      function ERCs, thereby resolving the above example, e.g. `emr_lift`
      would never materialise as `a` is r...