Skip to content
  1. Mar 18, 2018
  2. Mar 08, 2018
  3. Jan 08, 2018
  4. Nov 29, 2017
  5. Nov 28, 2017
  6. Nov 27, 2017
  7. Nov 15, 2017
  8. Nov 04, 2017
  9. Nov 03, 2017
    • Jake Ehrlich's avatar
      Add feature to determine if host architecture is 64-bit in llvm-lit · 6fe84be9
      Jake Ehrlich authored
      I have a test that I'd like to add to llvm that demands using more than
      32-bits worth of address space. This test can't be run on 32-bit systems
      because they don't have enough address space. The host triple should be
      used to determine this instead of config.host_arch because on Debian
      systems config.host_arch is not correct. This change adds the
      "host-arch-is-64bit" feature to allow tests to restrict themselves to
      the 64-bit case.
      
      Differential Revision: https://reviews.llvm.org/D39465
      
      llvm-svn: 317281
      6fe84be9
  10. Oct 18, 2017
  11. Oct 06, 2017
    • Zachary Turner's avatar
      [lit] Improve tool substitution in lit. · 96b04b68
      Zachary Turner authored
      This addresses two sources of inconsistency in test configuration
      files.
      
      1. Substitution boundaries.  Previously you would specify a
         substitution, such as 'lli', and then additionally a set
         of characters that should fail to match before and after
         the tool.  This was used, for example, so that matches that
         are parts of full paths would not be replaced.  But not all
         tools did this, and those that did would often re-invent
         the set of characters themselves, leading to inconsistency.
         Now, every tool substitution defaults to using a sane set
         of reasonable defaults and you have to explicitly opt out
         of it.  This actually fixed a few latent bugs that were
         never being surfaced, but only on accident.
      
      2. There was no standard way for the system to decide how to
         locate a tool.  Sometimes you have an explicit path, sometimes
         we would search for it and build up a path ourselves, and
         sometimes we would build up a full command line.  Furthermore,
         there was no standardized way to handle missing tools.  Do we
         warn, fail, ignore, etc?  All of this is now encapsulated in
         the ToolSubst class.  You either specify an exact command to
         run, or an instance of FindTool('<tool-name>') and everything
         else just works.  Furthermore, you can specify an action to
         take if the tool cannot be resolved.
      
      Differential Revision: https://reviews.llvm.org/D38565
      
      llvm-svn: 315085
      96b04b68
    • Zachary Turner's avatar
      Run pyformat on lit code. · c9814480
      Zachary Turner authored
      llvm-svn: 315084
      c9814480
  12. Sep 22, 2017
  13. Sep 21, 2017
    • Zachary Turner's avatar
      Revert "[lit] Refactor out some more common lit configuration code." · 5f2fd9b7
      Zachary Turner authored
      This is breaking several bots.  I have enough information to
      investigate, so I'm reverting to green until I get it figured
      out.
      
      llvm-svn: 313922
      5f2fd9b7
    • Zachary Turner's avatar
      [lit] Refactor out some more common lit configuration code. · 0d36b657
      Zachary Turner authored
      debuginfo-tests has need to reuse a lot of common configuration
      from clang and lld, and in general it seems like all of the
      projects which are tightly coupled (e.g. lld, clang, llvm, lldb,
      etc) can benefit from knowing about one other.  For example,
      lldb needs to know various things about how to run clang in its
      test suite.  Since there's a lot of common substitutions and
      operations that need to be shared among projects, sinking this
      up into LLVM makes sense.
      
      In addition, this patch introduces a function add_tool_substitution
      which handles all the dirty intricacies of matching tool names
      which was previously copied around the various config files.  This
      is now a simple straightforward interface which is hard to mess
      up.
      
      Differential Revision: https://reviews.llvm.org/D37944
      
      llvm-svn: 313919
      0d36b657
    • Zachary Turner's avatar
      [lit] Make lit support config files with .py extension. · 957d6115
      Zachary Turner authored
      Many editors and Python-related diagnostics tools such as
      debuggers break or fail in mysterious ways when python files
      don't end in .py.  This is especially true on Windows, but
      still exists on other platforms.  I don't want to be too heavy
      handed in changing everything across the board, but I do want
      to at least *allow* lit configs to have .py extensions.  This
      patch makes the discovery process first look for a config file
      with a .py extension, and if one is not found, then looks for
      a config file using the old method.  So for existing users, there
      should be no functional change.
      
      Differential Revision: https://reviews.llvm.org/D37838
      
      llvm-svn: 313849
      957d6115
  14. Sep 19, 2017
  15. Sep 16, 2017
  16. Sep 15, 2017
  17. Sep 14, 2017
    • Zachary Turner's avatar
      [lit] Force site configs to be run before source-tree configs · a0e55b64
      Zachary Turner authored
      This patch simplifies LLVM's lit infrastructure by enforcing an ordering
      that a site config is always run before a source-tree config.
      
      A significant amount of the complexity from lit config files arises from
      the fact that inside of a source-tree config file, we don't yet know if
      the site config has been run.  However it is *always* required to run
      a site config first, because it passes various variables down through
      CMake that the main config depends on.  As a result, every config
      file has to do a bunch of magic to try to reverse-engineer the location
      of the site config file if they detect (heuristically) that the site
      config file has not yet been run.
      
      This patch solves the problem by emitting a mapping from source tree
      config file to binary tree site config file in llvm-lit.py. Then, during
      discovery when we find a config file, we check to see if we have a
      target mapping for it, and if so we use that instead.
      
      This mechanism is generic enough that it does not affect external users
      of lit. They will just not have a config mapping defined, and everything
      will work as normal.
      
      On the other hand, for us it allows us to make many simplifications:
      
      * We are guaranteed that a site config will be executed first
      * Inside of a main config, we no longer have to assume that attributes
        might not be present and use getattr everywhere.
      * We no longer have to pass parameters such as --param llvm_site_config=<path>
        on the command line.
      * It is future-proof, meaning you don't have to edit llvm-lit.in to add
        support for new projects.
      * All of the duplicated logic of trying various fallback mechanisms of
        finding a site config from the main config are now gone.
      
      One potentially noteworthy thing that was required to implement this
      change is that whereas the ninja check targets previously used the first
      method to spawn lit, they now use the second. In particular, you can no
      longer run lit.py against the source tree while specifying the various
      `foo_site_config=<path>` parameters.  Instead, you need to run
      llvm-lit.py.
      
      Differential Revision: https://reviews.llvm.org/D37756
      
      llvm-svn: 313270
      a0e55b64
  18. Sep 03, 2017
  19. Aug 01, 2017
  20. Jul 27, 2017
  21. Jul 26, 2017
  22. Jul 21, 2017
  23. Jul 20, 2017
  24. Jul 06, 2017
  25. Jun 12, 2017
    • Zachary Turner's avatar
      [llvm-pdbdump] Don't fail on PDBs with no ID stream. · 990d0c81
      Zachary Turner authored
      Older PDBs don't have this.  Its presence is detected by using
      the various "feature" flags that come at the end of the PDB
      Stream.  Detect this, and don't try to dump the ID stream if the
      features tells us it's not present.
      
      llvm-svn: 305235
      990d0c81
  26. Jun 07, 2017
  27. Jan 06, 2017
    • Michal Gorny's avatar
      [llvm-config] Print --system-libs only when static linking · d1b95488
      Michal Gorny authored
      Modify the --system-libs option in llvm-config to print system libs only
      when using static linking. The system libraries are irrelevant when
      linking to a shared library since the library has appropriate library
      dependencies embedded.
      
      Modify the --system-libs test appropriately to force static linking, and
      disable it if static libs are not available (i.e. BUILD_SHARED_LIBS is
      enabled).
      
      Differential Revision: https://reviews.llvm.org/D27805
      
      llvm-svn: 291285
      d1b95488
    • Michal Gorny's avatar
      [cmake] Canonicalize CMake booleans to 0/1 for lit interop · 9283f5b2
      Michal Gorny authored
      Canonicalize all CMake booleans to 0/1 before passing them to lit, to
      ensure that the Python side handles all of them consistently
      and correctly. 0/1 is a safe choice of values that trigger the same
      boolean interpretation in CMake, Python and C++.
      
      Furthermore, using them without quotes improves the chance Python will
      explicitly fail when an incorrect value (such as ON/OFF, TRUE/FALSE,
      YES/NO) is accidentally passed, rather than silently misinterpreting
      the value.
      
      This replaces a lot of different logics spread around lit site files,
      attempting to partially reproduce the boolean logic used in CMake
      and usually silently failing when an uncommon value was used instead.
      In fact, some of them were never working correctly since different
      values were assigned in CMake and checked in Python.
      
      The alternative solution could be to create a common parser for CMake
      booleans in lit and use it consistently throughout the site files.
      However, it does not seem like the best idea to create redundant
      implementation of the same logic and have to follow upstream if it ever
      is extended to handle more values.
      
      Differential Revision: https://reviews.llvm.org/D28294
      
      llvm-svn: 291284
      9283f5b2
  28. Dec 14, 2016
Loading