1. 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
  2. 27 Kas, 2018 1 kayıt (commit)
  3. 23 Kas, 2018 1 kayıt (commit)
  4. 11 Eyl, 2018 1 kayıt (commit)
  5. 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
  6. 23 Mar, 2018 1 kayıt (commit)
  7. 16 Şub, 2018 1 kayıt (commit)
    • Noel Grandin's avatar
      loplugin:changetoolsgen various improvements · da2f9c20
      Noel Grandin yazdı
      - use AdjustFoo variants of methods on Rect/Size/Point
      - ignore double assignments
      - improve error messages
      - handle expressions that include macros by using getExpansionLoc
      - replace ++X() with X() + 1
      
      Change-Id: Ida6b06b2a92e9226168aff6b1b8031f5867687b4
      da2f9c20
  8. 12 Şub, 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. 16 Kas, 2017 2 kayıt (commit)
  13. 15 Kas, 2017 1 kayıt (commit)
  14. 14 Kas, 2017 1 kayıt (commit)
  15. 10 Kas, 2017 1 kayıt (commit)
  16. 07 Kas, 2017 1 kayıt (commit)
    • 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
  17. 27 Eki, 2017 4 kayıt (commit)
  18. 29 Eyl, 2017 1 kayıt (commit)
    • Stephan Bergmann's avatar
      Adapt loplugins to clang-cl's (implicit) -fdelayed-template-parsing · 419d664f
      Stephan Bergmann yazdı
      ...which is there for MSVC compatibility, but can cause getBody() to return null
      even when doesThisDeclarationHaveABody() is true.
      
      And in staticmethods.cxx we need to check doesThisDeclarationHaveABody() instead
      of hasBody():  For some class template member functions that are only defined
      outside their class definition, as is the case for
      OSequenceIterator::hasMoreElements in include/comphelper/sequence.hxx, hasBody()
      may be true for the original member function declaration inside the class (as
      there is some later definition that does have a body), but
      isLateTemplateParsed() is not (it is only true for the later definition).  So
      just skip any such declarations that are not definitions (which is sane anyway,
      as otherwise such functions could pointlessly be inspected multiple times).
      
      Change-Id: I724f652a8f060a931f8b5fc3e4feb5f307a922bf
      Reviewed-on: https://gerrit.libreoffice.org/42914Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
      Tested-by: 's avatarStephan Bergmann <sbergman@redhat.com>
      419d664f
  19. 22 Tem, 2017 1 kayıt (commit)
  20. 20 Haz, 2017 2 kayıt (commit)
  21. 18 May, 2017 2 kayıt (commit)
  22. 08 Mar, 2017 1 kayıt (commit)
  23. 04 Mar, 2017 1 kayıt (commit)
  24. 18 Ara, 2016 1 kayıt (commit)
  25. 19 Eki, 2016 1 kayıt (commit)
  26. 18 Eki, 2016 1 kayıt (commit)
  27. 27 Eyl, 2016 1 kayıt (commit)
  28. 22 Eyl, 2016 1 kayıt (commit)
    • Stephan Bergmann's avatar
      Check harder whether file is really under WORKDIR · 4c70a1a6
      Stephan Bergmann yazdı
      1977b57b "vcl: loplugin:override" had only hit
      in out-of-tree builds, where the #include in the generated
      workdir/CustomTarget/vcl/unx/kde4/tst_exclude_socket_notifiers.moc is an
      absolute path.  For in-tree builds, the generated #include line is
      "../../../../../vcl/unx/kde4/tst_exclude_socket_notifiers.hxx", so the returned
      getFileName() is .../workdir/../../../../../vcl/..., so was erroneously
      considered to be under WORKDIR.
      
      Change-Id: I9abef04b90ecb4921087a53ff196b833940085e5
      4c70a1a6
  29. 29 Haz, 2016 1 kayıt (commit)
  30. 28 Haz, 2016 1 kayıt (commit)
  31. 18 Nis, 2016 1 kayıt (commit)
  32. 19 Şub, 2016 1 kayıt (commit)
  33. 11 Ock, 2016 1 kayıt (commit)
  34. 02 Kas, 2015 1 kayıt (commit)