1. 27 May, 2019 2 kayıt (commit)
  2. 10 May, 2019 1 kayıt (commit)
  3. 12 Mar, 2019 1 kayıt (commit)
    • Luboš Luňák's avatar
      make (some) clang plugins share the same RecursiveASTVisitor · adb08e89
      Luboš Luňák yazdı
      Each plugin currently uses its own recursive AST run, which adds up.
      This patch adds another shared plugin which internally contains all
      (suitable) plugins and dispatches to them from the same one recursive
      run. This patch converts ~25 plugins and for starmath's accessibility.cxx
      reduces clang build time from 5.43s to 5.14s (and it's 4.39s without any
      plugins). As there are almost 50 more plugins to go, this can theoretically
      result in 4.56s final time, although probably not all plugins can be
      that easily converted, if at all.
      
      This mostly requires very little change in many plugins (see e.g.
      BadStatics), some even work without any functionality change (e.g.
      CharRightShift). Traverse* calls require some changes but are often
      not that difficult. WalkUp* probably can't be supported, although some
      plugins can(?) possibly be adjusted to not rely on them. And of course
      some plugins can be left as they are, using their own recursive run.
      See description at the top of generator.cxx for description of how to
      convert a plugin.
      
      The sharedvisitor.cxx source is generated based on scanning relevant
      plugin sources using a clang-based scanner/generator. The generated
      source is intentionally included instead of getting always generated,
      as the generating currently takes some time, so it should get updated
      in git whenever a change in a plugin triggers a source change in it.
      
      Change-Id: Ia0d2e3a5a464659503dbb4ed6c20b6cc89b4de01
      Reviewed-on: https://gerrit.libreoffice.org/68026
      Tested-by: Jenkins
      Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
      Reviewed-by: 's avatarLuboš Luňák <l.lunak@collabora.com>
      adb08e89
  4. 06 Ara, 2018 1 kayıt (commit)
    • Stephan Bergmann's avatar
      Remove broken rebuild of compilerplugins when CLANG_FULL_VERSION changed · efe28895
      Stephan Bergmann yazdı
      Not all compilerplugins/clang/*.cxx depend on config_clang.h (e.g., check.cxx
      doesn't), so this mechanism trying to rebuild compilerplugins once the
      underlying Clang installation changes doesn't work reliably in practice (just
      debugged through this with Miklos on IRC, and it wasn't the first time that
      `make distclean` fixed compilerplugins for somebody after they upgraded their
      Clang installation).  Removing the brittle mechanism shows that plugin.hxx
      doesn't actually depend on config_clang.h.
      
      (There's a second mechanism trying to rebuild compilerplugins once the
      underlying Clang installation changes, namely
      
      > # Clang most probably doesn't maintain binary compatibility, so rebuild when clang changes.
      > $(CLANGOUTDIR)/clang-timestamp: $(CLANGDIR)/bin/clang$(CLANG_EXE_EXT)
      >         $(QUIET)touch $@
      
      in compilerplugins/Makefile-clang.mk, but that doesn't work reliably either, as
      it depends on the newly installed clang executable being newer than our
      clang-timestamp file, which will be the case for self-built Clang installations,
      but not necessarily when updating e.g. a distro-provided Clang installation.)
      
      Change-Id: Ie576f14356b3f0e55444375095c86aa851404bf3
      Reviewed-on: https://gerrit.libreoffice.org/64623
      Tested-by: Jenkins
      Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
      efe28895
  5. 14 Agu, 2018 2 kayıt (commit)
  6. 10 Agu, 2018 1 kayıt (commit)
  7. 06 Tem, 2018 1 kayıt (commit)
    • Michael Stahl's avatar
      compilerplugins: try to make these work with icecream · ff002524
      Michael Stahl yazdı
      There are some problems here, this should fix one of them: the
      getFilename function returns "<stdin>" for spelling locations, because
      the input to clang is sort of preprocessed via -frewrite-includes if
      icecream is used and the file is built on a remote host (whereas it's
      apparently not preprocessed if the file is compiled locally by icecream).
      
      Using getPresumedLoc() uses the #line directives in the preprocessed
      input, which avoids the problem but is more expensive, so try to use it
      only when necessary.
      
      The getFileEntry(getMainFileID())->getName() pattern will also result
      in "<stdin>", but fortunately icecream passes -main-file-name,
      which oddly enough isn't used by the SourceManager's spelling locations,
      but is available separately via CodeGenOptions.
      
      This builds everything successfully with clang version 6.0.0:
      ICECC_PREFERRED_HOST=myremote make check gb_SUPPRESS_TESTS=t
      
      Change-Id: Ic121511683e5302d7b9d85186c8b9c4a5443fa1b
      Reviewed-on: https://gerrit.libreoffice.org/54993
      Tested-by: Jenkins
      Reviewed-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
      ff002524
  8. 23 Mar, 2018 1 kayıt (commit)
  9. 10 Şub, 2018 1 kayıt (commit)
  10. 21 Ara, 2017 1 kayıt (commit)
  11. 08 Ara, 2017 1 kayıt (commit)
    • Stephan Bergmann's avatar
      New --enable-compiler-plugins=debug mode · 32c31c03
      Stephan Bergmann yazdı
      ...to enable debug-only code in the plugins.  Some situations in the plugin code
      should never happen, yet must not by default report errors or trigger
      assertions, as some newly written LO code could trigger them nevertheless (in
      which case the plugin code will likely need to be adapted, to cater for these
      presumed-impossible situations).
      
      Such code can now be included in the plugins behind an if(isDebugMode()) guard,
      and can explicitly be enabled with --enable-compiler-plugins=debug.
      
      I deliberately made this a runtime rather than a compile time option (using
      some #ifdef guards in the plugin code, say), as it IMO keeps the code more
      readable, and also allows overridding COMPILER_PLUGINS_DEBUG=... on the make
      command line.
      
      Change-Id: Iea4f0c2783ad968a0de097fa710b3be1a248de73
      Reviewed-on: https://gerrit.libreoffice.org/46096Tested-by: 's avatarJenkins <ci@libreoffice.org>
      Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
      32c31c03
  12. 10 Kas, 2017 1 kayıt (commit)
  13. 07 Kas, 2017 2 kayıt (commit)
    • Stephan Bergmann's avatar
      Clean away temporarily added using declarations · b35bb38f
      Stephan Bergmann yazdı
      Change-Id: I26734c13515394162d88351a1cbe2b20abdac865
      b35bb38f
    • Stephan Bergmann's avatar
      Memoize ignoreLocation results · 07b87115
      Stephan Bergmann yazdı
      ...which, according to callgrind, reduces instruction fetch count spent on
      compiling sw/source/core/layout/paintfrm.cxx (randomly selected because it is
      rather large) by 5% from 41,992,064,226 to 39,861,989,855 (function main() in
      clang-6.0).
      
      This is best done by forwarding ignoreLocation calls from Plugin to the
      PluginHandler signleton, but due to the tight mutual coupling between plugin.hxx
      and pluginhandler.hxx that unfortunately required some reorganization (and two
      outstanding TODO clean-ups of temporarily introduced using declarations in
      plugin.hxx).
      
      Change-Id: Ia4270517d194def7db7ed80cb6894e9c473e9499
      07b87115
  14. 27 Eki, 2017 5 kayıt (commit)
  15. 02 Agu, 2017 1 kayıt (commit)
  16. 22 Tem, 2017 1 kayıt (commit)
  17. 20 Haz, 2017 2 kayıt (commit)
  18. 18 May, 2017 2 kayıt (commit)
  19. 25 Mar, 2017 1 kayıt (commit)
  20. 18 Eki, 2016 1 kayıt (commit)
  21. 27 Eyl, 2016 1 kayıt (commit)
  22. 28 Haz, 2016 1 kayıt (commit)
  23. 27 Nis, 2016 1 kayıt (commit)
  24. 26 Şub, 2016 1 kayıt (commit)
  25. 24 Haz, 2014 1 kayıt (commit)
  26. 27 Şub, 2014 1 kayıt (commit)
  27. 21 Şub, 2014 1 kayıt (commit)
  28. 20 Şub, 2014 1 kayıt (commit)
    • Stephan Bergmann's avatar
      Don't attempt to actually do double code removals · 5dcb634d
      Stephan Bergmann yazdı
      ...that easily works around the problem that in a rewriter rewriting types of
      VarDecls like
      
         T x, y;
      
      it would try to replace T twice.  Also, keep the list of removals globally with
      the (global) rewriter.
      
      Change-Id: I55b8d11986c2a29e09ff40132fd114a0cc48dc90
      5dcb634d
  29. 14 Şub, 2014 1 kayıt (commit)
  30. 27 Ock, 2014 1 kayıt (commit)
    • Stephan Bergmann's avatar
      Prepare dual-mode compiler plugin feature · 1f078fca
      Stephan Bergmann yazdı
      ...which can act as either a rewriter or a non-rewriter that emits warnings.
      
      Also added COMPILER_PLUGIN_WARNINGS_ONLY=X to demote warnings from plugin X from
      errors to warnings, even under --enable-werror.
      
      Change-Id: I05361936240a890515c6bba2459565417c1746b7
      1f078fca
  31. 22 Eyl, 2013 1 kayıt (commit)