[all-commits] [llvm/llvm-project] 4794bd: [Driver] Multilib YAML parsing

Michael Platings via All-commits all-commits at lists.llvm.org
Tue Jun 13 22:47:26 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 4794bdab7aed92e699db29e031bfe71f4005326f
      https://github.com/llvm/llvm-project/commit/4794bdab7aed92e699db29e031bfe71f4005326f
  Author: Michael Platings <michael.platings at arm.com>
  Date:   2023-06-14 (Wed, 14 Jun 2023)

  Changed paths:
    M clang/include/clang/Driver/Multilib.h
    M clang/lib/Driver/Multilib.cpp
    M clang/unittests/Driver/MultilibTest.cpp

  Log Message:
  -----------
  [Driver] Multilib YAML parsing

The format includes a ClangMinimumVersion entry to avoid a potential
source of subtle errors if an older version of Clang were to be used
with a multilib.yaml that requires a newer Clang to work correctly.
This feature is comparable to CMake's cmake_minimum_required.

Reviewed By: peter.smith

Differential Revision: https://reviews.llvm.org/D142932


  Commit: a794ab92b41f00ba29b5852c34a510173638dcc0
      https://github.com/llvm/llvm-project/commit/a794ab92b41f00ba29b5852c34a510173638dcc0
  Author: Michael Platings <michael.platings at arm.com>
  Date:   2023-06-14 (Wed, 14 Jun 2023)

  Changed paths:
    M clang/include/clang/Driver/Options.td
    M clang/include/clang/Driver/ToolChain.h
    M clang/lib/Driver/Driver.cpp
    M clang/lib/Driver/ToolChain.cpp
    M clang/lib/Driver/ToolChains/Arch/ARM.cpp
    M clang/lib/Driver/ToolChains/Arch/ARM.h
    A clang/test/Driver/print-multi-selection-flags.c

  Log Message:
  -----------
  [Driver] Add -print-multi-flags-experimental option

This option causes the flags used for selecting multilibs to be printed.
This is an experimental feature that is documented in detail in D143587.

Differential Revision: https://reviews.llvm.org/D142933


  Commit: b4eebc8674e1f1dc1ef08fa7648ca494a119449d
      https://github.com/llvm/llvm-project/commit/b4eebc8674e1f1dc1ef08fa7648ca494a119449d
  Author: Michael Platings <michael.platings at arm.com>
  Date:   2023-06-14 (Wed, 14 Jun 2023)

  Changed paths:
    M clang/lib/Driver/ToolChain.cpp
    M clang/lib/Driver/ToolChains/Arch/ARM.cpp
    M clang/lib/Driver/ToolChains/Arch/ARM.h
    M clang/lib/Driver/ToolChains/BareMetal.cpp
    A clang/test/Driver/baremetal-multilib.yaml
    M clang/test/Driver/baremetal.cpp
    M clang/test/Driver/lit.local.cfg

  Log Message:
  -----------
  [Driver] Enable multilib.yaml in the BareMetal ToolChain

The default location for multilib.yaml is lib/clang-runtimes, without
any target-specific suffix. This will allow multilibs for different
architectures to share a common include directory.

To avoid breaking the arm-execute-only.c CHECK-NO-EXECUTE-ONLY-ASM
test, add a ForMultilib argument to getARMTargetFeatures.

Since the presence of multilib.yaml can change the exact location of a
library, relax the baremetal.cpp test.

Differential Revision: https://reviews.llvm.org/D142986


  Commit: edc1130c0ac0e52ac5e347127972313ba928fe9a
      https://github.com/llvm/llvm-project/commit/edc1130c0ac0e52ac5e347127972313ba928fe9a
  Author: Michael Platings <michael.platings at arm.com>
  Date:   2023-06-14 (Wed, 14 Jun 2023)

  Changed paths:
    M clang/include/clang/Driver/Multilib.h
    M clang/include/clang/Driver/ToolChain.h
    M clang/lib/Driver/Driver.cpp
    M clang/lib/Driver/Multilib.cpp
    M clang/lib/Driver/ToolChain.cpp
    M clang/lib/Driver/ToolChains/BareMetal.cpp
    M clang/lib/Driver/ToolChains/CSKYToolChain.cpp
    M clang/lib/Driver/ToolChains/Fuchsia.cpp
    M clang/lib/Driver/ToolChains/Gnu.cpp
    M clang/lib/Driver/ToolChains/Gnu.h
    M clang/lib/Driver/ToolChains/Hexagon.cpp
    M clang/lib/Driver/ToolChains/Hurd.cpp
    M clang/lib/Driver/ToolChains/Linux.cpp
    M clang/lib/Driver/ToolChains/MipsLinux.cpp
    M clang/lib/Driver/ToolChains/OHOS.cpp
    M clang/lib/Driver/ToolChains/RISCVToolchain.cpp
    M clang/test/Driver/fuchsia.cpp
    M clang/unittests/Driver/MultilibBuilderTest.cpp
    M clang/unittests/Driver/MultilibTest.cpp

  Log Message:
  -----------
  [Driver] Enable selecting multiple multilibs

This will enable layering multilibs on top of each other.
For example a multilib containing only a no-exceptions libc++ could be
layered on top of a multilib containing C libs. This avoids the need
to duplicate the C library for every libc++ variant.

This change doesn't expose the functionality externally, it only opens
the functionality up to be potentially used by ToolChain classes.

Differential Revision: https://reviews.llvm.org/D143059


  Commit: ab2c80bb125634816e39a1e4787a5a103cd03a74
      https://github.com/llvm/llvm-project/commit/ab2c80bb125634816e39a1e4787a5a103cd03a74
  Author: Michael Platings <michael.platings at arm.com>
  Date:   2023-06-14 (Wed, 14 Jun 2023)

  Changed paths:
    M clang/lib/Driver/ToolChains/BareMetal.cpp
    M clang/lib/Driver/ToolChains/BareMetal.h
    A clang/test/Driver/baremetal-multilib-layered.yaml

  Log Message:
  -----------
  [Driver] BareMetal ToolChain multilib layering

This enables layering baremetal multilibs on top of each other.
For example a multilib containing only a no-exceptions libc++ could be
layered on top of a multilib containing C libs. This avoids the need
to duplicate the C library for every libc++ variant.

Differential Revision: https://reviews.llvm.org/D143075


  Commit: a5aeba737694f56daacfbe8f78601cbd14f5d359
      https://github.com/llvm/llvm-project/commit/a5aeba737694f56daacfbe8f78601cbd14f5d359
  Author: Michael Platings <michael.platings at arm.com>
  Date:   2023-06-14 (Wed, 14 Jun 2023)

  Changed paths:
    A clang/docs/Multilib.rst
    M clang/docs/index.rst

  Log Message:
  -----------
  [Docs] Multilib design

Reviewed By: peter.smith, MaskRay

Differential Revision: https://reviews.llvm.org/D143587


Compare: https://github.com/llvm/llvm-project/compare/fba9fd1afa70...a5aeba737694


More information about the All-commits mailing list