platform/upstream/llvm.git
2 years ago[RISCV] Add ReadFStoreData as a SchedRead.
Craig Topper [Mon, 8 Aug 2022 16:06:28 +0000 (09:06 -0700)]
[RISCV] Add ReadFStoreData as a SchedRead.

The floating point stores use a different register class, it
probably makes sense to have a different SchedRead.

Reviewed By: monkchiang

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

2 years ago[DAG] canCreateUndefOrPoison - add freeze(bswap(x)) -> bswap(freeze(x)) and freeze...
Simon Pilgrim [Mon, 8 Aug 2022 16:27:05 +0000 (17:27 +0100)]
[DAG] canCreateUndefOrPoison - add freeze(bswap(x)) -> bswap(freeze(x)) and freeze(bitreverse(x)) -> bitreverse(freeze(x)) support

Both are guaranteed not to create undef/poison

2 years ago[MLIR][Linalg] Remove `TiledLoops` from tiling options
lorenzo chelini [Mon, 8 Aug 2022 08:35:55 +0000 (10:35 +0200)]
[MLIR][Linalg] Remove `TiledLoops` from tiling options

TiledLoopOp has been removed in: https://github.com/llvm/llvm-project/commit/1a829d2d06958abf09bb6aff81120959206887f6

Reviewed By: ftynse

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

2 years ago[ADT] Retire llvm::apply_tuple in favor of C++17 std::apply
Benjamin Kramer [Mon, 8 Aug 2022 16:23:10 +0000 (18:23 +0200)]
[ADT] Retire llvm::apply_tuple in favor of C++17 std::apply

2 years ago[mlir][spirv] Refresh base definitions to latest spec (v1.6)
Lei Zhang [Mon, 8 Aug 2022 16:07:40 +0000 (12:07 -0400)]
[mlir][spirv] Refresh base definitions to latest spec (v1.6)

This commit updates all SPIR-V enum definitions to match the latest
specification (v1.6 revision 2). Along the way, fixed some issues
in `gen_spirv_dialect.py` and added a new script for refreshing
all op definitions for such cases.

Reviewed By: kuhar

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

2 years ago[clang] LLVM_FALLTHROUGH => [[fallthrough]]. NFC
Fangrui Song [Mon, 8 Aug 2022 16:12:46 +0000 (09:12 -0700)]
[clang] LLVM_FALLTHROUGH => [[fallthrough]]. NFC

With C++17 there is no Clang pedantic warning or MSVC C5051.

Reviewed By: aaron.ballman

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

2 years agoRename OPENMP_HAVE_STD_CPP14_FLAG to match c++17
Jon Chesterfield [Mon, 8 Aug 2022 16:07:45 +0000 (17:07 +0100)]
Rename OPENMP_HAVE_STD_CPP14_FLAG to match c++17

2 years agoMove openmp from -std=c++14 to -std=c++17
Ron Lieberman [Mon, 8 Aug 2022 16:04:52 +0000 (16:04 +0000)]
Move openmp from -std=c++14 to -std=c++17

2 years ago[LLDB][NFC] Fix suspicious bitwise expression in PrintBTEntry()
Slava Gurevich [Sat, 6 Aug 2022 04:27:28 +0000 (21:27 -0700)]
[LLDB][NFC] Fix suspicious bitwise expression in PrintBTEntry()

Current application of bitwise-OR to a binary mask always results in True, which seems
inconsistent with the intent of the statement, a likely typo.

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

2 years ago[lld/win] Use C++17 structured bindings
Nico Weber [Mon, 8 Aug 2022 15:20:24 +0000 (11:20 -0400)]
[lld/win] Use C++17 structured bindings

No behavior change.

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

2 years ago[lld/win] Use C++17 nested namespace syntax in most places
Nico Weber [Mon, 8 Aug 2022 15:32:26 +0000 (11:32 -0400)]
[lld/win] Use C++17 nested namespace syntax in most places

Like D131354, but for COFF.

No behavior change.

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

2 years ago[DAG] canCreateUndefOrPoison - add freeze(sext(x)) -> sext(freeze(x)) and freeze...
Simon Pilgrim [Mon, 8 Aug 2022 15:43:30 +0000 (16:43 +0100)]
[DAG] canCreateUndefOrPoison - add freeze(sext(x)) -> sext(freeze(x)) and freeze(zext(x)) -> zext(freeze(x)) support

Both are guaranteed not to create undef/poison

2 years ago[lldb] Make Process and subclass constructors protected
Michał Górny [Fri, 5 Aug 2022 17:39:42 +0000 (19:39 +0200)]
[lldb] Make Process and subclass constructors protected

Make constructors of the Process and its subclasses class protected,
to prevent accidentally constructing Process on stack when it could be
afterwards accessed via a shared_ptr (since it uses
std::enable_shared_from_this<>).

The only place where a stack allocation was used were unittests,
and fixing them via declaring an explicit public constructor
in the respective mock classes is trivial.

Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.llvm.org/D131275

2 years agoUpdate the C status page from the latest working draft
Aaron Ballman [Mon, 8 Aug 2022 15:29:34 +0000 (11:29 -0400)]
Update the C status page from the latest working draft

WG14 N3047 is the last C working draft before the document goes out
for committee ballot, so this should be the last of the C2x compiler
features to be added.

2 years ago[nfc][openmp] clang-format system.cpp prior to D131401
Jon Chesterfield [Mon, 8 Aug 2022 15:24:34 +0000 (16:24 +0100)]
[nfc][openmp] clang-format system.cpp prior to D131401

2 years ago[lld/mac] Use C++17 structured bindings in two more places
Nico Weber [Mon, 8 Aug 2022 15:09:22 +0000 (11:09 -0400)]
[lld/mac] Use C++17 structured bindings in two more places

No behavior change.

2 years ago[mlir][math] Add `math.absi` op
Jeff Niu [Sat, 6 Aug 2022 16:09:57 +0000 (12:09 -0400)]
[mlir][math] Add `math.absi` op

Adds an integer absolute value op to the math dialect.

When converting to LLVM, this op is lowered to the LLVM `abs` intrinsic.
When converting to SPIRV, this op is lowered to `spv.GL.SAbs`.

Depends on D131325

Reviewed By: ftynse

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

2 years ago[mlir][math] Rename math.abs -> math.absf
Jeff Niu [Sat, 6 Aug 2022 15:07:51 +0000 (11:07 -0400)]
[mlir][math] Rename math.abs -> math.absf

To make room for introducing `math.absi`.

Reviewed By: ftynse

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

2 years ago[X86] Add test coverage for sext/zext/bswap/bitreverse with freeze
Simon Pilgrim [Mon, 8 Aug 2022 14:39:11 +0000 (15:39 +0100)]
[X86] Add test coverage for sext/zext/bswap/bitreverse with freeze

All of these are safe to fold from freeze(unaryop(x)) -> unaryop(freeze(x))

2 years ago[StandardInstrumentations] Handle case where block order changes
Arthur Eubanks [Tue, 26 Jul 2022 20:03:53 +0000 (13:03 -0700)]
[StandardInstrumentations] Handle case where block order changes

Previously we'd go off the end of the BI iterator because we expected
that the relative positions of common blocks before and after were
consistent. That's not always true though, for example with
jump-threading.

Reviewed By: jamieschmeiser

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

2 years agoRecommit [RDF] Remove explicit template arguments from Print
Krzysztof Parzyszek [Mon, 8 Aug 2022 14:24:09 +0000 (07:24 -0700)]
Recommit [RDF] Remove explicit template arguments from Print

The build breakages should be addressed by d4abdd2e3d:
  [CMake] Check CMAKE_CXX_STANDARD and error if it's to old

Thanks to Tobias and Roy for addressing these issues.

2 years ago[NFC][Flang][OpenMP] Refactor OpenMP.cpp::genOpenMPReduction
Dylan Fleming [Mon, 8 Aug 2022 14:04:45 +0000 (14:04 +0000)]
[NFC][Flang][OpenMP] Refactor OpenMP.cpp::genOpenMPReduction

This patch serves two main purposes:
Firstly, to split some of the logic into a seperate method
to try and improve readability

On top of this, it aims to make creating the reductions more generic.
That way, subsequent patches adding reductions shouldn't need
to add a significant amount of extra logic checks, such as checking
for specific operators.

Reviewed By: awarzynski

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

2 years ago[ADT] Add is_splat overload accepting initializer_list
Jakub Kuderski [Mon, 8 Aug 2022 14:19:34 +0000 (10:19 -0400)]
[ADT] Add is_splat overload accepting initializer_list

Allow for `is_splat` to be used inline, similar to `is_contained`, e.g.,
```
if (is_splat({type1, type2, type3, type4}))
  ...
```

which is much more concise and less typo-prone than an equivalent chain of equality comparisons.

My immediate motivation is to clean up some code in the SPIR-V dialect that currently needs to either construct a temporary container or use `makeArrayRef` before calling `is_splat`.

Reviewed By: dblaikie

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

2 years ago[DAG] Add initial SelectionDAG::canCreateUndefOrPoison support
Simon Pilgrim [Mon, 8 Aug 2022 14:15:56 +0000 (15:15 +0100)]
[DAG] Add initial SelectionDAG::canCreateUndefOrPoison support

This patch adds basic support for a DAG variant of the canCreateUndefOrPoison call and updates DAGCombiner::visitFREEZE to use it, further Opcodes (including target specific Opcodes) can be handled when we have test coverage.

So far, I've left visitFREEZE to just use this for unary nodes (which currently means the existing BITCAST/FREEZE cases) - later patches will add other unary opcodes (with test coverage) and we can also refactor visitFREEZE to support a general number of operands like we do in InstCombinerImpl::pushFreezeToPreventPoisonFromPropagating.

I'm not aware of any vector test freeze coverage so the DemandedElts (and the Depth) args are not being used yet - but they are in place. Similarly we will be able to handle poison generating SDNodeFlags as and when it becomes an issue.

Part of the work for D106675 / PR50468

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

2 years ago[llvm-dwarfutil] Remove unnecessarily dependency.
Alexey Lapshin [Thu, 4 Aug 2022 12:03:03 +0000 (15:03 +0300)]
[llvm-dwarfutil] Remove unnecessarily dependency.

llvm-dwarutil.cpp redundantly calls to InitializeAllAsmParsers.
That call might be removed as well as dependency on ${LLVM_TARGETS_TO_BUILD}

Reviewed By: thakis

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

2 years ago[EarlyCSE][ConstantFolding] move test files to dir of pass in RUN line; NFC
Sanjay Patel [Mon, 8 Aug 2022 14:08:04 +0000 (10:08 -0400)]
[EarlyCSE][ConstantFolding] move test files to dir of pass in RUN line; NFC

2 years ago[Docs] Add HLSL ResourceType documentation
Chris Bieneman [Fri, 29 Jul 2022 19:20:27 +0000 (14:20 -0500)]
[Docs] Add HLSL ResourceType documentation

Along with the new documentation this also re-organizes the HLSL docs
to a subdirectory. The hope is to continue to expand this documentation
as the HLSL implementation advances.

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

2 years agoRevert "XFAIL some PGO tests on AIX until the new linker becomes publicly available."
Wael Yehia [Mon, 8 Aug 2022 14:04:29 +0000 (14:04 +0000)]
Revert "XFAIL some PGO tests on AIX until the new linker becomes publicly available."

AIX 7.2 TL5 SP4 and AIX 7.3 TL0 SP2 have been released as of now.
The linker in these OS versions recognizes and properly supports
__start_SECNAME and __stop_SECNAME symbols which are needed for PGO.

This reverts commit 93bb2f16e85d2d4c8d3ddadebd99fc0fe26d974b.

2 years ago[LLD][COFF] Ignore DEBUG_S_XFGHASH_TYPE/VIRTUAL
Tobias Hieta [Mon, 8 Aug 2022 13:53:15 +0000 (15:53 +0200)]
[LLD][COFF] Ignore DEBUG_S_XFGHASH_TYPE/VIRTUAL

These are new debug types that ships with the latest
Windows SDK and would warn and finally fail lld-link.

The symbols seems to be related to Microsoft's XFG
which is their version of CFG. We can't handle any of
this yet, so for now we can just ignore these types
so that lld doesn't fail with a new version of Windows
SDK.

Fixes: #56285

Reviewed By: rnk

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

2 years ago[MLIR][Presburger] make sample test with integer lexmin use containsPointNoLocal
Arjun P [Mon, 8 Aug 2022 13:42:53 +0000 (14:42 +0100)]
[MLIR][Presburger] make sample test with integer lexmin use containsPointNoLocal

IntegerPolyhedron::findIntegerLexmin currently does not return values of
the local ids, so when a test for sampling includes a set with locals, the
result of findIntegerLexmin should be checked using containsPointNoLocal,
not containsPoint.

2 years ago[libc++][doc] Update `SpaceshipProjects` status to reflect in-flight reviews
Adrian Vogelsgesang [Mon, 8 Aug 2022 13:36:20 +0000 (06:36 -0700)]
[libc++][doc] Update `SpaceshipProjects` status to reflect in-flight reviews

2 years ago[X86] X86ISelDAGToDAG.cpp - use auto for all values derived from cast/dyn_cast (style...
Simon Pilgrim [Mon, 8 Aug 2022 13:34:54 +0000 (14:34 +0100)]
[X86] X86ISelDAGToDAG.cpp - use auto for all values derived from cast/dyn_cast (style). NFC.

2 years ago[libc++][NFC] Fix signature of main in test
Louis Dionne [Mon, 8 Aug 2022 13:30:21 +0000 (09:30 -0400)]
[libc++][NFC] Fix signature of main in test

2 years ago[EarlyCSE][ConstantFolding] add tests for atan/atan2; NFC
Mohammed Nurul Hoque [Mon, 8 Aug 2022 13:21:33 +0000 (09:21 -0400)]
[EarlyCSE][ConstantFolding] add tests for atan/atan2; NFC

Baseline coverage for D127964.

2 years ago[EarlyCSE][OpaquePointers]Replace assert with return for mask type check.
Denis Antrushin [Fri, 5 Aug 2022 09:48:28 +0000 (16:48 +0700)]
[EarlyCSE][OpaquePointers]Replace assert with return for mask type check.

When EarlyCSE tries to common vector masked loads/stores, it first checks that
they have same base operand and then assumes that this is enough for mask types
to be equal. This is true for typed pointers but false for opaque ones -
two loads of different vector sizes from same base pointer '%b' are the same,
`ptr %b`. (For typed pointers, `%b` was cast to vector pointer type so bases
were different).
Change assert to return from lambda `isSubmask` so this transformation properly
works with opaque pointers.

Reviewed By: nikic

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

2 years ago[CMake] Check CMAKE_CXX_STANDARD and error if it's to old
Tobias Hieta [Sun, 7 Aug 2022 19:52:37 +0000 (21:52 +0200)]
[CMake] Check CMAKE_CXX_STANDARD and error if it's to old

Also nuke the old value out of the cache if it's there, otherwise
it could lead to problems when the project increases the standard
and the developer just runs the "make/ninja" program.

Reviewed By: royjacobson

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

2 years ago[libc++] Add missing <stdbool.h> to the modulemap
Louis Dionne [Thu, 4 Aug 2022 20:57:27 +0000 (16:57 -0400)]
[libc++] Add missing <stdbool.h> to the modulemap

It used to be defined by the compiler, but libc++ now provides it.

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

2 years ago[libc++] Allow enabling assertions when back-deploying
Louis Dionne [Thu, 4 Aug 2022 19:25:48 +0000 (15:25 -0400)]
[libc++] Allow enabling assertions when back-deploying

When back-deploying to older platforms, we can still provide assertions,
but we might not be able to provide a great implementation for the verbose
handler. Instead, we can just call ::abort().

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

2 years ago[clang-tidy] Fix a regression of readability-container-size-empty after the AST Elabo...
Haojian Wu [Mon, 8 Aug 2022 11:21:06 +0000 (13:21 +0200)]
[clang-tidy] Fix a regression of readability-container-size-empty after the AST ElaboratedType change.

With 15f3cd6bfc670ba6106184a903eb04be059e5977, we no longer emit a
diagnostic on a real std::vector case where the size method returns a
sugar `size_type`. This patch fixes it.

```
std::vector<int> v;
if (v.size() == 0) // => no check diagnostics
  ;
```

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

2 years ago[X86] Add 32-bit test coverage to or-lea.ll
Simon Pilgrim [Mon, 8 Aug 2022 12:30:55 +0000 (13:30 +0100)]
[X86] Add 32-bit test coverage to or-lea.ll

Noticed while triaging D131358

2 years ago[ASTMatchers] Replace hand-coded copy of std::apply with the real C++17 function...
Benjamin Kramer [Mon, 8 Aug 2022 12:08:04 +0000 (14:08 +0200)]
[ASTMatchers] Replace hand-coded copy of std::apply with the real C++17 function. NFCI

2 years ago[Support] Use std::shared_mutex when we're not on old MacOS
Benjamin Kramer [Mon, 8 Aug 2022 11:17:24 +0000 (13:17 +0200)]
[Support] Use std::shared_mutex when we're not on old MacOS

In C++17 mode this is always available.

2 years ago[lld/mac] Use C++17 structured bindings
Nico Weber [Sun, 7 Aug 2022 14:49:26 +0000 (10:49 -0400)]
[lld/mac] Use C++17 structured bindings

No behavior change.

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

2 years ago[mlir] Remove redundant `inline` from D131323
Markus Böck [Mon, 8 Aug 2022 11:17:50 +0000 (13:17 +0200)]
[mlir] Remove redundant `inline` from D131323

2 years agoWrap `llvm_unreachable` macro in do-while loop
Stefan Gränitz [Thu, 4 Aug 2022 11:58:26 +0000 (13:58 +0200)]
Wrap `llvm_unreachable` macro in do-while loop

Macros that expand into multiple terms can cause interesting preprocessor hickups depending
on the context they are used in. https://github.com/llvm/llvm-project/issues/56867 reported
a miscompilation of `llvm_unreachable(msg)` inside a `LLVM_DEBUG({ ... })` block. We were
able to fix it by wrapping the expansion in a `do {} while(false)`.

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

2 years agoRemove superfluous ; outside of a function
Simon Pilgrim [Mon, 8 Aug 2022 11:13:19 +0000 (12:13 +0100)]
Remove superfluous ; outside of a function

2 years ago[lld/mac] Use C++17 nested namespace syntax in most places
Nico Weber [Sun, 7 Aug 2022 14:37:49 +0000 (10:37 -0400)]
[lld/mac] Use C++17 nested namespace syntax in most places

Some header files used

    namespace lld {
    namespace macho {
    // ...
    } // namespace macho
    std::string toString(const Type &t);
    } // namespace lld

In those files, I didn't use a nested namespace since it's not a big win there.

No behavior change.

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

2 years ago[DAG] Emit table lookup from TargetLowering::expandCTTZ()
Shubham Narlawar [Mon, 8 Aug 2022 11:08:05 +0000 (12:08 +0100)]
[DAG] Emit table lookup from TargetLowering::expandCTTZ()

This patch emits table lookup in expandCTTZ.

Context -
https://reviews.llvm.org/D113291 transforms set of IR instructions to
cttz intrinsic but there are some targets which does not support CTTZ or
CTLZ. Hence, I generate a table lookup in TargetLowering::expandCTTZ().

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

2 years agoRemove C++17 #ifdefs around the implicit conversion between StringRef and string_view
Benjamin Kramer [Mon, 8 Aug 2022 10:54:50 +0000 (12:54 +0200)]
Remove C++17 #ifdefs around the implicit conversion between StringRef and string_view

This is no longer needed as LLVM is built with C++17 now. Also drop the
explicit conversion to std::string as the implicit conversion to
std::string_view gets picked first anyways.

2 years ago[DAG] FoldConstantArithmetic - add initial support for undef elements in bitcasted...
Simon Pilgrim [Mon, 8 Aug 2022 10:53:56 +0000 (11:53 +0100)]
[DAG] FoldConstantArithmetic - add initial support for undef elements in bitcasted binop constant folding

FoldConstantArithmetic can fold constant vectors hidden behind bitcasts (e.g. vXi64 -> v2Xi32 on 32-bit platforms), but currently bails if either vector contains undef elements. These undefs can often occur due to SimplifyDemandedBits/VectorElts calls recognising that the upper bits are often unnecessary (e.g. funnel-shift/rotate implicit-modulo and AND masks).

This patch adds a basic 'FoldValueWithUndef' handler that will attempt to constant fold if one or both of the ops are undef - so far this just handles the AND and MUL cases where we always fold to zero.

The RISCV codegen increase is interesting - it looks like the BUILD_VECTOR lowering was loading a constant pool entry but now (with all elements defined constant) it can materialize the constant instead?

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

2 years agoProcessTest.cpp - replace Optional::hasValue() with Optional::has_value()
Simon Pilgrim [Mon, 8 Aug 2022 10:52:22 +0000 (11:52 +0100)]
ProcessTest.cpp - replace Optional::hasValue() with Optional::has_value()

Fixes windows-only build warnings

2 years ago[llvm-objdump,ARM] Fix big-endian AArch32 disassembly.
Simon Tatham [Mon, 1 Aug 2022 12:40:32 +0000 (13:40 +0100)]
[llvm-objdump,ARM] Fix big-endian AArch32 disassembly.

The ABI for big-endian AArch32, as specified by AAELF32, is above-
averagely complicated. Relocatable object files are expected to store
instruction encodings in byte order matching the ELF file's endianness
(so, big-endian for a BE ELF file). But executable images can
//either// do that //or// store instructions little-endian regardless
of data and ELF endianness (to support BE32 and BE8 platforms
respectively). They signal the latter by setting the EF_ARM_BE8 flag
in the ELF header.

(In the case of the Thumb instruction set, this all means that each
16-bit halfword of a Thumb instruction is stored in one or other
endianness. The two halfwords of a 32-bit Thumb instruction must
appear in the same order no matter what, because the first halfword is
the one that must avoid overlapping the encoding of any 16-bit Thumb
instruction.)

llvm-objdump was unconditionally expecting Arm instructions to be
stored little-endian. So it would correctly disassemble a BE8 image,
but if you gave it a BE32 image or a BE object file, it would retrieve
every instruction in byte-swapped form and disassemble it to
nonsense. (Even an object file output by LLVM itself, because
ARMMCCodeEmitter outputs instructions big-endian in big-endian mode,
which is correct for writing an object file.)

This patch allows llvm-objdump to correctly disassemble all three of
those classes of Arm ELF file. It does it by introducing a new
SubtargetFeature for big-endian instructions, setting it from the ELF
image type and flags during llvm-objdump setup, and teaching both
ARMDisassembler and llvm-objdump itself to pay attention to it when
retrieving instruction data from a section being disassembled.

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

2 years ago[Orc][JITLink] Slab based memory allocator to reduce RPC calls
Anubhab Ghosh [Fri, 22 Jul 2022 19:14:03 +0000 (00:44 +0530)]
[Orc][JITLink] Slab based memory allocator to reduce RPC calls

Calling reserve() used to require an RPC call. This commit allows large
ranges of executor address space to be reserved. Subsequent calls to
reserve() will return subranges of already reserved address space while
there is still space available.

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

2 years ago[ADT] Update Optional Deprecation with fix-it
Nathan James [Mon, 8 Aug 2022 09:39:29 +0000 (10:39 +0100)]
[ADT] Update Optional Deprecation with fix-it

When Optional accessors were deprecated, in D131349,  the standard c++14 style attribute was used.
Clang has a slightly better deprecated attribute that enables simpler migration by embedding fix-its.

Reviewed By: kazu

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

2 years ago[DAG] Ensure Legal BUILD_VECTOR elements types in shuffle->And combine
David Green [Mon, 8 Aug 2022 08:47:55 +0000 (09:47 +0100)]
[DAG] Ensure Legal BUILD_VECTOR elements types in shuffle->And combine

D129150 added a combine from shuffles to And that creates a BUILD_VECTOR
of constant elements. We need to ensure that the elements are of a legal
type, to prevent asserts during lowering.

Fixes #56970.

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

2 years ago[AArch64][SVE] Add patterns to select masked FP arith
Cullen Rhodes [Mon, 8 Aug 2022 08:20:36 +0000 (08:20 +0000)]
[AArch64][SVE] Add patterns to select masked FP arith

Add patterns to select predicated instructions when lowering:

  fadd(a, select(mask, b, splat(0)))
  fsub(a, select(mask, b, splat(0)))

'fadd' is unsafe unless no-signed zeros fast-math flag is set, since

  -0.0 + 0.0 = 0.0

changes the sign. Alive2: https://alive2.llvm.org/ce/z/wbhJh_

Also adds FMA patterns for:

  fadd(a, select(mask, mul(b, c), splat(0))) -> fmla(a, mask, b, c)
  fsub(a, select(mask, mul(b, c), splat(0))) -> fmla(a, mask, b, c)

These patterns require the 'contract' fast-math flag to be set, and the
fadd 'nsz' as above.

Reviewed By: paulwalker-arm

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

2 years ago[AArch64][SVE] NFC: Add tests for masked FP arith patterns (D130564)
Cullen Rhodes [Tue, 26 Jul 2022 09:56:25 +0000 (09:56 +0000)]
[AArch64][SVE] NFC: Add tests for masked FP arith patterns (D130564)

2 years ago[mailmap] Add entry for myself
WANG Xuerui [Mon, 8 Aug 2022 08:28:46 +0000 (16:28 +0800)]
[mailmap] Add entry for myself

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

2 years ago[scudo] Try to fix standalone build on armv7
Diana Picus [Fri, 5 Aug 2022 08:54:32 +0000 (10:54 +0200)]
[scudo] Try to fix standalone build on armv7

When linking scudo standalone on armv7, it can't find symbols related to
unwinding (e.g. __aeabi_unwind_cpp_pr0). This is because it is passing
--unwindlib=none. This patch hacks around the issue by adding
COMPILER_RT_UNWINDER_LINK_LIBS to the link line.

I don't know anything about scudo, so I'm not sure what the original
intention was.

See also https://github.com/llvm/llvm-project/issues/56900

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

2 years ago[CodeView] Add function to get size in bytes for TypeIndex/CVType.
Carlos Alberto Enciso [Mon, 8 Aug 2022 07:48:23 +0000 (08:48 +0100)]
[CodeView] Add function to get size in bytes for TypeIndex/CVType.

Given a TypeIndex or CVType return its size in bytes. Basically it
is the inverse to 'CodeViewDebug::lowerTypeBasic', that returns a
TypeIndex based in a size.

Reviewed By: rnk, djtodoro

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

2 years ago[NFC][clang] Bring `and_present` and `if_present` casting functions to clang namespace
Nathan James [Mon, 8 Aug 2022 07:38:50 +0000 (08:38 +0100)]
[NFC][clang] Bring `and_present` and `if_present` casting functions to clang namespace

This should enable simpler migration when the `and_nonnull` and `or_null` functions are deprecated.

2 years ago[llvm] Qualify auto (NFC)
Kazu Hirata [Mon, 8 Aug 2022 06:55:27 +0000 (23:55 -0700)]
[llvm] Qualify auto (NFC)

Identified with readability-qualified-auto.

2 years ago[clang-tidy] Use is_contained (NFC)
Kazu Hirata [Mon, 8 Aug 2022 06:55:25 +0000 (23:55 -0700)]
[clang-tidy] Use is_contained (NFC)

2 years ago[Transforms] Fix comment typos (NFC)
Kazu Hirata [Mon, 8 Aug 2022 06:55:23 +0000 (23:55 -0700)]
[Transforms] Fix comment typos (NFC)

2 years ago[BOLT] Upgrade to C++17
Kazu Hirata [Mon, 8 Aug 2022 06:12:16 +0000 (23:12 -0700)]
[BOLT] Upgrade to C++17

Without this patch, I am getting errors like:

  llvm-project/llvm/include/llvm/ADT/StringRef.h:233:7: error: use of
  the 'nodiscard' attribute is a C++17 extension
  [-Werror,-Wc++17-extensions]

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

2 years ago[LoongArch] Support for varargs
wanglei [Mon, 8 Aug 2022 04:04:14 +0000 (12:04 +0800)]
[LoongArch] Support for varargs

This patch ensures the `$fp` always points to the bottom of the vararg
spill region.
Includes support for expand `ISD::DYNAMIC_STACKALLOC`.

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

2 years ago[llvm-ar] Remove unused parameter. NFC
Fangrui Song [Mon, 8 Aug 2022 04:31:35 +0000 (21:31 -0700)]
[llvm-ar] Remove unused parameter. NFC

2 years ago[M68k] Add MC support for link/unlk
Sheng [Mon, 8 Aug 2022 01:56:04 +0000 (09:56 +0800)]
[M68k] Add MC support for link/unlk

Reviewers: myhsu

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

2 years ago[gn build] (manually) port ace6e172bd2c
Nico Weber [Mon, 8 Aug 2022 02:02:51 +0000 (22:02 -0400)]
[gn build] (manually) port ace6e172bd2c

2 years ago[RISCV] Support fe_getround and fe_raise_inexact in builtins
luxufan [Mon, 8 Aug 2022 01:57:43 +0000 (09:57 +0800)]
[RISCV] Support fe_getround and fe_raise_inexact in builtins

Reviewed By: luismarques

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

2 years ago[Support] move llvm::llvm_is_multithread to header, NFC
Jun Zhang [Mon, 8 Aug 2022 00:46:20 +0000 (08:46 +0800)]
[Support] move llvm::llvm_is_multithread to header, NFC

This allow optimization without LTO. Also remove some useless else-ifs.
Signed-off-by: Jun Zhang <jun@junz.org>
Differential Revision: https://reviews.llvm.org/D131313

2 years ago[flang] Handle subnormals while folding SCALE, SET_EXPONENT, & FRACTION
Peter Klausler [Tue, 26 Jul 2022 16:39:34 +0000 (09:39 -0700)]
[flang] Handle subnormals while folding SCALE, SET_EXPONENT, & FRACTION

The implementations of folding for the intrinsic functions SCALE and SET_EXPONENT
do not cope correctly with numbers in the subnormal range.  Fix SCALE,
then modify SET_EXPONENT to be a special case of SCALE.

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

2 years ago[mlir] fix `add_tablegen()` macro to allow installing mlir-pdll
Ashay Rane [Fri, 5 Aug 2022 19:16:51 +0000 (12:16 -0700)]
[mlir] fix `add_tablegen()` macro to allow installing mlir-pdll

Prior to this patch, the `add_tablegen()` macro in
llvm/cmake/modules/TableGen.cmake added the install rule only if
`project` matched `LLVM` or `MLIR`.  This patch adds an optional
`DESTINATION` argument, which, if non-empty, decides whether (and where)
to install the tablegen tool, thus eliminating the need for
project-specific overrides.  This patch also updates all other
invocations of the `add_tablegen()` macro.

Reviewed By: nikic

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

2 years ago[mlir][python] Address deprecation warning for hasValue
Jacques Pienaar [Sun, 7 Aug 2022 22:28:18 +0000 (15:28 -0700)]
[mlir][python] Address deprecation warning for hasValue

2 years ago[flang] Allow assignment to host association in BLOCK in PURE subprogram
Peter Klausler [Tue, 26 Jul 2022 01:03:40 +0000 (18:03 -0700)]
[flang] Allow assignment to host association in BLOCK in PURE subprogram

We need to distinguish BLOCK host association from subprogram host
association when checking assignments in PURE subprograms.
The specific case that is not allowed is an assignment to a variable
from the scope around the PURE subprogram.

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

2 years ago[ORC-RT] Fix missing #include <string_view>s.
Lang Hames [Sun, 7 Aug 2022 21:15:08 +0000 (14:15 -0700)]
[ORC-RT] Fix missing #include <string_view>s.

1dcff823db9 updated the ORC runtime to use std::string_view, rather than its
own placeholder class (__orc_rt::string_view), but failed to add these
includes.

2 years ago[lldb] Use single-argument static_assert where applicable (NFC)
Jonas Devlieghere [Sun, 7 Aug 2022 21:26:04 +0000 (14:26 -0700)]
[lldb] Use single-argument static_assert where applicable (NFC)

Since C++17 the message string for static_assert is optional. Replaces
static asserts with an empty string literal with the single-argument
variant.

2 years ago[InstSimplify] fold scalable vectors with over-shift splat constant to poison
Sanjay Patel [Sun, 7 Aug 2022 20:24:15 +0000 (16:24 -0400)]
[InstSimplify] fold scalable vectors with over-shift splat constant to poison

Fixes #56968

2 years ago[InstSimplify] add test for over-shift of scalable vector; NFC
Sanjay Patel [Sun, 7 Aug 2022 19:05:16 +0000 (15:05 -0400)]
[InstSimplify] add test for over-shift of scalable vector; NFC

2 years ago[flang][runtime] Catch & report attempts at recursive I/O
Peter Klausler [Tue, 26 Jul 2022 00:27:15 +0000 (17:27 -0700)]
[flang][runtime] Catch & report attempts at recursive I/O

When an I/O statement contains a function call that attempts
to perform I/O on the same unit, detect the recursive I/O
and terminate with a useful message rather than deadlocking in
the threading library.

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

2 years agoRevert "[JITLink] Fix some C++17 related fixmes."
Lang Hames [Sun, 7 Aug 2022 18:45:06 +0000 (11:45 -0700)]
Revert "[JITLink] Fix some C++17 related fixmes."

This reverts commit 6ea5bf436a983ea9e16a5fe7534c87beca0a61b7.

6ea5bf436a983ea9e16a5fe7534c87beca0a61b7 made use of new c++17 rules regarding
order of evaluation (specifically: in function calls the expression naming the
function should be sequenced before the evalution of any operands) to simplify
some continuation-passing calls. Unfortunately this appears to break at least
one MSVC bot: https://lab.llvm.org/buildbot/#/builders/123/builds/12149 .

Includes an update to the comments to note that the workaround is now based on
MSVC limitations, not on LLVM adopting c++17.

2 years ago[mlir] Use value instead of getValue
Kazu Hirata [Sun, 7 Aug 2022 18:59:37 +0000 (11:59 -0700)]
[mlir] Use value instead of getValue

2 years ago[ADT] Deprecate Optional::{hasValue,getValue} (NFC)
Kazu Hirata [Sun, 7 Aug 2022 18:30:58 +0000 (11:30 -0700)]
[ADT] Deprecate Optional::{hasValue,getValue} (NFC)

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

2 years ago[ORC-RT] Remove a stray __orc_rt::string_view helper.
Lang Hames [Sun, 7 Aug 2022 18:22:15 +0000 (11:22 -0700)]
[ORC-RT] Remove a stray __orc_rt::string_view helper.

This function was accidentally left in after 1dcff823db9.

2 years ago[lldb] Hoist TraceOn check out of loop (NFC)
Dave Lee [Wed, 25 May 2022 00:22:12 +0000 (17:22 -0700)]
[lldb] Hoist TraceOn check out of loop (NFC)

2 years ago[lldb] Fix formatting in python-reference.rst
Dave Lee [Sun, 24 Jul 2022 23:31:53 +0000 (17:31 -0600)]
[lldb] Fix formatting in python-reference.rst

2 years ago[lldb] Dynamically generate enum names in lldbutil
Dave Lee [Thu, 4 Aug 2022 02:45:47 +0000 (20:45 -0600)]
[lldb] Dynamically generate enum names in lldbutil

Change the `<enum>_to_str` functions in lldbutil to be dynamic.

Instead of a manually maintained if/elif switch, the functions now perform
lookup in a dynamically generated dict. The names are determined by stripping
the enum's prefix, and then lowercasing the remaining suffix, ex:

    eStateRunning -> "running"

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

2 years ago[libc++][NFC] Fix `the the` in comment in `__format/buffer.h`
Adrian Vogelsgesang [Sun, 7 Aug 2022 18:02:28 +0000 (11:02 -0700)]
[libc++][NFC] Fix `the the` in comment in `__format/buffer.h`

I made this commit primarily to test my commit access to the LLVM repo

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

2 years ago[mlir] Fix a warning
Kazu Hirata [Sun, 7 Aug 2022 18:13:19 +0000 (11:13 -0700)]
[mlir] Fix a warning

This patch fixes:

  llvm-project/mlir/include/mlir/IR/OpDefinition.h:1544:19: error: use
  of bitwise '|' with boolean operands
  [-Werror,-Wbitwise-instead-of-logical]

2 years ago[ConstFolding] fix overzealous assert when converting FP half
Sanjay Patel [Sun, 7 Aug 2022 17:33:44 +0000 (13:33 -0400)]
[ConstFolding] fix overzealous assert when converting FP half

Fixes #56981

2 years ago[InstCombine] add tests for bitwise logic; NFC
Sanjay Patel [Sat, 6 Aug 2022 18:22:12 +0000 (14:22 -0400)]
[InstCombine] add tests for bitwise logic; NFC

2 years ago[JITLink] Fix some C++17 related fixmes.
Lang Hames [Sun, 7 Aug 2022 15:58:08 +0000 (08:58 -0700)]
[JITLink] Fix some C++17 related fixmes.

2 years ago[ORC-RT] Drop __orc_rt::string_view now that we have c++17.
Lang Hames [Sun, 7 Aug 2022 04:58:56 +0000 (21:58 -0700)]
[ORC-RT] Drop __orc_rt::string_view now that we have c++17.

b1356504e63 enabled the use of c++17 features in LLVM, which means that we can
drop the ORC runtime's placeholder string_view implemention in favor of
std::string_view.

2 years ago[clang][CodeGen] Factor out Swift ABI hooks (NFCI)
Sergei Barannikov [Sun, 7 Aug 2022 16:21:40 +0000 (00:21 +0800)]
[clang][CodeGen] Factor out Swift ABI hooks (NFCI)

Swift calling conventions stands out in the way that they are lowered in
mostly target-independent manner, with very few customization points.
As such, swift-related methods of ABIInfo do not reference the rest of
ABIInfo and vice versa.
This change follows interface segregation principle; it removes
dependency of SwiftABIInfo on ABIInfo. Targets must now implement
SwiftABIInfo separately if they support Swift calling conventions.

Almost all targets implemented `shouldPassIndirectly` the same way. This
de-facto default implementation has been moved into the base class.

`isSwiftErrorInRegister` used to be virtual, now it is not. It didn't
accept any arguments which could have an effect on the returned value.
This is now a static property of the target ABI.

Reviewed By: rusyaev-roman, inclyc

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

2 years ago[X86] Add test case to recombine LEA from OR.
Amaury Séchet [Sun, 7 Aug 2022 15:55:14 +0000 (15:55 +0000)]
[X86] Add test case to recombine LEA from OR.

2 years ago[flang] Allow pure function references in expandable scalar
Peter Klausler [Wed, 3 Aug 2022 17:25:43 +0000 (10:25 -0700)]
[flang] Allow pure function references in expandable scalar

F18 disallows function references and coarray references from
appearing in scalar expressions that are to be expanded into
arrays to conform with other operands or actual arguments in
an elemental expression.  This is too strong, as pure procedures
can be safely used.

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

2 years ago[mlir] Flip to prefixed accessors (NFC)
Jacques Pienaar [Sun, 7 Aug 2022 15:46:15 +0000 (08:46 -0700)]
[mlir] Flip to prefixed accessors (NFC)

Missed these in td files.

2 years ago[polly] Fixed a number of typos. NFC
Gabriel Ravier [Sun, 7 Aug 2022 14:53:09 +0000 (22:53 +0800)]
[polly] Fixed a number of typos. NFC

I went over the output of the following mess of a command:

`(ulimit -m 2000000; ulimit -v 2000000; git ls-files -z | parallel --xargs -0 cat | aspell list --mode=none --ignore-case | grep -E '^[A-Za-z][a-z]*$' | sort | uniq -c | sort -n | grep -vE '.{25}' | aspell pipe -W3 | grep : | cut -d' ' -f2 | less)`

and proceeded to spend a few days looking at it to find probable typos
and fixed a few hundred of them in all of the llvm project (note, the
ones I found are not anywhere near all of them, but it seems like a
good start).

Reviewed By: inclyc

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

2 years ago[clang-tidy] Fix a forwarding-reference-overload crash after the
Haojian Wu [Sat, 6 Aug 2022 21:34:02 +0000 (23:34 +0200)]
[clang-tidy] Fix a forwarding-reference-overload crash after the
ElaboratedType change.

After 15f3cd6bfc670ba6106184a903eb04be059e5977, the nss of
ElaboratedType can be null.

2 years agoRevert "[RDF] Remove explicit template arguments from Print"
Aaron Ballman [Sun, 7 Aug 2022 12:24:01 +0000 (08:24 -0400)]
Revert "[RDF] Remove explicit template arguments from Print"

This reverts commit ede96de751224487aea122af8bfb4e82bc54840b.

This breaks the build on Windows with Visual Studio:
https://lab.llvm.org/buildbot/#/builders/123/builds/12134