1. 01 Jul, 2021 1 commit
    • Daniel Kochmański's avatar
      cmp: major cleanup, separate passes · c8c59167
      Daniel Kochmański authored
      - separate passes
        The separation is not fine-grained but is a good starting point for further
        cleanup. This is a preliminary requirement for multiple backends.
      - use uninternet symbol in the package definition
      - remove "execute" permission from all files
      - remove a few unused functions
      - rearrange loaded files
      - less verbose compiler
        Don't print "End of pass 1." message. This doesn't provide any valuable
        information to the programmer.
  2. 01 Apr, 2021 1 commit
  3. 31 Mar, 2021 2 commits
    • Marius Gerbershagen's avatar
      cmp: fix evaluation order of sequence compiler macros · 62d1bb12
      Marius Gerbershagen authored
      Minor improvements to define-compiler-macro* (bail out if we detect
      :allow-other-keys arguments, define a named block such that
      return-from works as expected).
      Major refactor of sequence compiler-macros: use define-compiler-macro*
      which handles correct evaluation order, define new macro to handle
      common stuff for all sequences compiler-macros (e.g. inline policy
      checking, check that test and test-not are not both given). The main
      expansion logic in the compiler macros is unchanged although the code
      had to be slightly rewritten to accomodate the new macros.
      Remove the now superfluous seq-opt-parse-args function.
    • Marius Gerbershagen's avatar
      cmp: fix let bindings with initforms which are lists with QUOTE symbol as first element · dd5c372f
      Marius Gerbershagen authored
      (let ((x '(quote ...))) ...)
      We really have to quote the value in all cases, si::maybe-quote would
      strip away one level of quotation leaving only the equivalent
      of (let ((x (quote ...))) ...) which of course is incorrect.
  4. 29 Mar, 2021 1 commit
    • Marius Gerbershagen's avatar
      cmp: fix compiler macro for make-array · 23dde962
      Marius Gerbershagen authored
      The previous version had several problems: argument evaluation order
      was not handled correctly and the compiler-macro produced an error for
      valid code like
      (let ((etype :element-type))
        (make-array 10 etype 'character))
      Introduce a new generally applicable macro define-compiler-macro*
      which fixes these issues.
  5. 25 Mar, 2021 2 commits
    • Marius Gerbershagen's avatar
      cmp: fix bad warnings for type declarations inside locally · d54c1103
      Marius Gerbershagen authored
      Also search lexical environment for variables instead of only the
      list of variables being established by the current form (which is nil
      anyway in the case of locally; only let or multiple-value-bind
      statements create new variables).
      The declaration is still ignored, but fixing that would require a much
      larger refactor because currently variable types are associated to the
      variable itself. Thus the type can only be set for the full scope in
      which the variable is active and not locally in some subscope.
    • Marius Gerbershagen's avatar
      cmp: fix inlining of functions with &key and &aux arguments · 977e2fab
      Marius Gerbershagen authored
      &aux arguments come after &key ones.
      Fixes #633.
  6. 21 Mar, 2021 5 commits
  7. 20 Mar, 2021 3 commits
  8. 18 Mar, 2021 2 commits
    • Marius Gerbershagen's avatar
      cmp: fix evaluation order of multiple-value-setq with symbol-macrolet · b1ea49e1
      Marius Gerbershagen authored
      If a variable which is set with multiple-value-setq is bound to a
      symbol-macro, we need to handle the order of side-effects as in setf.
      Previously, we were first evaluating the value generating form
      of the multiple-value-setq before setting the places from the
      symbol-macro. The correct order is to first evaluate the forms from
      the symbol macro giving the places to set, then evaluate the value
      generating form from the multiple-value-setq and then set the places
      to the generated values.
    • Marius Gerbershagen's avatar
      cmp: fix (values (values)) · 80c53f0e
      Marius Gerbershagen authored
      This must return nil as a single value while we were returning no
  9. 11 Mar, 2021 1 commit
    • Marius Gerbershagen's avatar
      cmp: be more strict with symbol-macrolet · e466823a
      Marius Gerbershagen authored
      The ansi standard specifies that declaring symbols bound with
      symbol-macrolet to be special or binding symbols that are defined as
      global variables must signal a program-error. Previously, we simply
      ignored this issues.
      Also fix an issue with cmp-env-search-variables which would wrongly
      return variables when searching for symbol macros. This allows us to
      remove another check in symbol-macro-declaration-p.
  10. 04 Mar, 2021 2 commits
  11. 23 Feb, 2021 1 commit
  12. 14 Feb, 2021 2 commits
  13. 13 Feb, 2021 3 commits
  14. 16 Jan, 2021 1 commit
  15. 02 Jan, 2021 1 commit
  16. 29 Dec, 2020 1 commit
    • Marius Gerbershagen's avatar
      cmp: disable precompiled headers by default · ca6297dd
      Marius Gerbershagen authored
      Precompiled headers may not work in every scenario (for example
      compilation currently fails for the --with-cxx=yes configure option
      due to precompiled headers). If we disable them by default, we are on
      the safe side.
  17. 18 Sep, 2020 1 commit
  18. 02 Aug, 2020 1 commit
  19. 18 Jul, 2020 3 commits
  20. 15 Jun, 2020 2 commits
  21. 13 Jun, 2020 1 commit
  22. 28 May, 2020 1 commit
  23. 16 May, 2020 1 commit
    • Marius Gerbershagen's avatar
      cmp: add support for precompiled header files · 636cb4cf
      Marius Gerbershagen authored
      Improves compilation speed for single functions by about 40-50
      percent. Precompiled headers are specific to the compiler version and
      options in use. Due to this, we regenerate the header whenever the
      compiler configuration changes.
  24. 08 May, 2020 1 commit