platform/upstream/llvm.git
2 years ago[InstCombine] fold inc-of-signbit-splat to not+lshr
Sanjay Patel [Mon, 29 Aug 2022 12:13:38 +0000 (08:13 -0400)]
[InstCombine] fold inc-of-signbit-splat to not+lshr

(iN X s>> (N - 1)) + 1 --> (~X) u>> (N - 1)

https://alive2.llvm.org/ce/z/wzS474

2 years ago[InstCombine] add tests for increment-of-ashr; NFC
Sanjay Patel [Mon, 29 Aug 2022 11:51:36 +0000 (07:51 -0400)]
[InstCombine] add tests for increment-of-ashr; NFC

2 years agoApply clang-tidy fixes for performance-unnecessary-value-param in IRAttributes.cpp...
Mehdi Amini [Mon, 29 Aug 2022 10:06:17 +0000 (10:06 +0000)]
Apply clang-tidy fixes for performance-unnecessary-value-param in IRAttributes.cpp (NFC)

2 years agoApply clang-tidy fixes for llvm-else-after-return in Parser.cpp (NFC)
Mehdi Amini [Mon, 29 Aug 2022 10:04:06 +0000 (10:04 +0000)]
Apply clang-tidy fixes for llvm-else-after-return in Parser.cpp (NFC)

2 years agoExpose QualType::getUnqualifiedType in libclang
Luca Di Sera [Mon, 29 Aug 2022 12:16:18 +0000 (08:16 -0400)]
Expose QualType::getUnqualifiedType in libclang

The method is now wrapped by clang_getUnqualifiedType.

A declaration for clang_getUnqualifiedType was added to
clang-c/Index.h to expose it to user of the library.

An implementation for clang_getUnqualifiedType was introduced in
CXType.cpp that wraps the equivalent method of the underlying
QualType of a CXType.

An export symbol was added to libclang.map under the new version entry
LLVM_16.

A test was added to LibclangTest.cpp that tests the removal of
qualifiers for some CXTypes.

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

2 years ago[mlir][Vector] Fix unused variable warning in release builds. NFCI.
Benjamin Kramer [Mon, 29 Aug 2022 12:02:31 +0000 (14:02 +0200)]
[mlir][Vector] Fix unused variable warning in release builds. NFCI.

2 years ago[mlir] Delete MemRefType::Builder::setMemorySpace(unsigned)
Tres Popp [Tue, 23 Aug 2022 12:47:47 +0000 (14:47 +0200)]
[mlir] Delete MemRefType::Builder::setMemorySpace(unsigned)

This operation has been deprecated for a very long time now, so remove
it completely.

https://llvm.discourse.group/t/rfc-memref-memory-shape-as-attribute/2229

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

2 years ago[analyzer] Silence GCC warnings about unused variables. NFC.
Martin Storsjö [Mon, 29 Aug 2022 09:10:07 +0000 (12:10 +0300)]
[analyzer] Silence GCC warnings about unused variables. NFC.

Use `isa<T>()` instead of `Type *Var = dyn_cast<T>()`
when the result of the cast isn't used.

2 years ago[lldb] Fix warnings about unused variables when building without asserts. NFC.
Martin Storsjö [Mon, 29 Aug 2022 09:32:10 +0000 (12:32 +0300)]
[lldb] Fix warnings about unused variables when building without asserts. NFC.

2 years ago[mlir][Linalg] Move verification of block arguments back.
Adrian Kuegel [Mon, 29 Aug 2022 08:55:10 +0000 (10:55 +0200)]
[mlir][Linalg] Move verification of block arguments back.

DestinationStyleOpInterface should be possible to use for ops that don't
have regions. Therefore the check for block arguments should be done in
verifyStructedOpInterface.

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

2 years ago[LV] Add test where either a libfunc or intrinsic is chosen.
Florian Hahn [Mon, 29 Aug 2022 09:51:19 +0000 (10:51 +0100)]
[LV] Add test where either a libfunc or intrinsic is chosen.

In the newly added test either a libfunc (VF=2) or a intrinsic (VF=4)
can be chosen.

Test coverage for D132585.

2 years ago[docs] improve documentation for misc-const-correctness
Jonas Toth [Mon, 29 Aug 2022 09:19:16 +0000 (11:19 +0200)]
[docs] improve documentation for misc-const-correctness

Improve the documentation for 'misc-const-correctness' to:

- include better examples
- improve the english
- fix links to other checks that were broken due to the directory-layout changes
- mention the limitation that the check does not run on `C` code.

Addresses #56749, #56958

Reviewed By: njames93

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

2 years ago[LV] Remove unneeded getVectorIntrinsicIDForCall call (NFC).
Florian Hahn [Mon, 29 Aug 2022 09:19:46 +0000 (10:19 +0100)]
[LV] Remove unneeded getVectorIntrinsicIDForCall call (NFC).

Suggested as independent fix during the review of D132585.

2 years ago[Flang] Use find_program() to find clang-tblgen
Nikita Popov [Mon, 8 Aug 2022 10:40:49 +0000 (12:40 +0200)]
[Flang] Use find_program() to find clang-tblgen

There are two scenarios here:

1. Standalone flang build, where we use an installed clang-tblgen
   binary. We need to use find_package() to find it.
2. Combined build of clang and flang, where we want to use the
   path specified in CLANG_TABLEGEN_EXE during the clang build --
   however, this variable was previously not exported.

The new implementation matches what is done for mlir-tblgen.

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

2 years ago[clang] Make guard(nocf) attribute available only for Windows
Alvin Wong [Mon, 29 Aug 2022 08:27:27 +0000 (11:27 +0300)]
[clang] Make guard(nocf) attribute available only for Windows

Control Flow Guard is only supported on Windows target, therefore there
is no point to make it an accepted attribute for other targets.

Reviewed By: rnk, aaron.ballman

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

2 years ago[X86][BF16] Add type mangling for Windows
Phoebe Wang [Mon, 29 Aug 2022 07:39:04 +0000 (15:39 +0800)]
[X86][BF16] Add type mangling for Windows

Reviewed By: FreddyYe

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

2 years ago[mlir][Vector] Support 0-D vectors in ShuffleOp
Nicolas Vasilache [Fri, 26 Aug 2022 11:08:13 +0000 (04:08 -0700)]
[mlir][Vector] Support 0-D vectors in ShuffleOp

Co-authored-by: Michal Terepeta <michalt@google.com>
Reviewed-by: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D115744

2 years ago[Fuchsia][CMake] Disable LLVM plugin support
Petr Hosek [Mon, 29 Aug 2022 07:23:36 +0000 (07:23 +0000)]
[Fuchsia][CMake] Disable LLVM plugin support

We already disable plugin support in Clang, disable LLVM side as well
since we don't support plugins in Fuchsia toolchain.

2 years ago[mlir] Apply ClangTidy performance finding (NFC).
Adrian Kuegel [Mon, 29 Aug 2022 07:15:35 +0000 (09:15 +0200)]
[mlir] Apply ClangTidy performance finding (NFC).

2 years ago[llvm][ADT] Fix formatting for files relevant to `StringMap`.
Wei Yi Tee [Mon, 29 Aug 2022 06:55:54 +0000 (06:55 +0000)]
[llvm][ADT] Fix formatting for files relevant to `StringMap`.

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

2 years ago[docs] Expand lit documentation on response files
Petr Hosek [Mon, 29 Aug 2022 06:50:10 +0000 (06:50 +0000)]
[docs] Expand lit documentation on response files

This was requested in https://reviews.llvm.org/D132437.

2 years agoRevert "[llvm][ADT] Fix formatting for files relevant to `StringMap`."
Wei Yi Tee [Mon, 29 Aug 2022 06:43:48 +0000 (06:43 +0000)]
Revert "[llvm][ADT] Fix formatting for files relevant to `StringMap`."

This reverts commit d23df9c9e81e186c3218bd924976fbd646f3bad1.
Revert due to missing review link.

2 years ago[llvm][ADT] Fix formatting for files relevant to `StringMap`.
Wei Yi Tee [Fri, 26 Aug 2022 18:21:29 +0000 (18:21 +0000)]
[llvm][ADT] Fix formatting for files relevant to `StringMap`.

2 years agoUse StringRef::contains (NFC)
Kazu Hirata [Mon, 29 Aug 2022 06:29:02 +0000 (23:29 -0700)]
Use StringRef::contains (NFC)

2 years ago[llvm] Qualify auto in range-based for loops (NFC)
Kazu Hirata [Mon, 29 Aug 2022 06:29:00 +0000 (23:29 -0700)]
[llvm] Qualify auto in range-based for loops (NFC)

2 years ago[llvm] Use range-based for loops (NFC)
Kazu Hirata [Mon, 29 Aug 2022 06:28:58 +0000 (23:28 -0700)]
[llvm] Use range-based for loops (NFC)

2 years ago[Instrumentation] Use std::clamp (NFC)
Kazu Hirata [Mon, 29 Aug 2022 06:28:57 +0000 (23:28 -0700)]
[Instrumentation] Use std::clamp (NFC)

The use of std::clamp should be safe here.  MinRZ is at most 32, while
kMaxRZ is 1 << 18, so we have MinRZ <= kMaxRZ, avoiding the undefind
behavior of std::clamp.

2 years ago[tests] precommit tests for D132658
zhongyunde [Mon, 29 Aug 2022 06:17:06 +0000 (14:17 +0800)]
[tests] precommit tests for D132658

Reviewed By: bcl5980
Differential Revision: https://reviews.llvm.org/D132820

2 years ago[MC][test] Test FreeBSD after D131162
Fangrui Song [Mon, 29 Aug 2022 06:13:46 +0000 (23:13 -0700)]
[MC][test] Test FreeBSD after D131162

2 years ago[test][msan] Add debug info use-after-dtor tests
Vitaly Buka [Mon, 29 Aug 2022 06:05:23 +0000 (23:05 -0700)]
[test][msan] Add debug info use-after-dtor tests

2 years ago[test][msan] Simplify tests with --implicit-check-not
Vitaly Buka [Mon, 29 Aug 2022 05:42:27 +0000 (22:42 -0700)]
[test][msan] Simplify tests with --implicit-check-not

2 years ago[libc][Obvious] Re-enable math unit tests.
Siva Chandra Reddy [Mon, 29 Aug 2022 04:28:57 +0000 (04:28 +0000)]
[libc][Obvious] Re-enable math unit tests.

2 years ago[RISCV] Merge vmerge.vvm and unmasked intrinsic with VLMAX vector length.
Yeting Kuo [Sat, 13 Aug 2022 14:59:19 +0000 (22:59 +0800)]
[RISCV] Merge vmerge.vvm and unmasked intrinsic with VLMAX vector length.

The motivation of this patch is to lower the IR pattern
(vp.merge mask, (add x, y), false, vl) to
(PseudoVADD_VV_<LMUL>_MASK false, x, y, mask, vl).

Reviewed By: craig.topper

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

2 years ago[MLIR] Add mlir::TypedValue
Tyker [Wed, 17 Aug 2022 04:17:03 +0000 (21:17 -0700)]
[MLIR] Add mlir::TypedValue

mlir::TypedValue is a wrapper class for mlir::Values with a known type
getType will return the known type and all assignements will be checked

Also the tablegen Operation generator was adapted to use mlir::TypedValue
when appropriate

2 years ago[RISCV][NFC] Add cost model coverage for fp arithmetic instructions.
jacquesguan [Wed, 24 Aug 2022 07:42:10 +0000 (15:42 +0800)]
[RISCV][NFC] Add cost model coverage for fp arithmetic instructions.

This patch adds cost model coverage for fp arithmetic instructions. Some is not exact, I am working on a revision to implement that.

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

2 years ago[RISCV][NFC] Refactor fadd test to match the code.
jacquesguan [Fri, 26 Aug 2022 08:18:16 +0000 (16:18 +0800)]
[RISCV][NFC] Refactor fadd test to match the code.

Change fadd test case in D122563 to match the fold base case.

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

2 years ago[RISCV] Remove unused code
liqinweng [Mon, 29 Aug 2022 02:16:44 +0000 (10:16 +0800)]
[RISCV] Remove unused code

Reviewed By: benshi001

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

2 years ago[RISCV] Refactor for costs of integer min/max
liqinweng [Mon, 29 Aug 2022 02:10:35 +0000 (10:10 +0800)]
[RISCV] Refactor for costs of integer min/max

Reviewed By: reames

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

2 years ago[LoongArch] Combine add + shl to alsl.[w/d/wu]
gonglingqin [Mon, 29 Aug 2022 01:57:18 +0000 (09:57 +0800)]
[LoongArch] Combine add + shl to alsl.[w/d/wu]

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

2 years agoRevert "[llvm] Use llvm::is_contained (NFC)"
Kazu Hirata [Mon, 29 Aug 2022 01:52:49 +0000 (18:52 -0700)]
Revert "[llvm] Use llvm::is_contained (NFC)"

This reverts commit ebf574f59a80ca00e234eee0b047e5f0df99587d.

This patch seems to cause build failures on Windows.

2 years ago[NFC][clang-format] Fix typo
Sheng [Mon, 29 Aug 2022 01:32:25 +0000 (09:32 +0800)]
[NFC][clang-format] Fix typo

combinartorial
       v
combinatorial

2 years ago[Target] Qualify auto in range-based for loops (NFC)
Kazu Hirata [Mon, 29 Aug 2022 00:35:09 +0000 (17:35 -0700)]
[Target] Qualify auto in range-based for loops (NFC)

2 years ago[Support] Remove greatestCommonDivisor and GreatestCommonDivisor64 (NFC)
Kazu Hirata [Mon, 29 Aug 2022 00:35:08 +0000 (17:35 -0700)]
[Support] Remove greatestCommonDivisor and GreatestCommonDivisor64 (NFC)

This patch removes greatestCommonDivisor and GreatestCommonDivisor64
as I've migrated all the uses to std::gcd.

2 years ago[llvm] Use std::is_unsigned instead of std::numeric_limits (NFC)
Kazu Hirata [Mon, 29 Aug 2022 00:35:06 +0000 (17:35 -0700)]
[llvm] Use std::is_unsigned instead of std::numeric_limits (NFC)

2 years ago[llvm] Use range-based for loops (NFC)
Kazu Hirata [Mon, 29 Aug 2022 00:35:04 +0000 (17:35 -0700)]
[llvm] Use range-based for loops (NFC)

2 years ago[llvm] Use llvm::is_contained (NFC)
Kazu Hirata [Mon, 29 Aug 2022 00:35:03 +0000 (17:35 -0700)]
[llvm] Use llvm::is_contained (NFC)

2 years ago[RISC-V][HWASAN] Fold variable into assert
Benjamin Kramer [Sun, 28 Aug 2022 22:32:37 +0000 (00:32 +0200)]
[RISC-V][HWASAN] Fold variable into assert

2 years ago[clang-format] Fix a bug in removing braces for the LLVM style
owenca [Sun, 28 Aug 2022 05:22:50 +0000 (22:22 -0700)]
[clang-format] Fix a bug in removing braces for the LLVM style

When an l_brace is wrapped and the line above it ends with a
comment, the annotator adds ColumnLimit to the TotalLength of the
l_brace, so the actual column position of the l_brace must be
adjusted accordingly.

Fixes #57376.

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

2 years ago[SPIRV] Add tests to improve test coverage
Andrey Tretyakov [Wed, 24 Aug 2022 14:42:33 +0000 (17:42 +0300)]
[SPIRV] Add tests to improve test coverage

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

2 years ago[Driver][Linux] Pass --hash-style=gnu to ld unless special cased
Fangrui Song [Sun, 28 Aug 2022 19:13:01 +0000 (12:13 -0700)]
[Driver][Linux] Pass --hash-style=gnu to ld unless special cased

To align with many Linux distributions which configure GCC with
--enable-default-hash-style=gnu or binutils with --with-linker-hash-style=gnu.
ld.lld does not support changed default, so passing the option in the driver is
better.

Note: there was a bug that Debian specified both --hash-style=gnu and
--hash-style=both. Actually its GCC has defaulted to --hash-style=gnu since 2007.

2 years ago[MachO] Remove stale comments
Shoaib Meenai [Sun, 28 Aug 2022 18:27:40 +0000 (23:27 +0500)]
[MachO] Remove stale comments

https://reviews.llvm.org/D93267 implemented handling more than 127
compact unwind encodings, and https://reviews.llvm.org/D123435 and
https://reviews.llvm.org/D124561 implemented stripping redundant
__eh_frame entries.

2 years ago[Driver] Don't pass --enable-new-dtags to ld for Android/openSUSE
Fangrui Song [Sun, 28 Aug 2022 18:38:40 +0000 (11:38 -0700)]
[Driver] Don't pass --enable-new-dtags to ld for Android/openSUSE

This has been the default for a very long time.

2 years ago[RISC-V][HWASAN] Add support for lowering HWASAN intrinsic for RISC-V
Alexey Baturo [Sun, 31 Jul 2022 10:42:45 +0000 (13:42 +0300)]
[RISC-V][HWASAN] Add support for lowering HWASAN intrinsic for RISC-V

Reviewed By: vitalybuka

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

2 years ago[RISC-V][HWASAN] Save sp address at the start of tag mismatch routine
Alexey Baturo [Wed, 10 Aug 2022 05:28:27 +0000 (08:28 +0300)]
[RISC-V][HWASAN] Save sp address at the start of tag mismatch routine

Reviewed By: vitalybuka

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

2 years ago[RISC-V][HWASAN] Add runtime support for HWASAN for RISC-V
Alexey Baturo [Sun, 31 Jul 2022 10:38:36 +0000 (13:38 +0300)]
[RISC-V][HWASAN] Add runtime support for HWASAN for RISC-V

Reviewed By: vitalybuka

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

2 years agoUse std::gcd (NFC)
Kazu Hirata [Sun, 28 Aug 2022 17:41:53 +0000 (10:41 -0700)]
Use std::gcd (NFC)

To avoid changing semantics inadvertently, this patch casts arguments
to uint64_t before calling std::gcd.

2 years agoUse std::gcd (NFC)
Kazu Hirata [Sun, 28 Aug 2022 17:41:51 +0000 (10:41 -0700)]
Use std::gcd (NFC)

This patch replaces calls to greatestCommonDivisor with std::gcd where
two arguments are of the same type.  This means that
std::common_type_t of the argument type is the same as the argument
type.

We could drop calls to std::abs in some cases, but that's left for
another patch.

2 years ago[Target] Qualify auto in range-based for loops (NFC)
Kazu Hirata [Sun, 28 Aug 2022 17:41:50 +0000 (10:41 -0700)]
[Target] Qualify auto in range-based for loops (NFC)

2 years ago[llvm] Use llvm::find_if (NFC)
Kazu Hirata [Sun, 28 Aug 2022 17:41:48 +0000 (10:41 -0700)]
[llvm] Use llvm::find_if (NFC)

2 years ago[flang] Split up synchronization, event, and error stop stmt tests
Katherine Rasmussen [Thu, 18 Aug 2022 00:06:28 +0000 (17:06 -0700)]
[flang] Split up synchronization, event, and error stop stmt tests

Splitting up the tests for the synchronization statements,
event statements, and error stop statement allow for some of the
errors which are hidden by other errors, to be caught in the test.
This then reveals which invalid code does produce errors and which
does not produce errors.

2 years ago[RISC-V][HWASAN] Add tag mismatch routines for HWASAN required for RISC-V
Alexey Baturo [Sun, 31 Jul 2022 10:39:53 +0000 (13:39 +0300)]
[RISC-V][HWASAN] Add tag mismatch routines for HWASAN required for RISC-V

Reviewed By: vitalybuka

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

2 years ago[InstCombine] allow sext in fold of mask using signbit, part 2
Sanjay Patel [Sun, 28 Aug 2022 14:58:21 +0000 (10:58 -0400)]
[InstCombine] allow sext in fold of mask using signbit, part 2

https://alive2.llvm.org/ce/z/rcbZmx

Sibling tranform to 275aa24c0a51

This pattern is seen in the examples in issue #57381.

2 years ago[RISC-V][HWASAN] Add intrinsics required for HWASAN support for RISC-V
Alexey Baturo [Sun, 31 Jul 2022 10:39:08 +0000 (13:39 +0300)]
[RISC-V][HWASAN] Add intrinsics required for HWASAN support for RISC-V

Reviewed By: vitalybuka

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

2 years ago[InstCombine] Propagate the nuw for combine of add+mul
zhongyunde [Sun, 28 Aug 2022 09:46:37 +0000 (17:46 +0800)]
[InstCombine] Propagate the nuw for combine of add+mul

As the commit of D132658, make the 'nuw' change separately.
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D132777

2 years ago[VPlan] Use range check in VPHeaderPHIRecipe::classof (NFC).
Florian Hahn [Sun, 28 Aug 2022 14:53:35 +0000 (15:53 +0100)]
[VPlan] Use range check in VPHeaderPHIRecipe::classof (NFC).

This addresses a suggestion to simplify the check from D131989. This
also makes it easier to ensure that VPHeaderPHIRecipe::classof checks
for all header phi ids.

2 years ago[InstCombine] allow sext in fold of mask using signbit
Sanjay Patel [Sat, 27 Aug 2022 21:38:27 +0000 (17:38 -0400)]
[InstCombine] allow sext in fold of mask using signbit

~(iN X s>> (N-1)) & Y --> (X s< 0) ? 0 : Y -- with optional sext

https://alive2.llvm.org/ce/z/wFFnZT

2 years ago[InstCombine] add tests for inverted signbit splat mask; NFC
Sanjay Patel [Sat, 27 Aug 2022 17:34:13 +0000 (13:34 -0400)]
[InstCombine] add tests for inverted signbit splat mask; NFC

2 years ago[Orc] Use MapperJITLinkMemoryManager with SharedMemoryMapper in llvm-jitlink tool
Anubhab Ghosh [Sat, 20 Aug 2022 20:36:47 +0000 (02:06 +0530)]
[Orc] Use MapperJITLinkMemoryManager with SharedMemoryMapper in llvm-jitlink tool

MapperJITLinkMemoryManager combined with SharedMemoryMapper can be
used in place of EPCGenericJITLinkMemoryManager when running on top of
same physical memory. This commit enables it when --use-shared-memory is
passed.

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

2 years ago[bazel] Add missing dependency after 1b002d27683522e15d6ef3bccb74e751bbf56e74
Benjamin Kramer [Sun, 28 Aug 2022 07:56:17 +0000 (09:56 +0200)]
[bazel] Add missing dependency after 1b002d27683522e15d6ef3bccb74e751bbf56e74

2 years ago[Pipelines] Introduce DAE after ArgumentPromotion
Pavel Samolysov [Fri, 26 Aug 2022 12:06:21 +0000 (15:06 +0300)]
[Pipelines] Introduce DAE after ArgumentPromotion

The ArgumentPromotion pass uses Mem2Reg promotion at the end to cutting
down generated `alloca` instructions as well as meaningless `store`s and
this behavior can leave unused (dead) arguments. To eliminate the dead
arguments and therefore let the DeadCodeElimination remove becoming dead
inserted `GEP`s as well as `load`s and `cast`s in the callers, the
DeadArgumentElimination pass should be run after the ArgumentPromotion
one.

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

2 years ago[llvm-objdump] Add -dyld_info to llvm-otool
Daniel Bertalan [Wed, 17 Aug 2022 14:14:03 +0000 (16:14 +0200)]
[llvm-objdump] Add -dyld_info to llvm-otool

This option outputs the location, encoded value and target of chained
fixups, using the same format as `otool -dyld_info`.

This initial implementation only supports the DYLD_CHAINED_PTR_64 and
DYLD_CHAINED_PTR_64_OFFSET pointer encodings, which are used in x86_64
and arm64 userspace binaries.

When Apple's effort to upstream their chained fixups code continues,
we'll replace this code with the then-upstreamed code. But we need
something in the meantime for testing ld64.lld's chained fixups code.

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

2 years ago[NFC] Fix typo
Sheng [Sun, 28 Aug 2022 07:15:20 +0000 (15:15 +0800)]
[NFC] Fix typo

2 years ago[Transform] Use range-based for loops (NFC)
Kazu Hirata [Sun, 28 Aug 2022 06:54:32 +0000 (23:54 -0700)]
[Transform] Use range-based for loops (NFC)

2 years ago[Utils] Remove redundaunt declarations (NFC)
Kazu Hirata [Sun, 28 Aug 2022 06:54:31 +0000 (23:54 -0700)]
[Utils] Remove redundaunt declarations (NFC)

Identified with readability-redundant-declaration.

2 years ago[llvm] Use std::gcd (NFC)
Kazu Hirata [Sun, 28 Aug 2022 06:54:29 +0000 (23:54 -0700)]
[llvm] Use std::gcd (NFC)

This patch replaces calls to greatestCommonDivisor with std::gcd where
both arguments are known to be of unsigned.  This means that
std::common_type_t of the two argument types should just be the wider
one of the two.

2 years ago[flang] Use std::clamp (NFC)
Kazu Hirata [Sun, 28 Aug 2022 06:54:27 +0000 (23:54 -0700)]
[flang] Use std::clamp (NFC)

The use of std::clamp here is safe because the definition of
largestLDKind gurantees that 8 <= largestLDKind.

2 years ago[BOLT][NFC] Use llvm::any_of
Amir Ayupov [Fri, 19 Aug 2022 22:57:24 +0000 (15:57 -0700)]
[BOLT][NFC] Use llvm::any_of

Replace the imperative pattern of the following kind
```
bool IsTrue = false;
for (Element : Range) {
  if (Condition(Element)) {
    IsTrue = true;
    break;
  }
}
```
with functional style `llvm::any_of`:
```
bool IsTrue = llvm::any_of(Range, [&](Element) {
  return Condition(Element);
});
```

Reviewed By: rafauler

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

2 years ago[Support] Use std::clamp (NFC)
Kazu Hirata [Sun, 28 Aug 2022 04:21:08 +0000 (21:21 -0700)]
[Support] Use std::clamp (NFC)

We can safely use std::clamp here because the call to
report_size_overflow a few lines above guarantees MinSize <= MaxSize.

2 years ago[lldb] Use nullptr instead of NULL (NFC)
Kazu Hirata [Sun, 28 Aug 2022 04:21:07 +0000 (21:21 -0700)]
[lldb] Use nullptr instead of NULL (NFC)

Identified with modernize-use-nullptr.

2 years ago[lldb] Remove a redundaunt return statement (NFC)
Kazu Hirata [Sun, 28 Aug 2022 04:21:05 +0000 (21:21 -0700)]
[lldb] Remove a redundaunt return statement (NFC)

Identified with readability-redundant-control-flow.

2 years ago[flang] Simplify string comparisons (NFC)
Kazu Hirata [Sun, 28 Aug 2022 04:21:04 +0000 (21:21 -0700)]
[flang] Simplify string comparisons (NFC)

Identified with readability-string-compare.

2 years ago[Transforms] Qualify auto in range-based for loops (NFC)
Kazu Hirata [Sun, 28 Aug 2022 04:21:02 +0000 (21:21 -0700)]
[Transforms] Qualify auto in range-based for loops (NFC)

Identified with readability-qualified-auto.

2 years agoUse llvm::is_contained (NFC)
Kazu Hirata [Sun, 28 Aug 2022 04:21:00 +0000 (21:21 -0700)]
Use llvm::is_contained (NFC)

2 years agoUse std::gcd (NFC)
Kazu Hirata [Sun, 28 Aug 2022 04:20:58 +0000 (21:20 -0700)]
Use std::gcd (NFC)

This patch replaces calls to GreatestCommonDivisor64 with std::gcd
where both arguments are known to be of unsigned types no larger than
64 bits in size.

2 years agoFold memref.expand_shape and memref.collapse_shape ops
Arnab Dutta [Sun, 28 Aug 2022 01:25:48 +0000 (06:55 +0530)]
Fold memref.expand_shape and memref.collapse_shape ops

Fold memref.expand_shape and memref.collapse_shape ops into their
memref/affine load/store ops.

Reviewed By: bondhugula, nicolasvasilache

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

2 years ago[clang-tidy] Tweak diagnostics for bugprone-assign-in-if-condition
Nathan James [Sat, 27 Aug 2022 23:21:39 +0000 (00:21 +0100)]
[clang-tidy] Tweak diagnostics for bugprone-assign-in-if-condition

Currently the diagnostic is printed at the start of the assignment expression, This can be misleading.
Having the location for the diagnostic be the location of the assignment operator is much more intuitive.

Reviewed By: gribozavr2

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

2 years ago[Clang] Avoid crashes when parsing using enum declarations
Shafik Yaghmour [Sat, 27 Aug 2022 22:18:36 +0000 (15:18 -0700)]
[Clang] Avoid crashes when parsing using enum declarations

In Parser::ParseUsingDeclaration(...) when we call ParseEnumSpecifier(...) it is
not calling SetTypeSpecError() on DS when it detects an error. That means that
DS is left set to TST_unspecified. When we then pass DS into
Sema::ActOnUsingEnumDeclaration(...) we hit an llvm_unreachable(...) since it
expects it to be one of three states TST_error, TST_enum or TST_typename.

This fixes https://github.com/llvm/llvm-project/issues/57347

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

2 years ago[clang-format] Rework removeBraces() in Format.cpp
owenca [Fri, 26 Aug 2022 06:13:34 +0000 (23:13 -0700)]
[clang-format] Rework removeBraces() in Format.cpp

Fixes #57373.

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

2 years ago[VPlan] Verify that header only contains header phi recipes.
Florian Hahn [Sat, 27 Aug 2022 21:06:11 +0000 (22:06 +0100)]
[VPlan] Verify that header only contains header phi recipes.

Add verification that VPHeaderPHIRecipes are only in header VPBBs. Also
adds missing checks for VPPointerInductionRecipe to
VPHeaderPHIRecipe::classof.

Split off from D119661.

Reviewed By: Ayal

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

2 years ago[compiler-rt][builtins] Pass -Werror to check_cxx_compiler_flag
Akira Hatanaka [Sat, 27 Aug 2022 20:39:28 +0000 (13:39 -0700)]
[compiler-rt][builtins] Pass -Werror to check_cxx_compiler_flag

This is needed to avoid passing flags that are supported by the compiler
but cause warnings to be emitted.

2 years ago[libc++] Mark everything in <deque> as _LIBCPP_HIDE_FROM_ABI and replace _LIBCPP_INLI...
Nikolas Klauser [Sun, 21 Aug 2022 00:03:35 +0000 (02:03 +0200)]
[libc++] Mark everything in <deque> as _LIBCPP_HIDE_FROM_ABI and replace _LIBCPP_INLINE_VISIBILITY

Reviewed By: ldionne, #libc

Spies: libcxx-commits

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

2 years ago[clang-tidy] Add missing header from 6bd98b4f2d
Nathan James [Sat, 27 Aug 2022 18:59:16 +0000 (19:59 +0100)]
[clang-tidy] Add missing header from 6bd98b4f2d

2 years ago[clang-tidy] Fix a false positive in bugprone-assignment-in-if-condition
Nathan James [Sat, 27 Aug 2022 18:55:08 +0000 (19:55 +0100)]
[clang-tidy] Fix a false positive in bugprone-assignment-in-if-condition

Fixed a false positive where a lambda expression in the condition which contained an assignement would trigger a warning.
Fixes #56729

Reviewed By: gribozavr2

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

2 years ago[LazyCallGraph] Update libcall list when replacing a libcall node's function
Arthur Eubanks [Fri, 26 Aug 2022 22:06:51 +0000 (15:06 -0700)]
[LazyCallGraph] Update libcall list when replacing a libcall node's function

Otherwise when we visit all libcalls in
updateCGAndAnalysisManagerForPass(), the old libcall is dead and doesn't
have a node.

We treat libcalls conservatively in LazyCallGraph because any function
may introduce calls to them out of thin air.

It is weird to change the signature of a libcall since introducing calls
to the libcall with a different signature may break, but other passes
like deadargelim already do it, so let's preserve this behavior for now.

Fixes an issue found in D128830.

Reviewed By: psamolysov

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

2 years ago[GlobalISel] Use std::lcm (NFC)
Kazu Hirata [Sat, 27 Aug 2022 16:53:16 +0000 (09:53 -0700)]
[GlobalISel] Use std::lcm (NFC)

This patch replaces getLCMSize with std::lcm, a C++17 feature.

Note that all the arguments are of unsigned with no implicit type
conversion as they are passed to getLCMSize.

2 years ago[mlir] Use std::lcm (NFC)
Kazu Hirata [Sat, 27 Aug 2022 16:53:14 +0000 (09:53 -0700)]
[mlir] Use std::lcm (NFC)

This patch replaces mlir::lcm with std::lcm, a C++17 feature.

Note that all the arguments to mlir::lcm are of int64_t with no
implicit type conversion as they are passed to mlir::lcm, which I've
verified by modifying mlir::lcm as:

  template <typename TA, typename TB>
  inline int64_t lcm(TA a, TB b) {
    static_assert(std::is_same_v<TA, int64_t>);
    static_assert(std::is_same_v<TB, int64_t>);
    :

2 years agoUse std::clamp (NFC)
Kazu Hirata [Sat, 27 Aug 2022 16:53:13 +0000 (09:53 -0700)]
Use std::clamp (NFC)

This patch replaces clamp idioms with std::clamp where the range is
obviously valid from the source code (that is, low <= high) to avoid
introducing undefined behavior.

2 years agoUse llvm::is_contained (NFC)
Kazu Hirata [Sat, 27 Aug 2022 16:53:11 +0000 (09:53 -0700)]
Use llvm::is_contained (NFC)

2 years agoUse llvm::all_equal (NFC)
Kazu Hirata [Sat, 27 Aug 2022 16:53:09 +0000 (09:53 -0700)]
Use llvm::all_equal (NFC)

2 years ago[flang] Don't emit faulty warnings for illegal COMMON blocks
Emil Kieri [Sat, 27 Aug 2022 06:37:19 +0000 (08:37 +0200)]
[flang] Don't emit faulty warnings for illegal COMMON blocks

SAVE statements referencing COMMON block names are not allowed in BLOCK
constructs. If they occur, an error is correctly emitted, but then flang
gets confused by the illegal SAVE and produces a faulty warning. This
patch removes that warning.

Consider this piece of Fortran (from the test blockconstruct02.f90):

program  main
  real r, s, t
  common /argmnt2/ r, s, t
  block
    save /argmnt2/
  end block
end program

Here flang (in addition to the error about the illegal SAVE) emits a
portability warning saying that the two definitions of argmnt2 have
different size, which does not make much sense.

This patch is a prerequisite for D125804, which in turn will make
blockconstruct02.f90 test this patch.

Reviewed By: jeanPerier

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