platform/upstream/llvm.git
2 years ago[MLIR] Fix checks for native arch
Nikita Popov [Wed, 3 Aug 2022 13:28:49 +0000 (15:28 +0200)]
[MLIR] Fix checks for native arch

Using if (TARGET ${LLVM_NATIVE_ARCH}) only works if MLIR is built
together with LLVM, but not for standalone builds of MLIR. The
correct way to check this is
if (${LLVM_NATIVE_ARCH} IN_LIST LLVM_TARGETS_TO_BUILD), as the
LLVM build system exports LLVM_TARGETS_TO_BUILD.

To avoid repeating the same check many times, add a
MLIR_ENABLE_EXECUTION_ENGINE variable.

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

(cherry picked from commit 57a9bccec7dea036dbfa1a78f1ec5e73ecf7a33c)

2 years ago[ORC] Ensure that llvm_orc_registerJITLoaderGDBAllocAction is linked into tools.
Lang Hames [Thu, 4 Aug 2022 00:42:17 +0000 (17:42 -0700)]
[ORC] Ensure that llvm_orc_registerJITLoaderGDBAllocAction is linked into tools.

Add a reference to llvm_orc_registerJITLoaderGDBAllocAction from the
linkComponents function in the lli, llvm-jitlink, and llvm-jitlink-executor
tools. This ensures that llvm_orc_registerJITLoaderGDBAllocAction is not
dead-stripped in optimized builds, which may cause failures in these tools.

The llvm_orc_registerJITLoaderGDBAllocAction function was originally added with
MachO debugging support in 69be352a1961a, but that patch failed to update the
linkComponents functions.

http://llvm.org/PR56817
(cherry picked from commit b5f76d83ff8b57b2a6e4897beb388837803643da)

2 years ago[Orc] Disable use of shared memory on Android
Anubhab Ghosh [Sat, 30 Jul 2022 01:13:05 +0000 (06:43 +0530)]
[Orc] Disable use of shared memory on Android

shm_open and shm_unlink are not available on Android. This commit
disables SharedMemoryMapper on Android until a better solution is
available.

https://android.googlesource.com/platform/bionic/+/refs/heads/master/docs/status.md
https://github.com/llvm/llvm-project/issues/56812

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

(cherry picked from commit ac3cb4ecd0c6ed03c135945d27bbe197d80cba4e)

2 years ago[PowerPC] Change long to int64_t (which is always 64 bit or 8 bytes )
Umesh Kalappa [Wed, 27 Jul 2022 16:32:41 +0000 (09:32 -0700)]
[PowerPC] Change long to int64_t (which is always 64 bit or 8 bytes )

We can't guarantee the long always 64 bits like WINDOWS or LLP64 data
model (rare but we should consider).

So use int64_t from inttypes.h and safe in this case.

Fixes https://github.com/llvm/llvm-project/issues/55911 .

(cherry picked from commit f38ea84a9f32058f3c2813b6f29b840c59de118c)

2 years ago[C++20] [Modules] Handle initializer for Header Units
Chuanqi Xu [Tue, 2 Aug 2022 02:26:07 +0000 (10:26 +0800)]
[C++20] [Modules] Handle initializer for Header Units

Previously when we add module initializer, we forget to handle header
units. This results that we couldn't compile a Hello World Example with
Header Units. This patch tries to fix this.

Reviewed By: iains

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

(cherry picked from commit 6d10733d445506c02ebec9faa54658431857bb49)

2 years ago[C++20] [Modules] Merge same concept decls in global module fragment
Chuanqi Xu [Fri, 29 Jul 2022 02:44:30 +0000 (10:44 +0800)]
[C++20] [Modules] Merge same concept decls in global module fragment

According to [basic.def.odr]p14, the same redeclarations in different TU
but not attached to a named module are allowed. But we didn't take care
of concept decl for this condition. This patch tries to fix this
problem.

Reviewed By: ilya-biryukov

Differention Revision: https://reviews.llvm.org/D130614

(cherry picked from commit 4d9251bd780d20eebbcb124608b36a69787d5575)

2 years ago[Sema] Return primary merged decl as canonical for concepts
Ilya Biryukov [Wed, 27 Jul 2022 10:11:42 +0000 (12:11 +0200)]
[Sema] Return primary merged decl as canonical for concepts

Otherwise we get invalid results for ODR checks. See changed test for an
example: despite the fact that we merge the first concept, its **uses**
were considered different by `Profile`, leading to redefinition errors.

After this change, canonical decl for a concept can come from a
different module and may not be visible. This behavior looks suspicious,
but does not break any tests. We might want to add a mechanism to make
the canonical concept declaration visible if we find code that relies on
this invariant.

Additionally make sure we always merge with the canonical declaration to
avoid chains of merged concepts being reported as redefinitions. An
example was added to the test.

Also change the order of includes in the test. Importing a moduralized
header before its textual part causes the include guard macro to be
exported and the corresponding `#include` becomes a no-op.

Reviewed By: ChuanqiXu

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

(cherry picked from commit 42f87bb62d0719848842da60d2a8180b9e4d7c52)

2 years ago[Libomptarget] Deinitialize AMDGPU global state more intentionally
Joseph Huber [Tue, 2 Aug 2022 18:52:47 +0000 (14:52 -0400)]
[Libomptarget] Deinitialize AMDGPU global state more intentionally

A previous patch made the destruction of the HSA plugin more
deterministic. However, there were still other global values that are not
handled this way. When attempting to call a destructor kernel, the
device would have already been uninitialized and we could not find the
appropriate kernel to call. This is because they were stored in global
containers that had their destructors called already. Merges this global
state into the rest of the info state by putting those global values
inside of the global pointer already allocated and deallocated by the
constructor and destructor. This should allow the AMDGPU plugin to
correctly identify the destructors if we were to run them.

Reviewed By: JonChesterfield

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

(cherry picked from commit 2b7203a35972e98b8521f92d2791043dc539ae88)

2 years ago[openmp][amdgpu] Tear down amdgpu plugin accurately
Jon Chesterfield [Thu, 28 Jul 2022 19:00:01 +0000 (20:00 +0100)]
[openmp][amdgpu] Tear down amdgpu plugin accurately

Moves DeviceInfo global to heap to accurately control lifetime.
Moves calls from libomptarget to deinit_plugin later, plugins need to stay
alive until very shortly before libomptarget is destructed.

Leaving the deinit_plugin calls where initially inserted hits use after
free from the dynamic_module.c offloading test (verified with valgrind
 that the new location is sound with respect to this)

Reviewed By: tianshilei1992

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

(cherry picked from commit ed0f21811544320f829124efbb6a38ee12eb9155)

2 years ago[amdgpu][openmp][nfc] Restore stb_local on DeviceInfo symbol
Jon Chesterfield [Thu, 28 Jul 2022 15:49:36 +0000 (16:49 +0100)]
[amdgpu][openmp][nfc] Restore stb_local on DeviceInfo symbol

(cherry picked from commit c214cb6a689581c1b7f3b702b5da6d68de6eaf3f)

2 years ago[openmp][amdgpu] Move global DeviceInfo behind call syntax prior to using D130712
Jon Chesterfield [Thu, 28 Jul 2022 15:32:56 +0000 (16:32 +0100)]
[openmp][amdgpu] Move global DeviceInfo behind call syntax prior to using D130712

(cherry picked from commit 75aa52106452a1d15ca487af7b408a812012e133)

2 years ago[openmp] Introduce optional plugin init/deinit functions
Jon Chesterfield [Thu, 28 Jul 2022 15:21:36 +0000 (16:21 +0100)]
[openmp] Introduce optional plugin init/deinit functions

Will allow plugins to migrate away from using global variables to
manage lifetime, which will fix a segfault discovered in relation to D127432

Reviewed By: jhuber6

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

(cherry picked from commit 1f9d3974e444f95ddb600a6964ed14ded559e89c)

2 years ago[mlir] Fix Analysis/Presburger/Utils.cpp compilation with GCC 11
Rainer Orth [Wed, 3 Aug 2022 09:48:44 +0000 (11:48 +0200)]
[mlir] Fix Analysis/Presburger/Utils.cpp compilation with GCC 11

As reported in Issue #56850, mlir/lib/Analysis/Presburger/Utils.cpp doesn't
compile on Solaris 11.4/SPARC with the bundled GCC 11, as seen when testing
LLVM 15.0.0 rc1:

  /var/llvm/reltest/llvm-15.0.0-rc1/rc1/llvm-project/mlir/include/mlir/Analysis/Presburger/MPInt.h:260:47:
error: inlining failed in call to ‘always_inline’ ‘int64_t
mlir::presburger::int64FromMPInt(const mlir::presburger::MPInt&)’: indirect
function call with a yet undetermined callee

This patch hacks around this and allowed the build to finish.

Tested on `sparcv9-sun-solaris2.11`.

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

(cherry picked from commit 75747e6e11aed9ed75d27527e9262cedb2e3f887)

2 years ago[C++2b] [Modules] Handle HaveModules with C++2b
Chuanqi Xu [Mon, 1 Aug 2022 08:02:27 +0000 (16:02 +0800)]
[C++2b] [Modules] Handle HaveModules with C++2b

Closing https://github.com/llvm/llvm-project/issues/56803. The root
cause for this bug is that we lack a good method to detect the language
mdoe when parsing the command line. There is a FIXME too. Dut to we lack
a good solution now, keep the workaround.

(cherry picked from commit 834a878367f549c58313200ce2c3a0da1a29d842)

2 years agoRevert "[X86][DAGISel] Don't widen shuffle element with AVX512"
Florian Hahn [Thu, 28 Jul 2022 14:26:42 +0000 (15:26 +0100)]
Revert "[X86][DAGISel] Don't widen shuffle element with AVX512"

This reverts commit 5fb41342105700949c81f68aefc85d9c46e9a1a6.

This patch is causing crashes when building llvm-test-suite when
optimizing for CPUs with AVX512.

Reproducer crashing with llc:

    target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
    target triple = "x86_64-apple-macosx"

    define i32 @test(<32 x i32> %0) #0 {
    entry:
      %1 = mul <32 x i32> %0, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
      %2 = tail call i32 @llvm.vector.reduce.add.v32i32(<32 x i32> %1)
      ret i32 %2
    }

    ; Function Attrs: nocallback nofree nosync nounwind readnone willreturn
    declare i32 @llvm.vector.reduce.add.v32i32(<32 x i32>) #1

    attributes #0 = { "min-legal-vector-width"="0" "target-cpu"="skylake-avx512" }
    attributes #1 = { nocallback nofree nosync nounwind readnone willreturn }

(cherry picked from commit f912bab111add1275fcaf5f24e4d3654127972d0)

2 years ago[LLD] [MachO] Fix GCC build warnings
Martin Storsjö [Tue, 2 Aug 2022 07:29:01 +0000 (10:29 +0300)]
[LLD] [MachO] Fix GCC build warnings

This fixes the following warnings produced by GCC 9:

    ../tools/lld/MachO/Arch/ARM64.cpp: In member function ‘void {anonymous}::OptimizationHintContext::applyAdrpLdr(const lld::macho::OptimizationHint&)’:
    ../tools/lld/MachO/Arch/ARM64.cpp:448:18: warning: comparison of integer expressions of different signedness: ‘int64_t’ {aka ‘long int’} and ‘uint64_t’ {aka ‘long unsigned int’} [-Wsign-compare]
      448 |   if (ldr.offset != (rel1->referentVA & 0xfff))
          |       ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../tools/lld/MachO/UnwindInfoSection.cpp: In function ‘bool canFoldEncoding(compact_unwind_encoding_t)’:
    ../tools/lld/MachO/UnwindInfoSection.cpp:404:44: warning: comparison between ‘enum<unnamed>’ and ‘enum<unnamed>’ [-Wenum-compare]
      404 |   static_assert(UNWIND_X86_64_MODE_MASK == UNWIND_X86_MODE_MASK, "");
          |                                            ^~~~~~~~~~~~~~~~~~~~
    ../tools/lld/MachO/UnwindInfoSection.cpp:405:49: warning: comparison between ‘enum<unnamed>’ and ‘enum<unnamed>’ [-Wenum-compare]
      405 |   static_assert(UNWIND_X86_64_MODE_STACK_IND == UNWIND_X86_MODE_STACK_IND, "");
          |                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~

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

(cherry picked from commit 59c6f418fa3c5d6f5c8b75ebd817be8113de7931)

2 years ago[lldb] Silence a GCC warning about missing returns after a fully covered switch....
Martin Storsjö [Tue, 2 Aug 2022 07:28:12 +0000 (10:28 +0300)]
[lldb] Silence a GCC warning about missing returns after a fully covered switch. NFC.

(cherry picked from commit b7c5683fac3de2f3349d57b9e133ac53204b1148)

2 years ago[RISCV] Prevent infinite loop after D129980.
Craig Topper [Wed, 3 Aug 2022 22:19:03 +0000 (15:19 -0700)]
[RISCV] Prevent infinite loop after D129980.

D129980 converts (seteq (i64 (and X, 0xffffffff)), C1) into
(seteq (i64 (sext_inreg X, i32)), C1). If bit 31 of X is 0, it
will be turned back into an 'and' by SimplifyDemandedBits which
can cause an infinite loop.

To prevent this, check if bit 31 is 0 with computeKnownBits before
doing the transformation.

Fixes PR56905.

Reviewed By: reames

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

(cherry picked from commit 53d560b22f5b5d91ae5296f030e0ca75a5d2c625)

2 years ago[RISCV][NFC] Use defined variable instead some code.
wanglian [Tue, 2 Aug 2022 07:59:27 +0000 (15:59 +0800)]
[RISCV][NFC] Use defined variable instead some code.

Reviewed By: asb

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

(cherry picked from commit e208bab55fb11a69931a02dec8583a8ec5f94bbf)

2 years ago[libc++] Simplify how we define the linker script for libc++
Louis Dionne [Wed, 3 Aug 2022 00:30:28 +0000 (20:30 -0400)]
[libc++] Simplify how we define the linker script for libc++

Trying to be generic didn't work properly because we had to special-case
some interface libraries that we didn't want in the linker script. Instead,
only look at the ABI and the unwinding libraries explicitly.

This should solve the issue reported by @dim in [1].

[1]: https://discourse.llvm.org/t/15-0-0-rc1-has-been-tagged/64174/22

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

(cherry picked from commit b7fb8563974d83f9eb8191fdfbebfd04147a2cbd)

2 years ago[libc++] More documentation improvements about running tests
Louis Dionne [Wed, 3 Aug 2022 13:24:54 +0000 (09:24 -0400)]
[libc++] More documentation improvements about running tests

(cherry picked from commit 3d5d44269c933849068c073f356002940f85bce4)

2 years ago[libc++][ranges] Implement `ranges::{prev, next}_permutation`.
Nikolas Klauser [Wed, 3 Aug 2022 05:40:13 +0000 (22:40 -0700)]
[libc++][ranges] Implement `ranges::{prev, next}_permutation`.

Co-authored-by: Konstantin Varlamov <varconst@apple.com>
Differential Revision: https://reviews.llvm.org/D129859

(cherry picked from commit 68264b649461206dc095e672eacf8a003e0b9e49)

2 years ago[libc++][test] Replace `_LIBCPP_STD_VER` with `TEST_STD_VER`
cpplearner [Tue, 2 Aug 2022 10:38:17 +0000 (18:38 +0800)]
[libc++][test] Replace `_LIBCPP_STD_VER` with `TEST_STD_VER`

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

(cherry picked from commit 8a78b72289c5b1cb2ea2f0794d5bb9836b0895d8)

2 years ago[libc++][ranges] Implement `ranges::sample`.
Konstantin Varlamov [Wed, 3 Aug 2022 05:33:12 +0000 (22:33 -0700)]
[libc++][ranges] Implement `ranges::sample`.

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

(cherry picked from commit 6bdb64223473585f783572c9fbf0673b4b324a35)

2 years ago[libc++][ranges] Implement `ranges::replace_copy{,_if}`.
Nikolas Klauser [Wed, 3 Aug 2022 05:25:00 +0000 (22:25 -0700)]
[libc++][ranges] Implement `ranges::replace_copy{,_if}`.

Co-authored-by: Konstantin Varlamov <varconst@apple.com>
Differential Revision: https://reviews.llvm.org/D129806

(cherry picked from commit 93172c1c2b10066628c85c9ff78eb882222fb304)

2 years ago[libc++][ranges] Fix the return value of `{copy,move}_backward`.
Konstantin Varlamov [Wed, 3 Aug 2022 05:22:49 +0000 (22:22 -0700)]
[libc++][ranges] Fix the return value of `{copy,move}_backward`.

The return value for both of these algorithms is specified as
```
`{last, result - N}` for the overloads in namespace `ranges`.
```
But the current implementation instead returns `{first, result - N}`.

Also add both algorithms to the relevant "robust" tests.

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

(cherry picked from commit f537a01d3989d37aafc050a92c74e69d35381f8c)

2 years ago[libc++][ranges] Implement `ranges::remove_copy{, _if}`.
Nikolas Klauser [Wed, 3 Aug 2022 05:13:59 +0000 (22:13 -0700)]
[libc++][ranges] Implement `ranges::remove_copy{, _if}`.

Co-authored-by: Hui Xie <hui.xie1990@gmail.com>
Differential Revision: https://reviews.llvm.org/D130599

(cherry picked from commit 760d2b462c04537d119d76d3cc37d2cb53774a05)

2 years ago[libc++][test] Propagate host environment to libc++ test suite
Michał Górny [Wed, 3 Aug 2022 01:52:25 +0000 (21:52 -0400)]
[libc++][test] Propagate host environment to libc++ test suite

Propagate the complete host environment to the tests run via the new
testconfig. This ensures that all envvars needed e.g. for the compiler
to work correctly are present. This mimics the behavior explicitly
implemented in the legacy config.

https://github.com/llvm/llvm-project/issues/56816

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

(cherry picked from commit 39d4e169d35b59a39ad2fcfe1a568ba979079d83)

2 years ago[libc++][NFC] Don't rely on `<algorithm>` transitively including `<memory>` in tests
Igor Zhukov [Wed, 3 Aug 2022 00:45:28 +0000 (20:45 -0400)]
[libc++][NFC] Don't rely on `<algorithm>` transitively including `<memory>` in tests

Found by @cpplearner (https://github.com/microsoft/STL/pull/2976#discussion_r935440806)

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

(cherry picked from commit 495519e5f8232d144ed26e9c18dbcbac6a5f25eb)

2 years ago[libc++] Fix warning C4244 in std/numerics/rand/rand.dist/rand.dist.samp/rand.dist...
Igor Zhukov [Wed, 3 Aug 2022 00:42:05 +0000 (20:42 -0400)]
[libc++] Fix warning C4244 in std/numerics/rand/rand.dist/rand.dist.samp/rand.dist.samp.discrete/eval.pass.cpp

frederick-vs-ja noticed that https://github.com/microsoft/STL/pull/2976#issuecomment-1201926893
while we are working on updating LLVM submodule for MS STL:

    [...]\std\numerics\rand\rand.dist\rand.dist.samp\rand.dist.samp.discrete\eval.pass.cpp(33): error C2220: the following warning is treated as an error
    [...]\std\numerics\rand\rand.dist\rand.dist.samp\rand.dist.samp.discrete\eval.pass.cpp(287): note: see reference to function template instantiation 'void tests<__int64>(void)' being compiled
    [...]\std\numerics\rand\rand.dist\rand.dist.samp\rand.dist.samp.discrete\eval.pass.cpp(33): warning C4244: 'argument': conversion from '__int64' to 'const unsigned int', possible loss of data

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

(cherry picked from commit db0ac307c9df26d26a629552aec0a78f1b492dfd)

2 years ago[libc++] Update documentation on testing libc++
Louis Dionne [Tue, 2 Aug 2022 20:15:55 +0000 (16:15 -0400)]
[libc++] Update documentation on testing libc++

(cherry picked from commit ce6aff8d13894bdb6ec492858a66e8f8ab42c33b)

2 years ago[libcxx][test] Test code should inspect `TEST_STD_VER`, not `_LIBCPP_STD_VER`.
Casey Carter [Tue, 2 Aug 2022 19:03:25 +0000 (12:03 -0700)]
[libcxx][test] Test code should inspect `TEST_STD_VER`, not `_LIBCPP_STD_VER`.

(cherry picked from commit a1a30dc933b928a7a8277d5b5f7bd25670e68884)

2 years ago[libc++][format] Enables feature-test macro.
Mark de Wever [Fri, 29 Jul 2022 18:35:43 +0000 (20:35 +0200)]
[libc++][format] Enables feature-test macro.

The macro is only enabled when the Clang is used with
-fexperimental-library.

Reviewed By: ldionne, #libc

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

(cherry picked from commit 679169b7dd74c6f9161353f07e716ec25e80d1b8)

2 years ago[libc++][doc] Updates status documents.
Mark de Wever [Tue, 26 Jul 2022 17:37:06 +0000 (19:37 +0200)]
[libc++][doc] Updates status documents.

Adds the papers and LWG issues voted in during the July 2022 plenary.

Note the updating of the project based statuses is left to the active
contributors of these projects.

Reviewed By: #libc, huixie90, philnik

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

(cherry picked from commit 759efa763abf0b9299683e8cf3ec161c0c97f13d)

2 years ago[clang][llvm][doc] Add more information for the ABI change in FP16
Phoebe Wang [Thu, 4 Aug 2022 14:27:00 +0000 (22:27 +0800)]
[clang][llvm][doc] Add more information for the ABI change in FP16

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

2 years agoReleaseNotes: add lld/ELF notes
Fangrui Song [Wed, 3 Aug 2022 17:23:54 +0000 (10:23 -0700)]
ReleaseNotes: add lld/ELF notes

For the release/15.x branch.

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

2 years ago[lldb] [doc] Add release notes for a few noteworthy changes for Windows in 15.x
Martin Storsjö [Wed, 3 Aug 2022 09:08:32 +0000 (12:08 +0300)]
[lldb] [doc] Add release notes for a few noteworthy changes for Windows in 15.x

2 years ago[LLD] [doc] Add release notes for MinGW changes for 15.x
Martin Storsjö [Wed, 3 Aug 2022 09:07:48 +0000 (12:07 +0300)]
[LLD] [doc] Add release notes for MinGW changes for 15.x

2 years ago[CodeGen][inlineasm] assume the flag output of inline asm is boolean value
Yuanfang Chen [Fri, 29 Jul 2022 21:50:40 +0000 (14:50 -0700)]
[CodeGen][inlineasm] assume the flag output of inline asm is boolean value

GCC inline asm document says that
"... the general rule is that the output variable must be a scalar
integer, and the value is boolean."

Commit e5c37958f901cc9bec50624dbee85d40143e4bca lowers flag output of
inline asm on X86 with setcc, hence it is guaranteed that the flag
is of boolean value. Clang does not support ARM inline asm flag output
yet so nothing need to be worried about ARM.

See "Flag Output" section at
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#OutputOperands

Fixes https://github.com/llvm/llvm-project/issues/56568

Reviewed By: nikic

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

(cherry picked from commit 92c1bc61586c9d6c7bf0c36b1005fe00b4f48cc0)

2 years ago[libc++][ranges][NFC] Fix a few links on the Ranges status page.
Konstantin Varlamov [Tue, 2 Aug 2022 03:43:28 +0000 (20:43 -0700)]
[libc++][ranges][NFC] Fix a few links on the Ranges status page.

(cherry picked from commit c64c3d31c42869c258ad174d9a754279ef4aa07d)

2 years ago[libc++][ranges] Implement `std::ranges::partial_sort_copy`.
Konstantin Varlamov [Sat, 30 Jul 2022 09:42:05 +0000 (02:42 -0700)]
[libc++][ranges] Implement `std::ranges::partial_sort_copy`.

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

(cherry picked from commit db7d7959787ed68f037e2a6e5a70bb0d8c17ab27)

2 years ago[libc++] Fix reverse_iterator::iterator_concept
Nikolas Klauser [Sun, 24 Jul 2022 14:46:57 +0000 (16:46 +0200)]
[libc++] Fix reverse_iterator::iterator_concept

Fixes https://github.com/llvm/llvm-project/issues/56504

Reviewed By: ldionne, Mordante, huixie90, #libc

Spies: libcxx-commits, hewillk

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

(cherry picked from commit 7912b1f8e7c845a97411cbfc176db56861cdf116)

2 years ago[libc++] Rename __libcpp_assertion_handler to __libcpp_verbose_abort
Louis Dionne [Mon, 25 Jul 2022 17:43:47 +0000 (13:43 -0400)]
[libc++] Rename __libcpp_assertion_handler to __libcpp_verbose_abort

With the goal of reusing that handler to do other things besides
handling assertions (such as terminating when an exception is thrown
under -fno-exceptions), the name `__libcpp_assertion_handler` doesn't
really make sense anymore.

Furthermore, I didn't want to use the name `__libcpp_abort_handler`,
since that would give the impression that the handler is called
whenever `std::abort()` is called, which is not the case at all.

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

(cherry picked from commit 507125af3d0b953cb56bce2e5b8000249fe1ef53)

2 years ago[libc++][ranges] implement `std::ranges::unique{_copy}`
Hui Xie [Sat, 23 Jul 2022 00:44:25 +0000 (01:44 +0100)]
[libc++][ranges] implement `std::ranges::unique{_copy}`

implement `std::ranges::unique` and `std::ranges::unique_copy`

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

(cherry picked from commit 72f57e3a30d597346feec74cf626796b0055680f)

2 years ago[libc++] Properly log crashes with the assertion handler on older Androids
Louis Dionne [Thu, 28 Jul 2022 14:25:30 +0000 (10:25 -0400)]
[libc++] Properly log crashes with the assertion handler on older Androids

This reintroduces the same workaround we have in libc++abi for older
Androids based on https://reviews.llvm.org/D130507#inline-1255914.

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

(cherry picked from commit 1422a9689d7907a4561da7b906ec392840d9e635)

2 years ago[libc++] Make `_IterOps::__iter_move` more similar to `std::ranges::iter_move`.
Konstantin Varlamov [Thu, 28 Jul 2022 09:06:44 +0000 (02:06 -0700)]
[libc++] Make `_IterOps::__iter_move` more similar to `std::ranges::iter_move`.

Avoid relying on `iterator_traits` and instead deduce the return type of
dereferencing the iterator. Additionally, add a static check to reject
iterators with incorrect `iterator_traits` at compile time.

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

(cherry picked from commit b3afea1ce0bd3c9293edae67c1839318eecdd7bf)

2 years ago[libc++] Fix merge-conflict in .clang-format
Nikolas Klauser [Thu, 28 Jul 2022 08:32:02 +0000 (10:32 +0200)]
[libc++] Fix merge-conflict in .clang-format

(cherry picked from commit d5a3cc1d88d888e38633eb55e2afadb4cf788000)

2 years ago[libc++] Fix unwrapping ranges with different iterators and sentinels
Nikolas Klauser [Wed, 27 Jul 2022 21:52:45 +0000 (23:52 +0200)]
[libc++] Fix unwrapping ranges with different iterators and sentinels

Reviewed By: ldionne, huixie90, #libc

Spies: arichardson, sstefan1, libcxx-commits, mgorny

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

(cherry picked from commit e01b4fe956dd038fed71cf3c552d3383905d022a)

2 years ago[libc++][ranges] implement `std::ranges::inplace_merge`
Hui Xie [Wed, 27 Jul 2022 12:20:16 +0000 (13:20 +0100)]
[libc++][ranges] implement `std::ranges::inplace_merge`

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

(cherry picked from commit 8a61749f767e9af773051fc4f6dc99276fe189e3)

2 years ago[openmp] [test] Fix prepending config.library_dir to LD_LIBRARY_PATH
Michał Górny [Sat, 30 Jul 2022 18:53:02 +0000 (20:53 +0200)]
[openmp] [test] Fix prepending config.library_dir to LD_LIBRARY_PATH

Fix the LD_LIBRARY_PATH prepending order to make sure that
config.library_path ends up before any potentially-system directories
(e.g. config.hwloc_library_dir).  This makes sure that we are testing
against the just-built openmp libraries rather than the version that is
already installed.

Also rename the function to `prepend_*` to make it clearer what it
actually does.

https://github.com/llvm/llvm-project/issues/56821
Differential Revision: https://reviews.llvm.org/D130825

(cherry picked from commit eb4612ca239bffbf1612e0bce442043e716bb9f5)

2 years ago[libcxx] [test] Cover i386 & sparc64 in string.capacity test
Michał Górny [Sun, 31 Jul 2022 11:02:57 +0000 (13:02 +0200)]
[libcxx] [test] Cover i386 & sparc64 in string.capacity test

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

(cherry picked from commit 09cf95bd3ec24c77a854a0e0d9431a6d4ba460bc)

2 years agoworkflows: Fix typo from 2d3d0f50ceb938c155a7283e684f28190d24d6ba
Tom Stellard [Tue, 2 Aug 2022 09:02:15 +0000 (02:02 -0700)]
workflows: Fix typo from 2d3d0f50ceb938c155a7283e684f28190d24d6ba

(cherry picked from commit be3587ae9ab2289179eea0bf6b241d796524062a)

2 years ago[DAG] matchRotateSub - ensure the (pre-extended) shift amount is wide enough for...
Simon Pilgrim [Tue, 2 Aug 2022 10:38:47 +0000 (11:38 +0100)]
[DAG] matchRotateSub - ensure the (pre-extended) shift amount is wide enough for the amount mask (PR56859)

matchRotateSub is given shift amounts that will already have stripped any/zero-extend nodes from - so make sure those values are wide enough to take a mask.

(cherry picked from commit b651fdff79027064071db7c1d0250553e3e6a232)

2 years agoworkflows: Remove symbol versions from libclang.so in the libclang ABI test
Tom Stellard [Tue, 2 Aug 2022 09:02:15 +0000 (02:02 -0700)]
workflows: Remove symbol versions from libclang.so in the libclang ABI test

Now that the symbol version for libclang.so changes for each release again,
we need to remove the symbol versions from the shared library in order
for the ABI checker to be able to compare with an older version of the
shared library.

2 years ago[lld/mac] Add support for $ld$previous symbols with explicit symbol name
Nico Weber [Thu, 9 Jun 2022 16:13:31 +0000 (12:13 -0400)]
[lld/mac] Add support for $ld$previous symbols with explicit symbol name

A symbol `$ld$previous$/Another$1.2.3$1$3.0$14.0$_xxx$` means
"pretend symbol `_xxx` is in dylib `/Another` with version `1.2.3`
if the deployment target is between `3.0` and `14.0` and we're
targeting platform `1` (ie macOS)".

This means dylibs can now inject synthetic dylibs into the link, so
DylibFile needs to grow a 3rd constructor.

The only other interesting thing is that such an injected dylib
counts as a use of the original dylib. This patch gets this mostly
right (if _only_ `$ld$previous` symbols are used from a dylib,
we don't add a dep on the dylib itself, matching ld64), but one case
where we don't match ld64 yet is that ld64 even omits the original
dylib when linking it with `-needed-l`. Lld currently still adds a load
command for the original dylib in that case. (That's for a future
patch.)

Fixes #56074.

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

(cherry picked from commit 241f0e8b76d544a4a07a7f775b8421632539be19)

2 years ago[clang][Driver] Handle SPARC -mcpu=native etc.
Rainer Orth [Fri, 29 Jul 2022 07:27:09 +0000 (09:27 +0200)]
[clang][Driver] Handle SPARC -mcpu=native etc.

To make use of SPARC support in `getHostCPUName` as implemented by D130272
<https://reviews.llvm.org/D130272>, this patch uses it to handle
`-mcpu=native` and `-mtune=native`.  To match GCC, this patch rejects
`-march` instead of silently treating it as a no-op.

Tested on `sparcv9-sun-solaris2.11` and checking that those options are
passed on as `-target-cpu` resp. `-tune-cpu` as expected.

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

(cherry picked from commit bf3714884ae4b4a0301bc6af78e8b4deff12558b)

2 years ago[Driver] Use libatomic for 32-bit SPARC atomics support on Linux
Rainer Orth [Fri, 29 Jul 2022 07:19:38 +0000 (09:19 +0200)]
[Driver] Use libatomic for 32-bit SPARC atomics support on Linux

This is the Linux/sparc64 equivalent to D118021
<https://reviews.llvm.org/D118021>, necessary to provide an external
implementation of atomics on 32-bit SPARC which LLVM cannot inline even
with `-mcpu=v9` or an equivalent default.

Tested on `sparc64-unknown-linux-gnu`.

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

(cherry picked from commit 9b1897bbd0e3a6e9ef099e74c3d3ed35428c0460)

2 years ago[Support] Handle SPARC in sys::getHostCPUName
Rainer Orth [Wed, 27 Jul 2022 10:21:03 +0000 (12:21 +0200)]
[Support] Handle SPARC in sys::getHostCPUName

While working on D118450 <https://reviews.llvm.org/D118450>, I noticed that
`sys::getHostCPUName` lacks SPARC support.

This patch implements it.  The code is taken from/inspired by GCC's
`gcc/config/sparc/driver-sparc.cc`.  There's one caveat: since LLVM, unlike
GCC, doesn't support the SPARC-M7, -S7, and -M8 CPUs, I map all those to
the latest supported one (UltraSparc T4/`niagara4`).

Tested on `sparcv9-sun-solaris2.11` and `sparc64-unknown-linux-gnu` by
running `savcov --version` on

- Netra SPARC S7-2 (SPARC-S7, Solaris 11.4)
- SPARC T5-2 (SPARC T5, Solaris 11.4)
- SPARC Enterprise T5220 (UltraSPARC T2, Solaris 11.3)
- SPARC T5 (UltraSPARC T5, Debian sid)
- SPARC T3 (UltraSPARC T3, Debian sid)
- SPARC Enterprise T5220 (Debian sid)

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

(cherry picked from commit 979ddfff37d7e3bf258c2e5cbdc272fcb44c15f0)

2 years ago[compiler-rt][Sanitizer] Link sanitizer libs with -latomic on SPARC
Rainer Orth [Wed, 27 Jul 2022 10:30:18 +0000 (12:30 +0200)]
[compiler-rt][Sanitizer] Link sanitizer libs with -latomic on SPARC

When building on Linux/sparc64, the 32-bit `libclang_rt.asan.so`,
`libclang_rt.ubsan_minimal.so`, and `libclang_rt.ubsan_standalone.so`
failed to link with undefined references to 64-bit atomics, which `clang`
cannot inline.  Even D130569 <https://reviews.llvm.org/D130569> didn't help
because those libraries are linked with `-nodefaultlibs`, so dependent
libraries need to be added explicitly.

That's what this patch does.

Tested on `sparc64-unknown-linux-gnu` and `sparcv9-sun-solaris2.11`.

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

(cherry picked from commit 0b2d5fd48bc281af89e5e7bfa33a3054b826ed52)

2 years ago[IntelJITEvents] Add missing include.
Sunho Kim [Mon, 1 Aug 2022 23:44:18 +0000 (08:44 +0900)]
[IntelJITEvents] Add missing include.

Fixes compilation error.

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

(cherry picked from commit 5680ef870f9058c4b52a09a6aec2ddf384c5a558)

2 years ago[lld-macho] Release notes for 15.x
Jez Ng [Sun, 31 Jul 2022 17:24:58 +0000 (13:24 -0400)]
[lld-macho] Release notes for 15.x

From inspection of

  git log origin/release/14.x..origin/release/15.x -- lld/MachO

Reviewed By: #lld-macho, thakis

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

2 years agoRevert "[OpenMP] Remove noinline attributes in the device runtime"
Joseph Huber [Wed, 27 Jul 2022 15:04:25 +0000 (11:04 -0400)]
Revert "[OpenMP] Remove noinline attributes in the device runtime"

The behaviour of this patch is not great, but it has some side-effects
that are required for OpenMPOpt to work. The problem is that when we use
`-mlink-builtin-bitcode` we only import used symbols from the runtime.
Then OpenMPOpt will insert calls to symbols that were not previously
included. This patch removed this implicit behaviour as these functions
were kept alive by the `noinline` simply because it kept calls to them
in the module. This caused regression in some tests that relied on some
OpenMPOpt passes without using LTO. Reverting for the LLVM15 release but
will try to fix it more correctly on main.

This reverts commit d61d72dae604c3258e25c00622b1a85861450303.

Fixes #56752

(cherry picked from commit b08369f7f288b6efb0897953da42ed54e60cfc0b)

2 years ago[clang-tidy] Add CLANG_TIDY_CONFUSABLE_CHARS_GEN cmake cache variable to avoid buildi...
Martin Storsjö [Thu, 14 Jul 2022 19:46:04 +0000 (22:46 +0300)]
[clang-tidy] Add CLANG_TIDY_CONFUSABLE_CHARS_GEN cmake cache variable to avoid building when cross compiling

This is similar to the LLVM_TABLEGEN, CLANG_TABLEGEN and
CLANG_PSEUDO_GEN cmake cache variables.

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

(cherry picked from commit dc95d0c525636aed53a3b38258efa2dff4c83edf)

2 years ago[clang-tidy] Rename the make-confusable-table executable
Martin Storsjö [Thu, 14 Jul 2022 19:39:55 +0000 (22:39 +0300)]
[clang-tidy] Rename the make-confusable-table executable

Rename it to clang-tidy-confusable-chars-gen, to make its role
clearer in a wider context.

In cross builds, the caller might want to provide this tool
externally (to avoid needing to rebuild it in the cross build).
In such a case, having the tool properly namespaced makes its role
clearer.

This matches how the clang-pseudo-gen tool was renamed in
a43fef05d4fae32f02365c7b8fef2aa631d23628 / D126725.

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

(cherry picked from commit 18b4a8bcf3553174f770f09528c9bd01c8cebfe7)

2 years ago[ARM] Add target feature to force 32-bit atomics
Nikita Popov [Mon, 25 Jul 2022 13:12:10 +0000 (15:12 +0200)]
[ARM] Add target feature to force 32-bit atomics

This adds a +atomic-32 target feature, which instructs LLVM to assume
that lock-free 32-bit atomics are available for this target, even
if they usually wouldn't be.

If only atomic loads/stores are used, then this won't emit libcalls.
If atomic CAS is used, then the user is responsible for providing
any necessary __sync implementations (e.g. by masking interrupts
for single-core privileged use cases).

See https://reviews.llvm.org/D120026#3674333 for context on this
change. The tl;dr is that the thumbv6m target in Rust has
historically made atomic load/store only available, which is
incompatible with the change from D120026, which switched these to
use libatomic.

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

(cherry picked from commit b1b1086973d5be26f127540852ace59c5119e90a)

2 years ago[ELF][test] Fix compressed-debug-level.test with zlib-ng
Fangrui Song [Wed, 27 Jul 2022 18:18:19 +0000 (11:18 -0700)]
[ELF][test] Fix compressed-debug-level.test with zlib-ng

The test is brittle but it seems unnecessary to remove size check now.

Close #56222

(cherry picked from commit 876af563e73a3c1d6b49e13b4c1791a4208c8546)

2 years ago[AArch64][GlobalISel] Lower vector G_CTTZ.
Amara Emerson [Wed, 27 Jul 2022 07:02:59 +0000 (00:02 -0700)]
[AArch64][GlobalISel] Lower vector G_CTTZ.

Fixes issue 56398

(cherry picked from commit 9cc1dd209d20eda51710f302800899730b419381)

2 years ago[libc++] Implement P1004R2 (constexpr std::vector)
Nikolas Klauser [Wed, 27 Jul 2022 12:41:40 +0000 (14:41 +0200)]
[libc++] Implement P1004R2 (constexpr std::vector)

Reviewed By: #libc, ldionne

Spies: mgorny, var-const, ormris, philnik, miscco, hiraditya, steven_wu, jkorous, ldionne, christof, libcxx-commits

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

(cherry picked from commit 98d3d5b5da66e3cf7807c23a0294280bb796466b)

2 years ago[CMake][OpenMP] Remove wrong backslash
Sebastian Neubauer [Thu, 28 Jul 2022 12:34:59 +0000 (14:34 +0200)]
[CMake][OpenMP] Remove wrong backslash

outdir is defined in the line above, it will not exist in the install
command, so it should not be escaped.

(cherry picked from commit 50716ba2b337afe46ac256cc91673dc27356a776)

2 years agoworkflows: Use macos-11 runners
Tom Stellard [Wed, 27 Jul 2022 22:23:24 +0000 (15:23 -0700)]
workflows: Use macos-11 runners

macos-10.15 is deprecated and will be removed.

(cherry picked from commit d9e02a30b16ea65a7da87913c40af03e22c9571f)

2 years agoworkflows: Fix version check for X.0.0 releases
Tom Stellard [Wed, 27 Jul 2022 19:31:40 +0000 (12:31 -0700)]
workflows: Fix version check for X.0.0 releases

(cherry picked from commit 51ba98d058c24632b86b79af5a4ddf6c5ab4e614)

2 years agoDrop 'git' from version string
Tom Stellard [Wed, 27 Jul 2022 04:46:53 +0000 (21:46 -0700)]
Drop 'git' from version string

2 years agoInline function calls.
Weverything [Wed, 27 Jul 2022 04:02:31 +0000 (21:02 -0700)]
Inline function calls.

Fix unused variable in non-assert builds after
300fbf56f89aebbe2ef9ed490066bab23e5356d1

2 years ago[lld-macho] Fix -bitcode_process_mode arg type
Keith Smiley [Tue, 26 Jul 2022 23:18:17 +0000 (16:18 -0700)]
[lld-macho] Fix -bitcode_process_mode arg type

This is still undocumented and unsupported, but if someone passed it
before you would end up with a missing file error since this takes an
argument that wouldn't be handled.

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

2 years ago[libc++][ranges] Fix the CI.
Konstantin Varlamov [Wed, 27 Jul 2022 02:45:06 +0000 (19:45 -0700)]
[libc++][ranges] Fix the CI.

2 years ago[clang][AIX] Add option to control quadword lock free atomics ABI on AIX
Kai Luo [Wed, 27 Jul 2022 01:27:07 +0000 (01:27 +0000)]
[clang][AIX] Add option to control quadword lock free atomics ABI on AIX

We are supporting quadword lock free atomics on AIX. For the situation that users on AIX are using a libatomic that is lock-based for quadword types, we can't enable quadword lock free atomics by default on AIX in case user's new code and existing code accessing the same shared atomic quadword variable, we can't guarentee atomicity. So we need an option to enable quadword lock free atomics on AIX, thus we can build a quadword lock-free libatomic(also for advanced users considering atomic performance critical) for users to make the transition smooth.

Reviewed By: shchenz

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

2 years ago[ASan] Use stack safety analysis to optimize allocas instrumentation.
Kirill Stoimenov [Wed, 27 Jul 2022 01:29:31 +0000 (18:29 -0700)]
[ASan] Use stack safety analysis to optimize allocas instrumentation.

Added alloca optimization which was missed during the implemenation of D112098.

Reviewed By: vitalybuka

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

2 years ago[asan][test] Check for __asan_stack_malloc
Vitaly Buka [Wed, 27 Jul 2022 01:26:59 +0000 (18:26 -0700)]
[asan][test] Check for __asan_stack_malloc

2 years ago[amdgpu][nfc] Separate processUsedLDS into independent pieces, rename it
Jon Chesterfield [Wed, 27 Jul 2022 00:44:36 +0000 (01:44 +0100)]
[amdgpu][nfc] Separate processUsedLDS into independent pieces, rename it

2 years ago[Polly] Insert !dbg metadata for emitted CallInsts.
Michael Kruse [Wed, 27 Jul 2022 00:02:21 +0000 (19:02 -0500)]
[Polly] Insert !dbg metadata for emitted CallInsts.

The IR Verifier requires that every call instruction to an inlineable
function (among other things, its implementation must be visible in the
translation unit) must also have !dbg metadata attached to it. When
parallelizing, Polly emits calls to OpenMP runtime function out of thin
air, or at least not directly derived from a bounded list of previous
instruction. While we could search for instructions in the SCoP that has
some debug info attached to it, there is no guarantee that we find any.
Our solution is to generate a new DILocation that points to line 0 to
represent optimized code.

The OpenMP function implementation is usually not available in the
user's translation unit, but can become visible in an LTO build. For
the bug to appear, libomp must also be built with debug symbols.

IMHO, the IR verifier rule is too strict. Runtime functions can
also be inserted by other optimization passes, such as
LoopIdiomRecognize. When inserting a call to e.g. memset, it uses the
DebugLoc from a StoreInst from the unoptimized code. It is not
required to have !dbg metadata attached either.

Fixes #56692

2 years ago[amdgpu][nfc] Extract kernel annotation from processUsedLDS
Jon Chesterfield [Wed, 27 Jul 2022 00:29:32 +0000 (01:29 +0100)]
[amdgpu][nfc] Extract kernel annotation from processUsedLDS

2 years agoworkflows: Use sccache to speed up CI builds
Tom Stellard [Wed, 27 Jul 2022 00:24:18 +0000 (17:24 -0700)]
workflows: Use sccache to speed up CI builds

Reviewed By: asl

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

2 years ago[asan][test] Cleanup asan-stack-safety.ll test
Vitaly Buka [Wed, 27 Jul 2022 00:06:18 +0000 (17:06 -0700)]
[asan][test] Cleanup asan-stack-safety.ll test

2 years agoImport CI tests from the release branch
Tom Stellard [Tue, 26 Jul 2022 23:52:53 +0000 (16:52 -0700)]
Import CI tests from the release branch

The tests still only run on pushes or pull requests for the release
branch, but having it in the main branch means we don't have to copy
the tests every time we create a new release branch.

Reviewed By: asl

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

2 years ago[libc++][NFC] Add checks for lifetime issues in classic algorithms.
Konstantin Varlamov [Tue, 26 Jul 2022 23:15:07 +0000 (16:15 -0700)]
[libc++][NFC] Add checks for lifetime issues in classic algorithms.

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

2 years ago[libc++][ranges] Implement `ranges::is_heap{,_until}`.
Konstantin Varlamov [Tue, 26 Jul 2022 23:11:09 +0000 (16:11 -0700)]
[libc++][ranges] Implement `ranges::is_heap{,_until}`.

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

2 years agoAdd string conversion for InstructionControlFlowKind enum
Jakob Johnson [Tue, 26 Jul 2022 15:14:19 +0000 (08:14 -0700)]
Add string conversion for InstructionControlFlowKind enum

Refactor the string conversion of the `lldb::InstructionControlFlowKind` enum out
of `Instruction::Dump` to enable reuse of this logic by the
JSON TraceDumper (to be implemented in separate diff).

Will coordinate the landing of this change with D130320 since there will be a minor merge conflict between
these changes.

Test Plan:
Run unittests
```
> ninja check-lldb
[4/5] Running lldb unit test suite

Testing Time: 10.13s
  Passed: 1084
```

Verify '-k' flag's output
```
(lldb) thread trace dump instructions -k
thread #1: tid = 1375377
  libstdc++.so.6`std::ostream::flush() + 43
    7048: 0x00007ffff7b54dab    return      retq
    7047: 0x00007ffff7b54daa    other       popq   %rbx
    7046: 0x00007ffff7b54da7    other       movq   %rbx, %rax
    7045: 0x00007ffff7b54da5    cond jump   je     0x11adb0                  ; <+48>
    7044: 0x00007ffff7b54da2    other       cmpl   $-0x1, %eax
  libc.so.6`_IO_fflush + 249
    7043: 0x00007ffff7161729    return      retq
    7042: 0x00007ffff7161728    other       popq   %rbp
    7041: 0x00007ffff7161727    other       popq   %rbx
    7040: 0x00007ffff7161725    other       movl   %edx, %eax
    7039: 0x00007ffff7161721    other       addq   $0x8, %rsp
    7038: 0x00007ffff7161709    cond jump   je     0x87721                   ; <+241>
    7037: 0x00007ffff7161707    other       decl   (%rsi)
    7036: 0x00007ffff71616fe    cond jump   je     0x87707                   ; <+215>
    7035: 0x00007ffff71616f7    other       cmpl   $0x0, 0x33de92(%rip)      ; __libc_multiple_threads
    7034: 0x00007ffff71616ef    other       movq   $0x0, 0x8(%rsi)
    7033: 0x00007ffff71616ed    cond jump   jne    0x87721                   ; <+241>
    7032: 0x00007ffff71616e9    other       subl   $0x1, 0x4(%rsi)
    7031: 0x00007ffff71616e2    other       movq   0x88(%rbx), %rsi
    7030: 0x00007ffff71616e0    cond jump   jne    0x87721                   ; <+241>
    7029: 0x00007ffff71616da    other       testl  $0x8000, (%rbx)           ; imm = 0x8000
```

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

2 years ago[libc++][ranges] Make sure all range algorithms support differing projection types:
Konstantin Varlamov [Tue, 26 Jul 2022 22:51:37 +0000 (15:51 -0700)]
[libc++][ranges] Make sure all range algorithms support differing projection types:

- for all algorithms taking more than one range, add a `robust` test to
  check the case where the ranges have different value types and the
  given projections are different, with each projection applying to
  a different value type;
- fix `ranges::include` to apply the correct projection to each range.

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

2 years ago[libc++][ranges] Implement `ranges::generate{,_n}`.
Konstantin Varlamov [Tue, 26 Jul 2022 22:50:14 +0000 (15:50 -0700)]
[libc++][ranges] Implement `ranges::generate{,_n}`.

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

2 years agoRevert "[Support] Workaround compiler bug in MSVC"
Tom Stellard [Tue, 26 Jul 2022 22:49:35 +0000 (15:49 -0700)]
Revert "[Support] Workaround compiler bug in MSVC"

This reverts commit ec8f4fd68cd401a0ba41bb160d6acce670486fab.

This caused a failure in the mlir-windows bot.

2 years agoworkflows: Add GitHub action for automating some release tasks
Tom Stellard [Tue, 26 Jul 2022 22:36:48 +0000 (15:36 -0700)]
workflows: Add GitHub action for automating some release tasks

For each release tag, this action will create a new release on GitHub,
and for each -final tag, this action will build the documentation and
upload it to GitHub.

Reviewed By: hans, kwk

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

2 years agogithub: Automatically assign reviewers for backport requests
Tom Stellard [Tue, 26 Jul 2022 22:18:23 +0000 (15:18 -0700)]
github: Automatically assign reviewers for backport requests

When there is a backport request, the GitHub Action that handles the
backport will now automatically assign the issue to the user(s) who
approved the commit in Phabricator and create an issue comment asking
them to review the request.

Reviewed By: thieta, kwk

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

2 years ago[CodeGen] Fixed ambiguous symbol ExtAddrMode in case of NDEBUG and LLVM_ENABLE_DUMP
Dmitry Vassiliev [Tue, 26 Jul 2022 22:21:57 +0000 (00:21 +0200)]
[CodeGen] Fixed ambiguous symbol ExtAddrMode in case of NDEBUG and LLVM_ENABLE_DUMP

This patch fixes the following error with MSVC 16.9.2 in case of NDEBUG and LLVM_ENABLE_DUMP:
llvm/lib/CodeGen/CodeGenPrepare.cpp(2581): error C2872: 'ExtAddrMode': ambiguous symbol
llvm/include/llvm/CodeGen/TargetInstrInfo.h(86): note: could be 'llvm::ExtAddrMode'
llvm/lib/CodeGen/CodeGenPrepare.cpp(2447): note: or '`anonymous-namespace'::ExtAddrMode'
llvm/lib/CodeGen/CodeGenPrepare.cpp(2581): error C2039: 'print': is not a member of 'llvm::ExtAddrMode'

Reviewed By: aaron.ballman

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

2 years agogithub: Fix release automation /branch command with new repo
Tom Stellard [Tue, 26 Jul 2022 22:05:03 +0000 (15:05 -0700)]
github: Fix release automation /branch command with new repo

We started using the llvm/llvm-project-release-prs repo for
backport pull requests, but since this repo is not a fork of
llvm/llvm-project it will reject pull requests from other repos. In
order to fix this, when ever someone uses the /branch command to request
a branch be merged into the release branch, we first copy the branch to
the llvm-project-release-prs repo and then create the pull request.

Reviewed By: thieta

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

2 years ago[ELF] addDependentLibrary: fix a use-after-free bug in archiveName
Fangrui Song [Tue, 26 Jul 2022 21:52:06 +0000 (14:52 -0700)]
[ELF] addDependentLibrary: fix a use-after-free bug in archiveName

2 years ago[mlir] Refactor SubElementInterface replace support
River Riddle [Tue, 26 Jul 2022 20:22:19 +0000 (13:22 -0700)]
[mlir] Refactor SubElementInterface replace support

The current support was essentially the amount necessary
to support replacing SymbolRefAttrs, but suffers from various
deficiencies (both ergonomic and functional):

* Replace crashes if unsupported
 This makes it really hard to use safely, given that you don't know
 if you are going to crash or not when using it.

* Types aren't supported
This seems like a simple missed addition when the attribute replacement
support was originally added.

* The ergonomics are weird
It currently uses an index based replacement, which makes the implementations
quite clunky.

This commit refactors support to be a bit more ergonomic, and also
adds support for types in the process. This was also a great oppurtunity
to greatly simplify how replacement is done in the symbol table.

Fixes #56355

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

2 years ago[ELF] addLibrary: fix a use-after-free bug in archiveName
Fangrui Song [Tue, 26 Jul 2022 21:36:56 +0000 (14:36 -0700)]
[ELF] addLibrary: fix a use-after-free bug in archiveName

It manifests as an incorrect name in --print-archive-stats=.

2 years ago[ELF][test] Clean up print-archive-stats.s
Fangrui Song [Tue, 26 Jul 2022 21:36:09 +0000 (14:36 -0700)]
[ELF][test] Clean up print-archive-stats.s

2 years ago[RISCV] Pre-commit tests for D130146. NFC
Craig Topper [Tue, 26 Jul 2022 21:21:58 +0000 (14:21 -0700)]
[RISCV] Pre-commit tests for D130146. NFC

2 years ago[lldb/ClangExpressionParser] Fix compiler error due to `clang::CreateLLVMCodeGen...
Argyrios Kyrtzidis [Tue, 26 Jul 2022 21:05:22 +0000 (14:05 -0700)]
[lldb/ClangExpressionParser] Fix compiler error due to `clang::CreateLLVMCodeGen()` API change