Skip to content
  1. Sep 16, 2017
  2. Sep 15, 2017
  3. 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
  4. Sep 03, 2017
  5. Aug 01, 2017
  6. Jul 27, 2017
  7. Jul 26, 2017
  8. Jul 21, 2017
  9. Jul 20, 2017
  10. Jul 06, 2017
  11. 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
  12. Jun 07, 2017
  13. 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
  14. Dec 14, 2016
  15. Dec 13, 2016
  16. Nov 29, 2016
  17. Nov 13, 2016
  18. Oct 26, 2016
    • Dean Michael Berris's avatar
      [XRay] Implement `llvm-xray extract`, start of the llvm-xray tool · c92bfb5a
      Dean Michael Berris authored
      Usage:
      
        llvm-xray extract <object file> [-o <filename or '-'>]
      
      The tool gets the XRay instrumentation map from an object file and turns
      it into YAML.  We first support ELF64 sleds on x86_64 binaries, with
      provision for supporting other supported platforms and formats later.
      
      This is the first of a many-part change to fully implement the
      `llvm-xray` tool.
      
      We also define a subcommand registration and dispatch mechanism to be
      used by other further subcommand implementations for llvm-xray.
      
      Diffusion Revision: https://reviews.llvm.org/D21987
      
      llvm-svn: 285165
      c92bfb5a
  19. Sep 30, 2016
    • Michal Gorny's avatar
      cmake: Install the OCaml libraries into a more correct path · b002f637
      Michal Gorny authored
      Add a OCAML_INSTALL_PATH variable that can be used to control
      the install path for OCaml libraries. The new variable defaults to
      ${OCAML_STDLIB_PATH}, i.e. the OCaml library path obtained from
      the OCaml compiler. Install libraries into "llvm" subdirectory.
      
      This fixes two issues:
      
      1. OCaml library directories differ between systems, and 'lib/ocaml' is
      incorrect e.g. on amd64 Gentoo where OCaml is installed
      in 'lib64/ocaml'. Therefore, obtain the library path from the OCaml
      compiler using 'ocamlc -where' (which is already used to set
      OCAML_STDLIB_PATH), which is the method used commonly in OCaml packages.
      
      2. The top-level directory is reserved for the standard library, and has
      precedence over local directory in search path. As a result, OCaml
      preferred the files installed along with previous LLVM version over the
      source tree when building a new version, resulting in two versions being
      mixed during the build. The new layout is used commonly by other OCaml
      packages, and findlib is able to find the LLVM libraries successfully.
      
      Bug: https://bugs.gentoo.org/559134
      Bug: https://bugs.gentoo.org/559624
      
      Differential Revision: https://reviews.llvm.org/D24354
      
      llvm-svn: 282895
      b002f637
  20. Sep 06, 2016
    • Rafael Espindola's avatar
      Add an c++ itanium demangler to llvm. · b940b66c
      Rafael Espindola authored
      This adds a copy of the demangler in libcxxabi.
      
      The code also has no dependencies on anything else in LLVM. To enforce
      that I added it as another library. That way a BUILD_SHARED_LIBS will
      fail if anyone adds an use of StringRef for example.
      
      The no llvm dependency combined with the fact that this has to build
      on linux, OS X and Windows required a few changes to the code. In
      particular:
      
          No constexpr.
          No alignas
      
      On OS X at least this library has only one global symbol:
      __ZN4llvm16itanium_demangleEPKcPcPmPi
      
      My current plan is:
      
          Commit something like this
          Change lld to use it
          Change lldb to use it as the fallback
      
          Add a few #ifdefs so that exactly the same file can be used in
          libcxxabi to export abi::__cxa_demangle.
      
      Once the fast demangler in lldb can handle any names this
      implementation can be replaced with it and we will have the one true
      demangler.
      
      llvm-svn: 280732
      b940b66c
  21. Aug 11, 2016
    • Teresa Johnson's avatar
      Restore "Resolution-based LTO API." · 9ba95f99
      Teresa Johnson authored
      This restores commit r278330, with fixes for a few bot failures:
      - Fix a late change I had made to the save temps output file that I
        missed due to existing files sitting on my disk
      - Fix a bunch of Windows bot failures with "ambiguous call to overloaded
        function" due to confusion between llvm::make_unique vs
        std::make_unique (preface the new make_unique calls with "llvm::")
      - Attempt to fix a modules bot failure by adding a missing include
        to LTO/Config.h.
      
      Original change:
      
      Resolution-based LTO API.
      
      Summary:
      This introduces a resolution-based LTO API. The main advantage of this API over
      existing APIs is that it allows the linker to supply a resolution for each
      symbol in each object, rather than the combined object as a whole. This will
      become increasingly important for use cases such as ThinLTO which require us
      to process symbol resolutions in a more complicated way than just adjusting
      linkage.
      
      Patch by Peter Collingbourne.
      
      Reviewers: rafael, tejohnson, mehdi_amini
      
      Subscribers: lhames, tejohnson, mehdi_amini, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D20268
      
      llvm-svn: 278338
      9ba95f99
    • Teresa Johnson's avatar
      Revert "Resolution-based LTO API." · cbf684e6
      Teresa Johnson authored
      This reverts commit r278330.
      
      I made a change to the save temps output that is causing issues with the
      bots. Didn't realize this because I had older output files sitting on
      disk in my test output directory.
      
      llvm-svn: 278331
      cbf684e6
    • Teresa Johnson's avatar
      Resolution-based LTO API. · f99573b3
      Teresa Johnson authored
      Summary:
      This introduces a resolution-based LTO API. The main advantage of this API over
      existing APIs is that it allows the linker to supply a resolution for each
      symbol in each object, rather than the combined object as a whole. This will
      become increasingly important for use cases such as ThinLTO which require us
      to process symbol resolutions in a more complicated way than just adjusting
      linkage.
      
      Patch by Peter Collingbourne.
      
      Reviewers: rafael, tejohnson, mehdi_amini
      
      Subscribers: lhames, tejohnson, mehdi_amini, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D20268
      
      Address review comments
      
      llvm-svn: 278330
      f99573b3
  22. Aug 10, 2016
  23. Aug 09, 2016
  24. Aug 05, 2016
  25. Jul 26, 2016
  26. Jul 12, 2016
  27. Jul 09, 2016
Loading