platform/upstream/llvm.git
2 years agoBPF: Workaround InstCombine trunc+icmp => mask+icmp Optimization
Yonghong Song [Fri, 19 Nov 2021 03:02:11 +0000 (19:02 -0800)]
BPF: Workaround InstCombine trunc+icmp => mask+icmp Optimization

Patch [1] added further InstCombine trunc+icmp => mask+icmp
optimization and this caused a couple of bpf selftest failure.
Previous llvm BPF backend patch [2] introduced llvm.bpf.compare
builtin to handle such situations.

This patch further added support ">" and ">=" icmp opcodes.
Tested with bpf selftests and all tests are passed including two
previously failed ones.

Note Patch [1] also added optimization if the to-be-compared
constant is negative-power-of-2 (-C) or not-of-power-of-2 (~C).
This patch didn't implement these two cases as typical bpf
program compares a scalar to a positive length or boundary value,
and this scalar later is used as a index into an array buffer
or packet buffer.

  [1] https://reviews.llvm.org/D112634
  [2] https://reviews.llvm.org/D112938

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

2 years ago[libc++][doc] Mark project for [cmp.concept] done
Kent Ross [Fri, 19 Nov 2021 04:15:16 +0000 (20:15 -0800)]
[libc++][doc] Mark project for [cmp.concept] done

Mark [cmp.concept] implementation as completed in our documentation.

Reviewed By: ldionne, #libc

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

2 years ago[AARCH64] Teach AArch64FrameLowering::getFrameIndexReferencePreferSP really prefer SP.
Serguei Katkov [Tue, 5 Oct 2021 06:28:23 +0000 (13:28 +0700)]
[AARCH64] Teach AArch64FrameLowering::getFrameIndexReferencePreferSP really prefer SP.

Do more efforts to use sp if it is possible to lower a frame index.

Reviewers: reames, loicottet, ostannard, t.p.northover
Reviewed By: reames
Subscribers: arphaman, danilaml, hiraditya, kristof.beyls, llvm-commits, Matt, yrouban
Differential Revision: https://reviews.llvm.org/D111133

2 years ago[NFC][sanitizer] Fix naming in StackStore
Vitaly Buka [Fri, 19 Nov 2021 03:37:39 +0000 (19:37 -0800)]
[NFC][sanitizer] Fix naming in StackStore

2 years ago[NFC][sanitizer] constexpr StackStore::StackStore()
Vitaly Buka [Thu, 18 Nov 2021 22:11:54 +0000 (14:11 -0800)]
[NFC][sanitizer] constexpr StackStore::StackStore()

2 years ago[NFC][sanitizer] Change StackStore API to use StackTrace
Vitaly Buka [Mon, 15 Nov 2021 23:18:53 +0000 (15:18 -0800)]
[NFC][sanitizer] Change StackStore API to use StackTrace

2 years ago[NFC][sanitizer] Move inline implementation of StackStore into cpp
Vitaly Buka [Mon, 15 Nov 2021 21:31:45 +0000 (13:31 -0800)]
[NFC][sanitizer] Move inline implementation of StackStore into cpp

2 years ago[NFC][sanitizer] Rename PersistentAllocator to StackStore
Vitaly Buka [Mon, 15 Nov 2021 06:53:29 +0000 (22:53 -0800)]
[NFC][sanitizer] Rename PersistentAllocator to StackStore

2 years ago[nfc][dfsan] Remove obsolete comment
Vitaly Buka [Mon, 15 Nov 2021 06:47:13 +0000 (22:47 -0800)]
[nfc][dfsan] Remove obsolete comment

2 years ago[NFC][sanitizer] Rename persistent_allocator to stack_store
Vitaly Buka [Mon, 15 Nov 2021 06:37:52 +0000 (22:37 -0800)]
[NFC][sanitizer] Rename persistent_allocator to stack_store

2 years ago[clang] fix regression deducing pack expansion arguments introduced by D110216
Matheus Izvekov [Fri, 19 Nov 2021 00:17:40 +0000 (01:17 +0100)]
[clang] fix regression deducing pack expansion arguments introduced by D110216

This test case had been missing when the original code
was introduced by 2fcb863b2b278.

Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>
Differential Revision: https://reviews.llvm.org/D114207

2 years ago[NFC][OpaquePtr][Evaluator] Remove call to PointerType::getElementType
Senran Zhang [Thu, 18 Nov 2021 01:23:05 +0000 (09:23 +0800)]
[NFC][OpaquePtr][Evaluator] Remove call to PointerType::getElementType

There are still another 2 uses of PointerType::getElementType in
Evaluator when evaluating BitCast's on pointers. BitCast's on pointers
should be removed when opaque ptr is ready, so I just keep them as is.

Reviewed By: aeubanks

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

2 years ago[msan] Clang-format the test
Vitaly Buka [Mon, 15 Nov 2021 06:36:00 +0000 (22:36 -0800)]
[msan] Clang-format the test

2 years agolibfuzzer: All building libfuzzer for ARM32
Manoj Gupta [Tue, 19 Oct 2021 19:53:51 +0000 (12:53 -0700)]
libfuzzer: All building libfuzzer for ARM32

We need libfuzzer libraries on Arm32 so that we can fuzz
Arm32 binaries on Linux (Chrome OS). Android already
allows Arm32 for libfuzzer.

Reviewed By: morehouse

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

2 years ago[SCEV] Defer all work from ea12c2cb as late as possible
Philip Reames [Fri, 19 Nov 2021 01:18:04 +0000 (17:18 -0800)]
[SCEV] Defer all work from ea12c2cb as late as possible

This is a second speculative compile time optimization to address a reported regression.  My actual suspicion is that availability of no-self-wrap is making some *other* bit of code trigger, but let's rule this out.

2 years ago[AMDGPU] Fix SIPostRABundler crash on null register used by dbg value
Stanislav Mekhanoshin [Thu, 18 Nov 2021 23:35:54 +0000 (15:35 -0800)]
[AMDGPU] Fix SIPostRABundler crash on null register used by dbg value

Recently we started generate DBG_VALUEs with $noreg operands.
This crashes SIPostRABundler, and it should not iterate these
registers anyway.

Fixes: SWDEV-311733

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

2 years ago[SampleFDO] Add pass name strings for the passes (NFC)
Rong Xu [Fri, 19 Nov 2021 00:07:37 +0000 (16:07 -0800)]
[SampleFDO] Add pass name strings for the passes (NFC)

2 years agoRemove unused variable.
Jim Ingham [Thu, 18 Nov 2021 23:57:56 +0000 (15:57 -0800)]
Remove unused variable.

2 years ago[PowerPC] Remove the redundant terminator instruction when optimizing conditional...
Victor Huang [Thu, 18 Nov 2021 23:52:04 +0000 (17:52 -0600)]
[PowerPC] Remove the redundant terminator instruction when optimizing conditional trap

This patch is a follow up patch for ae27ca9a678301969c35f2e27c76f14c9d2bb396 to
the remove redundant terminator when optimizing conditional trap.

Peer reviewed by: nemanjai

2 years ago[AMDGPU] Regenerate postra-bundle-memops.mir checks. NFC.
Stanislav Mekhanoshin [Thu, 18 Nov 2021 23:47:44 +0000 (15:47 -0800)]
[AMDGPU] Regenerate postra-bundle-memops.mir checks. NFC.

2 years ago[AArch64][PAC] Select llvm.ptrauth.sign/sign.generic to PAC*.
Ahmed Bougacha [Mon, 27 Sep 2021 15:00:00 +0000 (08:00 -0700)]
[AArch64][PAC] Select llvm.ptrauth.sign/sign.generic to PAC*.

The @llvm.ptrauth.sign/sign.generic intrinsics map cleanly to
the various AArch64 PAC[IDG][Z][AB] instructions.  Select them.

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

2 years ago[libc++][NFC] Assign some Ranges tasks to varconst.
Konstantin Varlamov [Thu, 18 Nov 2021 23:13:30 +0000 (15:13 -0800)]
[libc++][NFC] Assign some Ranges tasks to varconst.

Specifically:
- [special.mem.concepts];
- [specialized.algorithms].

2 years ago[lldb] Fix formatted log statement
Keith Smiley [Thu, 18 Nov 2021 18:40:06 +0000 (10:40 -0800)]
[lldb] Fix formatted log statement

Previously this would output literally without replacements

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

2 years agoRevert "Increase gdbremote timeout."
Adrian Prantl [Thu, 18 Nov 2021 23:07:08 +0000 (15:07 -0800)]
Revert "Increase gdbremote timeout."

This reverts commit 6424dc21bf6b73645ef98a35417e0591b2a95939.

2 years ago[mlir][vector] Insert/extract element can accept index
Mogball [Thu, 18 Nov 2021 05:41:25 +0000 (05:41 +0000)]
[mlir][vector] Insert/extract element can accept index

`vector::InsertElementOp` and `vector::ExtractElementOp` have had their `position`
operand changed to accept `AnySignlessIntegerOrIndex` for better operability with
operations that use `index`, such as affine loops.

LLVM's `extractelement` and `insertelement` can also accept `i64`, so lowering
directly to these operations without explicitly inserting casts is allowed. SPIRV's
equivalent ops can also accept `i64`.

Reviewed By: nicolasvasilache, jpienaar

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

2 years ago[MLIR][NFC] Simplex::markRowRedundant: assert that row is not already marked redundant
Arjun P [Thu, 18 Nov 2021 21:44:25 +0000 (03:14 +0530)]
[MLIR][NFC] Simplex::markRowRedundant: assert that row is not already marked redundant

2 years agollvm-dwarfdump: Rebuild type names in dwo type units
David Blaikie [Thu, 18 Nov 2021 21:49:32 +0000 (13:49 -0800)]
llvm-dwarfdump: Rebuild type names in dwo type units

2 years ago[libc++] Cast to the right `difference_type` in various algorithms
Fabian Wolff [Thu, 18 Nov 2021 22:01:11 +0000 (17:01 -0500)]
[libc++] Cast to the right `difference_type` in various algorithms

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

2 years agomake testcase more robust
Adrian Prantl [Thu, 18 Nov 2021 22:00:43 +0000 (14:00 -0800)]
make testcase more robust

2 years ago[docs] Add Loop Optimization WG to the online sync-up page
Bardia Mahjour [Thu, 18 Nov 2021 21:48:29 +0000 (16:48 -0500)]
[docs] Add Loop Optimization WG to the online sync-up page

2 years ago[SCEV] Defer loop property checks from ea12c2cb as late as possible
Philip Reames [Thu, 18 Nov 2021 21:46:59 +0000 (13:46 -0800)]
[SCEV] Defer loop property checks from ea12c2cb as late as possible

This is a speculative compile time optimization to address a reported regression.  It's the only thing which vaguely makes sense.

2 years ago[mlir][Linalg] Add method to check if LinalgTransformationFilter has been applied.
MaheshRavishankar [Thu, 18 Nov 2021 21:42:23 +0000 (13:42 -0800)]
[mlir][Linalg] Add method to check if LinalgTransformationFilter has been applied.

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

2 years ago[SystemZ][z/OS] Fix filesystem testing
Muiez Ahmed [Thu, 18 Nov 2021 20:57:50 +0000 (15:57 -0500)]
[SystemZ][z/OS] Fix filesystem testing

This patch resolves many of the failures in the `filesystems/` buckets in the libc++ tests. It adds the correct flag to `fopen` and marks a test case as unsupported. In particular, that test assumes time is stored as a 64 bit value when on MVS it is stored as 32 bit.

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

2 years ago[libc++] Resolve missing table_size symbol
Muiez Ahmed [Thu, 18 Nov 2021 20:49:45 +0000 (15:49 -0500)]
[libc++] Resolve missing table_size symbol

The aim of this patch is to resolve the missing `table_size` symbol (see reduced test case). That const variable is declared and defined in //libcxx/include/locale//; however, the test case suggests that the symbol is missing. This is due to a C++ pitfall (highlighted [[ https://quuxplusone.github.io/blog/2020/09/19/value-or-pitfall/ | here ]]). In summary, assigning the reference of `table_size` doesn't enforce the const-ness and expects to find `table_size` in the DLL. The fix is to use `constexpr` or have an out-of-line definition in the src (for consistency).

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

2 years ago[DSE] Remove getLocForWrite() (NFCI)
Nikita Popov [Thu, 18 Nov 2021 20:17:08 +0000 (21:17 +0100)]
[DSE] Remove getLocForWrite() (NFCI)

This implements nearly the same logic as getLocForWriteEx(), and
is only used in one place. In that context, we should also know
that getLocForWriteEx() returns a non-None result. As such,
consolidate everything to use one function.

2 years ago[DSE] Move removePartiallyOverlappedStores() into DSEState (NFC)
Nikita Popov [Thu, 18 Nov 2021 20:10:29 +0000 (21:10 +0100)]
[DSE] Move removePartiallyOverlappedStores() into DSEState (NFC)

So it can use getLocForWriteEx().

2 years ago[mlir] Fully qualify default generated type/attribute printer and parser
Markus Böck [Thu, 18 Nov 2021 19:23:23 +0000 (20:23 +0100)]
[mlir] Fully qualify default generated type/attribute printer and parser

This patch makes it possible to use the newly added useDefaultAttributePrinterParser and useDefaultTypePrinterParser dialect options without any using namespace declarations. Two things had to be done to make this possible:

* Fully qualify any type usages or functions from the mlir namespace in the generated C++ code
* Makes sure to emit the printers and parsers inside the same namespace as the Dialect

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

2 years ago[NFC][mlir] Inclusive language: Replace an instance of master in docs
Quinn Pham [Wed, 17 Nov 2021 16:09:16 +0000 (10:09 -0600)]
[NFC][mlir] Inclusive language: Replace an instance of master in docs

[NFC] As part of using inclusive language within the llvm project, this patch
replaces master with main in `SPIR-V.md`.

Reviewed By: mehdi_amini

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

2 years agofix syntax error
Adrian Prantl [Thu, 18 Nov 2021 18:49:51 +0000 (10:49 -0800)]
fix syntax error

2 years ago[NFC][lldb] Inclusive language: remove instances of master from comments in lldb
Quinn Pham [Wed, 17 Nov 2021 22:23:19 +0000 (16:23 -0600)]
[NFC][lldb] Inclusive language: remove instances of master from comments in lldb

[NFC] As part of using inclusive language within the llvm project, this patch
replaces master in these comments.

Reviewed By: clayborg, JDevlieghere

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

2 years ago[lldb] Deobfuscate python-swigsafecast.swig
Pavel Labath [Thu, 18 Nov 2021 10:12:19 +0000 (11:12 +0100)]
[lldb] Deobfuscate python-swigsafecast.swig

This file was way more complicated than it needed to be.

This patch removes the automagic reference-to-pointer delegation and
replaces the template specializations with regular free functions
(taking reference arguments).

The reason I chose references is twofold:
- there are more arguments being passed by reference than by pointer
- the reference arguments make it more obvious that there is a lot of
  leaking going on in there.

Currently, the code was assuming that the pointer arguments have some
kind of a special meaning and that pointer functions take ownership of
their arguments, which isn't true (it's possible it was true at some
point in the past, I haven't done the archeology).

This makes it easier to implement proper lifetime management in
follow-up patches.

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

2 years ago[SCEV] Move mustprogress based no-self-wrap logic so it applies to all exit conditions
Philip Reames [Thu, 18 Nov 2021 18:05:04 +0000 (10:05 -0800)]
[SCEV] Move mustprogress based no-self-wrap logic so it applies to all exit conditions

This change moves logic which we'd added specifically for less than tests so that it applies to equalities and greater than tests as well. The basic idea is that if we can show an IV cycles infinitely through the same series on self-wrap, and that the exit condition must be taken to prevent UB, we can conclude that it must be taken before self-wrap and thus infer said flag.

The motivation here is simple loops with unsigned induction variables w/non-one steps and inequality tests. A toy example would be:
for (unsigned i = 0; i != N; i += 2) { body; }

If body contains no side effects, and this is a mustprogress function, we can assume that this must be a finite loop and thus that the exit count is N/2.

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

2 years ago[NFC][clang] Inclusive language: replace masterPort with mainPort
Quinn Pham [Tue, 9 Nov 2021 14:38:50 +0000 (08:38 -0600)]
[NFC][clang] Inclusive language: replace masterPort with mainPort

[NFC] This patch replaces `masterPort` with `mainPort` in these
testcases.

Reviewed By: ZarkoCA

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

2 years ago[mlir][Linalg] Do not return failure when all tile sizes are zero.
MaheshRavishankar [Thu, 18 Nov 2021 17:27:27 +0000 (09:27 -0800)]
[mlir][Linalg] Do not return failure when all tile sizes are zero.

Returning failure when tile sizes are all zero prevents the change in
the marker. This makes pattern rewriter run the pattern multiple times
only to exit when it hits a limit. Instead just clone the operation
(since tiling is essentially cloning in this case). Then the
transformation filter kicks in to avoid the pattern rewriter to be
invoked many times.

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

2 years ago[llvm] Use range-based for loops (NFC)
Kazu Hirata [Thu, 18 Nov 2021 17:09:52 +0000 (09:09 -0800)]
[llvm] Use range-based for loops (NFC)

2 years ago[flang] Skip `Fortran STOP:` before message when NO_STOP_MESSAGE is set
Jean Perier [Thu, 18 Nov 2021 17:06:19 +0000 (18:06 +0100)]
[flang] Skip `Fortran STOP:` before message when NO_STOP_MESSAGE is set

In 'STOP bye bye', do not print 'Fortran STOP:` before 'bye bye' when
NO_STOP_MESSAGE environment variable is set at runtime.

Also only exit with code 1 in StopStatementText if this is an ERROR STOP.
This matches other compiler behaviors.

Move STOP related unit tests in their own test file and add new tests to
cover this change.

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

2 years agoAdd a breadcrumb comment to make debugging a user error when using ./utils/update_ana...
Philip Reames [Thu, 18 Nov 2021 17:05:28 +0000 (09:05 -0800)]
Add a breadcrumb comment to make debugging a user error when using ./utils/update_analyze_test_checks.py easier.

We won't talk about how long it took me to figure this out.  The difference in batch vs interactive on the "did you mean to print bitcode" message made this confusing.

2 years ago[flang] Fix off-by-one results from folding MAXEXPONENT and MINEXPONENT
Peter Klausler [Mon, 15 Nov 2021 23:18:32 +0000 (15:18 -0800)]
[flang] Fix off-by-one results from folding MAXEXPONENT and MINEXPONENT

Every one was too low by one.

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

2 years ago[mlir][doc] Avoid name overlap that confuses copy_docs.sh (NFC)
Jacques Pienaar [Thu, 18 Nov 2021 17:03:10 +0000 (09:03 -0800)]
[mlir][doc] Avoid name overlap that confuses copy_docs.sh (NFC)

2 years ago[X86] LowerRotate - pull out repeated is ISD::ROTL check. NFC.
Simon Pilgrim [Thu, 18 Nov 2021 17:02:18 +0000 (17:02 +0000)]
[X86] LowerRotate - pull out repeated is ISD::ROTL check. NFC.

2 years ago[SCEV] Add test coverage for invertible functions of IVs
Philip Reames [Thu, 18 Nov 2021 16:56:35 +0000 (08:56 -0800)]
[SCEV] Add test coverage for invertible functions of IVs

2 years ago[Flang] Add a factory class for creating Complex Ops
Kiran Chandramohan [Thu, 18 Nov 2021 16:43:16 +0000 (16:43 +0000)]
[Flang] Add a factory class for creating Complex Ops

Use the factory class in the FIRBuilder.
Add unit tests for the factory class function and the convert function
of the Complex class.

Reviewed By: clementval, rovka

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

Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2 years ago[Clang][SVE] Fix windows test breakage in 26f56438e3dab44cea4c8f16d4cb16e9424b02c6
Bradley Smith [Thu, 18 Nov 2021 16:50:16 +0000 (16:50 +0000)]
[Clang][SVE] Fix windows test breakage in 26f56438e3dab44cea4c8f16d4cb16e9424b02c6

2 years agoUnbreak test after D111899
Adrian Prantl [Thu, 18 Nov 2021 16:51:40 +0000 (08:51 -0800)]
Unbreak test after D111899

2 years ago[LoopVectorize] Check the number of uses of an FAdd before classifying as ordered
Kerry McLaughlin [Tue, 16 Nov 2021 16:30:54 +0000 (16:30 +0000)]
[LoopVectorize] Check the number of uses of an FAdd before classifying as ordered

checkOrderedReductions looks for Phi nodes which can be classified as in-order,
meaning they can be vectorised without unsafe math. In order to vectorise the
reduction it should also be classified as in-loop by getReductionOpChain, which
checks that the reduction has two uses.

In this patch, a similar check is added to checkOrderedReductions so that we
now return false if there are more than two uses of the FAdd instruction.
This fixes PR52515.

Reviewed By: fhahn, david-arm

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

2 years ago[flang][CodeGen] Transform `fir.field_index` to a sequence of LLVM MLIR
Andrzej Warzynski [Tue, 16 Nov 2021 08:36:05 +0000 (08:36 +0000)]
[flang][CodeGen] Transform `fir.field_index` to a sequence of LLVM MLIR

This patch extends the `FIRToLLVMLowering` pass in Flang by adding a
hook to transform `fir.field_index` to a sequence of LLVM MLIR
instructions.

This is part of the upstreaming effort from the `fir-dev` branch in [1].

[1] https://github.com/flang-compiler/f18-llvm-project

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

Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
2 years ago[MLIR][GPU] Add target arguments to SerializeToHsaco
Krzysztof Drewniak [Wed, 17 Nov 2021 23:56:35 +0000 (23:56 +0000)]
[MLIR][GPU] Add target arguments to SerializeToHsaco

Compiling code for AMD GPUs requires knowledge of which chipset is
being targeted, especially if the code uses chipset-specific
intrinsics (which is the case in a downstream convolution generator).
This commit adds `target`, `chipset` and `features` arguments to the
SerializeToHsaco constructor to enable passing in this required
information.

It also amends the ROCm integration tests to pass in the target
chipset, which is set to the chipset of the first GPU on the system
executing the tests.

Reviewed By: mehdi_amini

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

2 years ago[mlir][doc] Rename doc to match previous name
Jacques Pienaar [Thu, 18 Nov 2021 16:23:49 +0000 (08:23 -0800)]
[mlir][doc] Rename doc to match previous name

Previous change inadvertently changed link.

2 years ago[libunwind] Add an interface for dynamic .eh_frame registration
Peter S. Housel [Thu, 14 Oct 2021 20:31:05 +0000 (13:31 -0700)]
[libunwind] Add an interface for dynamic .eh_frame registration

The libgcc runtime library provides __register_frame and
__deregister_frame functions, which can be used by dynamic code
generators to register an .eh_frame section, which contains one or
more Call Frame Information records, each consisting of a Common
Information Entry record followed by one or more Frame Description
Entry records. This libunwind library also provides __register_frame
and __deregister_frame functions, but they are aliases for
__unw_add_dynamic_fde and __unw_remove_dynamic_fde and thus can only
take a single FDE.

This patch adds __unw_add_dynamic_eh_frame_section and
__unw_remove_dynamic_eh_frame_section functions which explicitly use
the .eh_frame format. Clients such as the ORCv2 platform and runtime
can check for these functions and use them if unwinding is being
provided by libunwind, or fall back to __register_frame and
__deregister_frame if unwinding is provided by libgcc.

Reviewed By: lhames

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

2 years ago[AMDGPU] Regenerate test checks in splitkit-getsubrangeformask.ll
Jay Foad [Thu, 18 Nov 2021 15:51:23 +0000 (15:51 +0000)]
[AMDGPU] Regenerate test checks in splitkit-getsubrangeformask.ll

2 years ago[libc++] Minor fixups in the new introsort code.
Arthur O'Dwyer [Thu, 18 Nov 2021 03:26:59 +0000 (22:26 -0500)]
[libc++] Minor fixups in the new introsort code.

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

2 years ago[Clang][SVE] Properly enable/disable dependant SVE target features based upon +(no...
Bradley Smith [Fri, 12 Nov 2021 11:18:54 +0000 (11:18 +0000)]
[Clang][SVE] Properly enable/disable dependant SVE target features based upon +(no)sve.* options

Co-authored-by: Graham Hunter <graham.hunter@arm.com>
Differential Revision: https://reviews.llvm.org/D113776

2 years agoCoro: Remove coro_end and coro_suspend_retcon in private unprocessed functions
Arnold Schwaighofer [Tue, 16 Nov 2021 18:57:06 +0000 (10:57 -0800)]
Coro: Remove coro_end and coro_suspend_retcon in private  unprocessed functions

We might emit functions that are private and never called. The coro
split pass only processes functions that might be called. Remove
intrinsics that we can't generate code for.

rdar://84619859

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

2 years ago[libunwind][AIX] Mark signal_frame.pass.cpp UNSUPPORTED on AIX
Xing Xue [Thu, 18 Nov 2021 15:24:58 +0000 (10:24 -0500)]
[libunwind][AIX] Mark signal_frame.pass.cpp UNSUPPORTED on AIX

Summary:
This patch marks libunwind test case signal_frame.pass.cpp as UNSUPPORTED on AIX because the AIX assembler does not support CFI directives.

Reviewed by: danielkiss, MaskRay, ldionne, libunwind

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

2 years ago[clang][clangd] Improve signature help for variadic functions.
Adam Czachorowski [Wed, 6 Oct 2021 16:50:13 +0000 (18:50 +0200)]
[clang][clangd] Improve signature help for variadic functions.

This covers both C-style variadic functions and template variadic w/
parameter packs.

Previously we would return no signatures when working with template
variadic functions once activeParameter reached the position of the
parameter pack (except when it was the only param, then we'd still
show it when no arguments were given). With this commit, we now show
signathure help correctly.

Additionally, this commit fixes the activeParameter value in LSP output
of clangd in the presence of variadic functions (both kinds). LSP does
not allow the activeParamter to be higher than the number of parameters
in the active signature. With "..." or parameter pack being just one
argument, for all but first argument passed to "..." we'd report
incorrect activeParameter value. Clients such as VSCode would then treat
it as 0, as suggested in the spec) and highlight the wrong parameter.

In the future, we should add support for per-signature activeParamter
value, which exists in LSP since 3.16.0. This is not part of this
commit.

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

2 years ago[flang][nfc] Remove trailing whitespaces from tests
Andrzej Warzynski [Thu, 18 Nov 2021 14:22:18 +0000 (14:22 +0000)]
[flang][nfc] Remove trailing whitespaces from tests

2 years ago[flang][codegen] Add `fir.end` conversion placeholder
Andrzej Warzynski [Fri, 5 Nov 2021 16:04:23 +0000 (16:04 +0000)]
[flang][codegen] Add `fir.end` conversion placeholder

This patch extends the FIRToLLVMLowering pass in Flang by adding a hook
to transform fir.end. This is just a placeholder for now as fir.end is
not required yet.

This is part of the upstreaming effort from the `fir-dev` branch in [1].

[1] https://github.com/flang-compiler/f18-llvm-project

Patch originally written by:
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Differential Revision: https://reviews.llvm.org/D113295

2 years ago[LV] Add basic check lines to test added in 00200dbda31674e59.
Florian Hahn [Thu, 18 Nov 2021 14:08:57 +0000 (14:08 +0000)]
[LV] Add basic check lines to test added in 00200dbda31674e59.

2 years ago[lldb] (Partially) enable formatting of utf strings before the program is started
Pavel Labath [Wed, 3 Nov 2021 12:43:33 +0000 (13:43 +0100)]
[lldb] (Partially) enable formatting of utf strings before the program is started

The StringPrinter class was using a Process instance to read memory.
This automatically prevented it from working before starting the
program.

This patch changes the class to use the Target object for reading
memory, as targets are always available. This required moving
ReadStringFromMemory from Process to Target.

This is sufficient to make frame/target variable work, but further
changes are necessary for the expression evaluator. Preliminary analysis
indicates the failures are due to the expression result ValueObjects
failing to provide an address, presumably because we're operating on
file addresses before starting. I haven't looked into what would it take
to make that work.

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

2 years ago[clang] Remove CLANG_ROUND_TRIP_CC1_ARGS and always roundtrip in +assert builds
Nico Weber [Wed, 17 Nov 2021 21:32:33 +0000 (16:32 -0500)]
[clang] Remove CLANG_ROUND_TRIP_CC1_ARGS and always roundtrip in +assert builds

This removes the ability to disable roundtripping in assert builds.
(Roundtripping happens by default in assert builds both before and after
this patch.)

The CLANG_ROUND_TRIP_CC1_ARGS was added as an escape hatch 9 months ago
in https://reviews.llvm.org/D97462, with a FIXME to remove it eventually.
It's probably time to remove it.

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

2 years ago[fir] Add tests for mlir::ComplexType conversion
Diana Picus [Mon, 15 Nov 2021 11:46:34 +0000 (11:46 +0000)]
[fir] Add tests for mlir::ComplexType conversion

It turns out that mlir::ComplexType is translated the same way with or
without a conversion in TypeConverter.h. Add tests to make sure this
doesn't change in the future.

This patch is part of the upstreaming effort from fir-dev.

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

2 years ago[lldb] Convert internal platform usages GetSupportedArchitectures
Pavel Labath [Wed, 17 Nov 2021 20:13:56 +0000 (21:13 +0100)]
[lldb] Convert internal platform usages GetSupportedArchitectures

2 years ago[Flang] Notify conversion failure for Proc ops, types
Kiran Chandramohan [Thu, 18 Nov 2021 11:26:53 +0000 (11:26 +0000)]
[Flang] Notify conversion failure for Proc ops, types

Add the FIR to LLVM conversion patterns for the BoxProcHostOp, EmboxProcOp,
and UnboxProcOp ops and the boxproc type. These are currently unimplemented.
Implementation will come at a later time when support for Fortran 2003
procedure pointer feature is added.

Reviewed By: clementval, rovka

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

Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
2 years ago[LV] Add test case for PR52024.
Florian Hahn [Thu, 18 Nov 2021 12:10:44 +0000 (12:10 +0000)]
[LV] Add test case for PR52024.

This patch adds a reduced version of the test case from PR52024.

Together with 764d9aa97905 the test causes a crash, because LV expands a
SCEV expression during code generation, when the dominator tree is not
up-to-date.

2 years ago[AArch64][RISCV] Fix expected smulo/umulo test output
Fraser Cormack [Thu, 18 Nov 2021 11:53:16 +0000 (11:53 +0000)]
[AArch64][RISCV] Fix expected smulo/umulo test output

These tests were introduced in D109809 which I pushed on behalf of
@tangxingxin1008. I must have not understood the correct arcanist
workflow for this and as such may have locally tested a stale build.

This patch fixes the issue by re-running update_llc_test_checks.py on
all four tests.

2 years ago[clang][lex] Refactor check for the first file include
Jan Svoboda [Thu, 18 Nov 2021 11:34:54 +0000 (12:34 +0100)]
[clang][lex] Refactor check for the first file include

This patch refactors the code that checks whether a file has just been included for the first time.

The `HeaderSearch::FirstTimeLexingFile` function is removed and the information is threaded to the original call site from `HeaderSearch::ShouldEnterIncludeFile`. This will make it possible to avoid tracking the number of includes in a follow up patch.

Depends on D114092.

Reviewed By: dexonsmith

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

2 years ago[clang][lex] NFC: Remove unused HeaderFileInfo member
Jan Svoboda [Thu, 18 Nov 2021 11:32:25 +0000 (12:32 +0100)]
[clang][lex] NFC: Remove unused HeaderFileInfo member

This patch removes `HeaderFileInfo::isNonDefault`, which is not being used anywhere.

Reviewed By: dexonsmith, vsapsai

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

2 years ago[clang][deps] Don't emit `-fmodule-map-file=`
Jan Svoboda [Thu, 18 Nov 2021 11:22:55 +0000 (12:22 +0100)]
[clang][deps] Don't emit `-fmodule-map-file=`

During explicit modules build, when all modules are provided via `-fmodule-file=<path>` and implicit modules and implicit module maps are disabled (`-fno-implicit-modules`, `-fno-implicit-module-maps`), we don't need to load the original module map files at all. This patch stops emitting the `-fmodule-map-file=` arguments we don't need, saving some compilation time due to avoiding parsing such module maps and making the command line shorter.

Reviewed By: bnbarham

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

2 years ago[AArch64][ARM] Enablement of Cortex-A710 Support
Mubashar Ahmad [Thu, 14 Oct 2021 14:21:42 +0000 (15:21 +0100)]
[AArch64][ARM] Enablement of Cortex-A710 Support

Phabricator review: https://reviews.llvm.org/D113256

2 years ago[clang][modules] NFC: Fix typo in test name
Jan Svoboda [Thu, 18 Nov 2021 10:56:42 +0000 (11:56 +0100)]
[clang][modules] NFC: Fix typo in test name

2 years ago[docs] Update outdated mentions of lab.llvm.org:8011.
Florian Hahn [Thu, 18 Nov 2021 10:51:47 +0000 (10:51 +0000)]
[docs] Update outdated mentions of lab.llvm.org:8011.

Some places were still referring to the outdated buildbot URL
http://lab.llvm.org:8011. Update those to use the new URL
http://lab.llvm.org/buildbot/#.

2 years ago[docs] Remove mention of retired smooshlab IRC bot.
Florian Hahn [Thu, 18 Nov 2021 10:45:16 +0000 (10:45 +0000)]
[docs] Remove mention of retired smooshlab IRC bot.

the smooshlab bot has been offline for years. Remove it from the list of
IRC bots.

2 years ago[TargetLowering][RISCV] Fixed a scalable vector issue when lowering [s|u]mul.overflow...
Eric Tang [Thu, 18 Nov 2021 09:30:38 +0000 (09:30 +0000)]
[TargetLowering][RISCV] Fixed a scalable vector issue when lowering [s|u]mul.overflow intrinsics

    Fixed the vector type issue that where we used getVectorNumElements()
    should be replaced by getVectorElementCount() when lowering these
    intrinsics.

    This is similar to D94149

Signed-off-by: Eric Tang <tangxingxin1008@gmail.com>
Reviewed By: craig.topper, frasercrmck

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

2 years agoRemove non-affecting module maps from PCM files.
Ilya Kuteev [Thu, 18 Nov 2021 09:55:57 +0000 (10:55 +0100)]
Remove non-affecting module maps from PCM files.

Problem:
PCM file includes references to all module maps used in compilation which created PCM. This problem leads to PCM-rebuilds in distributed compilations as some module maps could be missing in isolated compilation. (For example in our distributed build system we create a temp folder for every compilation with only modules and headers that are needed for that particular command).

Solution:
Add only affecting module map files to a PCM-file.

Reviewed By: rsmith

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

2 years ago[fir] Add fir.embox conversion
Valentin Clement [Thu, 18 Nov 2021 10:05:45 +0000 (11:05 +0100)]
[fir] Add fir.embox conversion

Convert a `fir.embox` operation to LLVM IR dialect.
A `fir.embox` is converted to a sequence of operation that
create, allocate if needed, and populate a descriptor.

Current limitiation: alignment is set by default but should be retrieved in the specific target.

This patch is part of the upstreaming effort from fir-dev branch.

Reviewed By: kiranchandramohan, awarzynski

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

Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
2 years ago[CodeGen][SVE] Add missing isel patterns for vector_reverse
David Sherwood [Wed, 17 Nov 2021 14:41:46 +0000 (14:41 +0000)]
[CodeGen][SVE] Add missing isel patterns for vector_reverse

We were missing patterns for vector_reverse of unpacked FP vector
types, as well as all the supported bfloat vectors.

Tests added here:

  CodeGen/AArch64/named-vector-shuffle-reverse-sve.ll

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

2 years ago[SCEV] Reorder operands checks in collectConditions.
Florian Hahn [Thu, 18 Nov 2021 09:36:16 +0000 (09:36 +0000)]
[SCEV] Reorder operands checks in collectConditions.

The initial two cases require a SCEVConstant as RHS. Pull up the condition
to check and swap SCEVConstants from below. Also remove a redundant
check & swap if RHS is SCEVUnknown.

2 years ago[SCEV] Add additional guard tests with swapped condition ops.
Florian Hahn [Thu, 18 Nov 2021 09:35:18 +0000 (09:35 +0000)]
[SCEV] Add additional guard tests with swapped condition ops.

2 years ago[NFC][clangd] fix clang-tidy finding on isa_and_nonnull
Christian Kühnel [Mon, 15 Nov 2021 15:25:12 +0000 (15:25 +0000)]
[NFC][clangd] fix clang-tidy finding on isa_and_nonnull

This is a cleanup of the only llvm-prefer-isa-or-dyn-cast-in-conditionals finding in the clangd code base. This patch was created by automatically applying the fixes from clang-tidy.

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

2 years ago[PowerPC] fix typos in comments, NFC
Chen Zheng [Thu, 18 Nov 2021 08:55:23 +0000 (08:55 +0000)]
[PowerPC] fix typos in comments, NFC

2 years ago[fir] Add fir.constc conversion
Diana Picus [Tue, 16 Nov 2021 09:07:51 +0000 (09:07 +0000)]
[fir] Add fir.constc conversion

Add the codegen for fir.constc.

This patch is part of the upstreaming effort from fir-dev.

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

Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
2 years ago[mlir][Python] Fix generation of accessors for Optional
Michal Terepeta [Thu, 18 Nov 2021 08:41:57 +0000 (09:41 +0100)]
[mlir][Python] Fix generation of accessors for Optional

Previously, in case there was only one `Optional` operand/result within
the list, we would always return `None` from the accessor, e.g., for a
single optional result we would generate:

```
return self.operation.results[0] if len(self.operation.results) > 1 else None
```

But what we really want is to return `None` only if the length of
`results` is smaller than the total number of element groups (i.e.,
the optional operand/result is in fact missing).

This commit also renames a few local variables in the generator to make
the distinction between `isVariadic()` and `isVariableLength()` a bit
more clear.

Reviewed By: ftynse

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

2 years agoFix Windows build after commit 49682f1.
Douglas Yung [Thu, 18 Nov 2021 08:23:22 +0000 (00:23 -0800)]
Fix Windows build after commit 49682f1.

2 years ago[mlir][linalg][bufferize] Fix bufferize bug where non-tensor ops are not skipped
Matthias Springer [Thu, 18 Nov 2021 07:18:54 +0000 (16:18 +0900)]
[mlir][linalg][bufferize] Fix bufferize bug where non-tensor ops are not skipped

`BufferizableOpInterface::bufferize` will only be called on ops that
have tensor operands and/or results.

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

2 years ago[mlir][linalg][bufferize][NFC] Decouple ComprehensiveBufferize from tensor dialect
Matthias Springer [Thu, 18 Nov 2021 07:10:10 +0000 (16:10 +0900)]
[mlir][linalg][bufferize][NFC] Decouple ComprehensiveBufferize from tensor dialect

Add a new BufferizableOpInterface method `isNotConflicting` that can be used to implement custom analysis rules.

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

2 years ago[mlir] Convert NamedAttribute to be a class
River Riddle [Thu, 18 Nov 2021 05:23:32 +0000 (05:23 +0000)]
[mlir] Convert NamedAttribute to be a class

NamedAttribute is currently represented as an std::pair, but this
creates an extremely clunky .first/.second API. This commit
converts it to a class, with better accessors (getName/getValue)
and also opens the door for more convenient API in the future.

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

2 years ago[libc++] [test] Add "robust_re_difference_type.compile.pass.cpp" for all the algorithms.
Arthur O'Dwyer [Mon, 15 Nov 2021 15:00:07 +0000 (10:00 -0500)]
[libc++] [test] Add "robust_re_difference_type.compile.pass.cpp" for all the algorithms.

Also, mark these tests as compile-only. They actually are safe to run — notice that
the code "runs" at constexpr-time in C++20, without error — because both of the
input ranges are entirely filled with nullptr, so no matter how you shuffle the
elements, they remain sorted and partitioned and heapified and everything.
But there's no real reason to run them at runtime, so let's just avoid the distraction.

Test cases that fail in trunk right now are commented out with `TODO FIXME`.

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

2 years ago[X86][Driver] Add X86 target option to avoid fail to other targets. NFC
Phoebe Wang [Thu, 18 Nov 2021 04:37:36 +0000 (12:37 +0800)]
[X86][Driver] Add X86 target option to avoid fail to other targets. NFC

2 years ago[X86][ABI] Do not return float/double from x87 registers when x87 is disabled
Phoebe Wang [Thu, 18 Nov 2021 03:24:31 +0000 (11:24 +0800)]
[X86][ABI] Do not return float/double from x87 registers when x87 is disabled

This is aligned with GCC's behavior.
Also, alias `-mno-fp-ret-in-387` to `-mno-x87`, by which we can fix pr51498.

Reviewed By: nickdesaulniers

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

2 years ago[gn build] Port 92832e4889ae
LLVM GN Syncbot [Thu, 18 Nov 2021 04:03:38 +0000 (04:03 +0000)]
[gn build] Port 92832e4889ae