platform/upstream/llvm.git
16 months ago[InstCombine] Canonicalize icmp eq pow2 more thoroughly
Nikita Popov [Wed, 15 Mar 2023 15:40:59 +0000 (16:40 +0100)]
[InstCombine] Canonicalize icmp eq pow2 more thoroughly

We currently already canonicalize icmp eq (%x & Pow2), Pow2 to
icmp ne (%x & Pow2), 0. This patch generalizes the fold based on
known bits.

In particular, this allows us to handle comparisons against
!range !{i64 0, i64 2} loads, which addresses an optimization
regression in Rust caused by 8df376db7282b955e7990cb8887ee9dcd3565040.

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

16 months ago[clang-tidy] Correctly handle evaluation order of designated initializers.
Martin Braenne [Thu, 16 Mar 2023 07:33:49 +0000 (07:33 +0000)]
[clang-tidy] Correctly handle evaluation order of designated initializers.

As designated initializers show up only in the syntactic form of the
InitListExpr, we need to make sure we're searching both forms of the
InitListExpr when determining successors in the evaluation order.

This fixes a bug in bugprone-use-after-move where previously we erroneously
concluded that two designated initializers were unsequenced. The newly added
tests fail without the fix.

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

16 months ago[mlir][llvm] Add fastmathFlags to SelectOp
Jeff Niu [Fri, 10 Mar 2023 21:59:23 +0000 (13:59 -0800)]
[mlir][llvm] Add fastmathFlags to SelectOp

`select` has fastmath flags, which were missing from the LLVM dialect op
definition.

Reviewed By: ftynse, dcaballe, gysit

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

16 months ago[LoongArch] Emit bytepick for picking from concatenation of two values
WANG Xuerui [Thu, 16 Mar 2023 06:09:51 +0000 (14:09 +0800)]
[LoongArch] Emit bytepick for picking from concatenation of two values

It seems the ISA manual's pseudo-code description for the
`BYTEPICK.[WD]` instructions is inaccurate; the behavior described here
should be correct though. The instructions' names are misleading too
(they pick full GRLen-wide words instead of bytes; they just index by
bytes) but let's stick to the official names for now.

Reviewed By: SixWeining

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

16 months ago[LoongArch] Add baseline tests for `bytepick` codegen. NFC
WANG Xuerui [Thu, 16 Mar 2023 05:33:50 +0000 (13:33 +0800)]
[LoongArch] Add baseline tests for `bytepick` codegen. NFC

Reviewed By: SixWeining

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

16 months ago[mlir] Fix scf.for with signless iterations print/parse
Jacques Pienaar [Thu, 16 Mar 2023 06:12:17 +0000 (02:12 -0400)]
[mlir] Fix scf.for with signless iterations print/parse

There was accidentally a different form used for printing and parsing.

16 months agoUse *{Map,Set}::contains (NFC)
Kazu Hirata [Thu, 16 Mar 2023 05:55:35 +0000 (22:55 -0700)]
Use *{Map,Set}::contains (NFC)

16 months ago[LSAN][HWASAN] Turn on leak sanitizer in HWASAN for Linux
Kirill Stoimenov [Thu, 16 Mar 2023 05:45:03 +0000 (05:45 +0000)]
[LSAN][HWASAN] Turn on leak sanitizer in HWASAN for Linux

Reviewed By: vitalybuka

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

16 months ago[HWASAN] Fix a memory leak in realloc-test.cpp
Kirill Stoimenov [Thu, 16 Mar 2023 05:42:02 +0000 (05:42 +0000)]
[HWASAN] Fix a memory leak in realloc-test.cpp

Reviewed By: vitalybuka

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

16 months ago[RISCV][NFC] Add more floating point tests for SLP vectorization
Ben Shi [Wed, 15 Mar 2023 01:39:31 +0000 (09:39 +0800)]
[RISCV][NFC] Add more floating point tests for SLP vectorization

Reviewed By: reames

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

16 months ago[RISCV][NFC] Add tests for SLP vectorization of smin/smax/umin/umax
Ben Shi [Tue, 14 Mar 2023 07:26:35 +0000 (15:26 +0800)]
[RISCV][NFC] Add tests for SLP vectorization of smin/smax/umin/umax

Reviewed By: reames

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

16 months ago[libc][docs] Add a section about allocations and deallocations to the style doc.
Siva Chandra Reddy [Wed, 15 Mar 2023 07:29:59 +0000 (00:29 -0700)]
[libc][docs] Add a section about allocations and deallocations to the style doc.

Fixes #59277 - The main part of that bug has already been addressed. This commit
just adds documentation.

Reviewed By: jeffbailey

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

16 months ago[libc][docs] Move the link to "Compiler Support" under "Status".
Siva Chandra Reddy [Wed, 15 Mar 2023 05:52:53 +0000 (22:52 -0700)]
[libc][docs] Move the link to "Compiler Support" under "Status".

Also, fixed a minor typo in compiler_support.rst.

Reviewed By: jeffbailey, gchatelet

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

16 months agoThe test added in d8690bc requires ZLIB, so only run the test if LLVM_ENABLE_ZLIB...
Douglas Yung [Thu, 16 Mar 2023 03:19:23 +0000 (20:19 -0700)]
The test added in d8690bc requires ZLIB, so only run the test if LLVM_ENABLE_ZLIB is set.

This will fix buildbots that fail because they do not have ZLIB installed such as
https://lab.llvm.org/buildbot/#/builders/216/builds/18424

16 months ago[libc] Add missing return statements to wrapper functions
Joseph Huber [Thu, 16 Mar 2023 03:15:38 +0000 (22:15 -0500)]
[libc] Add missing return statements to wrapper functions

Summary:
I forgot to add return statements to these memory comparison functions.
This should hopefully resolve some BB errors.

16 months ago[RISCV]Optimize (riscvisd::select_cc x, 0, ne, x, 1)
LiaoChunyu [Thu, 16 Mar 2023 02:38:51 +0000 (10:38 +0800)]
[RISCV]Optimize (riscvisd::select_cc x, 0, ne, x, 1)

This patch reduces the number of unpredictable branches.

Reviewed By: craig.topper

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

16 months ago[libc] Do not attempt to determine CPU features in GPU mode
Joseph Huber [Thu, 16 Mar 2023 01:44:00 +0000 (20:44 -0500)]
[libc] Do not attempt to determine CPU features in GPU mode

Summary:
We don't use these features in the GPU build, trying to determine them
can cause errors. We should just return early if this is the case.

16 months ago[Clang][LoongArch] Implement patchable function entry
WANG Xuerui [Wed, 15 Mar 2023 09:12:48 +0000 (17:12 +0800)]
[Clang][LoongArch] Implement patchable function entry

Similar to D98610 for RISCV.

This is going to be required by the upcoming Linux/LoongArch
[[ https://git.kernel.org/linus/4733f09d88074 | support for dynamic ftrace ]].

Reviewed By: SixWeining, MaskRay

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

16 months ago[libc] Add aliases to C memory functions for integration tests
Joseph Huber [Wed, 15 Mar 2023 23:16:51 +0000 (18:16 -0500)]
[libc] Add aliases to C memory functions for integration tests

The integration tests require the C memory functions as the compiler may
emit calls to them directly. The tests normally use the `__internal__`
variant that is built for testing, but these memory functions were
linked directly to preserve the entrypoint. Instead, we forward delcare
the internal versions and map the entrypoints to them manually inside
the integration test. This allows us to use the internal versions of
these files like the rest of the test objects.

Reviewed By: sivachandra

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

16 months ago[clang] Use *{Map,Set}::contains (NFC)
Kazu Hirata [Thu, 16 Mar 2023 01:06:34 +0000 (18:06 -0700)]
[clang] Use *{Map,Set}::contains (NFC)

16 months ago[llvm] Use *{Map,Set}::contains (NFC)
Kazu Hirata [Thu, 16 Mar 2023 01:06:32 +0000 (18:06 -0700)]
[llvm] Use *{Map,Set}::contains (NFC)

16 months ago[Lex] Use false instead of 0 (NFC)
Kazu Hirata [Thu, 16 Mar 2023 01:06:31 +0000 (18:06 -0700)]
[Lex] Use false instead of 0 (NFC)

16 months ago[llvm-profdata] Add more unit tests to check --output-size-limit feature when compres...
William Huang [Tue, 21 Feb 2023 23:08:08 +0000 (23:08 +0000)]
[llvm-profdata] Add more unit tests to check --output-size-limit feature when compression is enabled

Add unit tests for ExtBinary format with compression. This patch doesn't imply there's a bug in the existing implementation,
but as a precaution that planned changes to SampleProfileReader may cause it to break.

Reviewed By: snehasish

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

16 months ago[scudo] Add a method to force release everything.
Christopher Ferris [Tue, 14 Mar 2023 20:27:32 +0000 (13:27 -0700)]
[scudo] Add a method to force release everything.

The force flag to releaseToOSMaybe does not release everything
since it is an expensive operation. Modify the release flag to
have three states: normal, force, forceall. Force behaves the same
as setting Force to true from before this change. Forceall will
release everything regardless of how much time it takes, or
how much there is to release.

In addition, add a new mallopt that will call the release function
with the forceall flag set.

Reviewed By: Chia-hungDuan

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

16 months ago[ADT][mlir] Fix gcc build error
Jakub Kuderski [Thu, 16 Mar 2023 00:22:35 +0000 (20:22 -0400)]
[ADT][mlir] Fix gcc build error

Add `template` to fix a buildbot:
https://lab.llvm.org/buildbot/#/builders/199/builds/18363.

This is a post-commit fix for https://reviews.llvm.org/D144503,
submitted as a0a76804c4b5.

16 months agoAdd a Debugger interruption mechanism in conjunction with the
Jim Ingham [Wed, 15 Mar 2023 18:20:20 +0000 (11:20 -0700)]
Add a Debugger interruption mechanism in conjunction with the
Command Interpreter mechanism.

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

16 months ago[ADT] Allow `llvm::enumerate` to enumerate over multiple ranges
Jakub Kuderski [Wed, 15 Mar 2023 23:34:21 +0000 (19:34 -0400)]
[ADT] Allow `llvm::enumerate` to enumerate over multiple ranges

This does not work by a mere composition of `enumerate` and `zip_equal`,
because C++17 does not allow for recursive expansion of structured
bindings.

This implementation uses `zippy` to manage the iteratees and adds the
stream of indices as the first zipped range. Because we have an upfront
assertion that all input ranges are of the same length, we only need to
check if the second range has ended during iteration.

As a consequence of using `zippy`, `enumerate` will now follow the
reference and lifetime semantics of the `zip*` family of functions. The
main difference is that `enumerate` exposes each tuple of references
through a new tuple-like type `enumerate_result`, with the familiar
`.index()` and `.value()` member functions.

Because the `enumerate_result` returned on dereference is a
temporary, enumeration result can no longer be used through an
lvalue ref.

Reviewed By: dblaikie, zero9178

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

16 months ago[Clang][AIX][p] Manually Claim -p in front end
Michael Francis [Wed, 1 Mar 2023 00:56:06 +0000 (00:56 +0000)]
[Clang][AIX][p] Manually Claim -p in front end

The current implementation of `-p` does not claim the argument once it
is passed. Since it pushes `-pg` directly, it is only ever referred to
again when linking. As a result, when compiling with `-S`, the compiler
warns that `-p` goes unused even though that is not the case.

With this patch, if both `-p` and `-pg` are passed, the argument that is
passed second will take precedence. `-p` will still throw an error on
unsupported platforms, regardless of precedence.

This revision includes a test case, which has been placed in
`clang/test/Driver/zos-profiling-error.c`. As a result,
`zos-profiling-error.c` has been renamed to `ibm-profiling.c`. This
revision also passes `clang/test/Driver/aix-ld.c`.

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

16 months ago[lldb] Update PythonDataObjectsTests for new exception formatting
Jonas Devlieghere [Wed, 15 Mar 2023 22:44:17 +0000 (15:44 -0700)]
[lldb] Update PythonDataObjectsTests for new exception formatting

PythonDataObjectsTest.TestExceptions started failing because the output
of the python traceback printers is now consistent between python and
cpython [1]. Work around the issue by supporting both variants.

Thanks to Ismail for identifying the root cause.

[1] https://github.com/python/cpython/issues/85203

16 months ago[libc][NFC] Clean up clang-tidy warnings for `src/__support` and `src/math`.
Tue Ly [Tue, 14 Mar 2023 14:50:02 +0000 (10:50 -0400)]
[libc][NFC] Clean up clang-tidy warnings for `src/__support` and `src/math`.

Clean up some warnings from running libc-lint for these folders.

Reviewed By: michaelrj, sivachandra

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

16 months agoConstantFolding: Minor cleanups for is_fpclass
Matt Arsenault [Wed, 15 Mar 2023 15:14:49 +0000 (11:14 -0400)]
ConstantFolding: Minor cleanups for is_fpclass

16 months agoRevert "[RISCV] Enable interleaved access vectorization"
Luke Lau [Wed, 15 Mar 2023 22:00:48 +0000 (22:00 +0000)]
Revert "[RISCV] Enable interleaved access vectorization"

This reverts commit acc03ad10af4f379a644e3956cb9aca54e40696c.

16 months ago[RISCV] Enable interleaved access vectorization
Luke Lau [Thu, 9 Mar 2023 16:18:28 +0000 (16:18 +0000)]
[RISCV] Enable interleaved access vectorization

The loop vectorizer supports generating interleaved loads and stores via
shuffle patterns for fixed length vectors.
This enables it for RISC-V, since interleaved shuffle patterns can be
lowered to vlseg/vsseg in https://reviews.llvm.org/D145022

Reviewed By: reames

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

16 months ago[Clang][Sema] Fix incorrect deletion of default constructors for some unions
Roy Jacobson [Sat, 11 Mar 2023 16:40:44 +0000 (18:40 +0200)]
[Clang][Sema] Fix incorrect deletion of default constructors for some unions

If a union has explicit initializers for some members, we shouldn't delete
its default constructor.
Fixes https://github.com/llvm/llvm-project/issues/48416.

Reviewed By: erichkeane

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

16 months ago[AArch64] Add hex comments to mov-imm spellings in the InstPrinter
Jon Roelofs [Wed, 15 Mar 2023 00:10:05 +0000 (17:10 -0700)]
[AArch64] Add hex comments to mov-imm spellings in the InstPrinter

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

16 months agoRevert "[AArch64] Add hex comments to mov-imm spellings in the InstPrinter"
Jon Roelofs [Wed, 15 Mar 2023 21:21:08 +0000 (14:21 -0700)]
Revert "[AArch64] Add hex comments to mov-imm spellings in the InstPrinter"

This reverts commit 1def3141135c072a1d3e51e82e113dd67b0def97.

16 months ago[AArch64] Add hex comments to mov-imm spellings in the InstPrinter
Jon Roelofs [Wed, 15 Mar 2023 00:10:05 +0000 (17:10 -0700)]
[AArch64] Add hex comments to mov-imm spellings in the InstPrinter

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

16 months ago[AArch64] Change GeneratePerfectShuffle to return one destination operand for zip...
Zain Jaffal [Wed, 15 Mar 2023 20:47:53 +0000 (20:47 +0000)]
[AArch64] Change GeneratePerfectShuffle to return one destination operand for zip and transpose operations.

The tests added where crashing because zip instruction was returning two destination operands. ZIP according to arm returns only one destination operand.

Reviewed By: dmgreen, fhahn

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

16 months agoRevert "[lldb] Change dwim-print to default to disabled persistent results"
Dave Lee [Wed, 15 Mar 2023 20:59:46 +0000 (13:59 -0700)]
Revert "[lldb] Change dwim-print to default to disabled persistent results"

This reverts commit 8bad4ae679df6fc7dbd016dccbd3da34206e836b.

16 months ago[SCEV] Do not strengthen nuw/nsw flags during get[Zero,Sign]ExtendedExpr.
Florian Hahn [Wed, 15 Mar 2023 20:57:32 +0000 (20:57 +0000)]
[SCEV] Do not strengthen nuw/nsw flags during get[Zero,Sign]ExtendedExpr.

Modifying AddRecs when constructing other expressions can lead to
surprising changes. It also seems like it is not really beneficial i
most cases.

At the moment, there's a single regression, but we still might be able
to improve the flags at AddRec construction.

Might help with the issue discussed in D143409.

Reviewed By: mkazantsev

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

16 months ago[mlir][sparse] Modify the pivot selection method for quick sort.
bixia1 [Tue, 14 Mar 2023 23:05:54 +0000 (16:05 -0700)]
[mlir][sparse] Modify the pivot selection method for quick sort.

Previously, we choose the median of three values. We now choose the median of
five values when the number of values being sorted exceed a threshold
(currently 100). This is similar to std::sort.

Reviewed By: aartbik

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

16 months ago[lldb] Change dwim-print to default to disabled persistent results
Dave Lee [Wed, 8 Mar 2023 21:22:00 +0000 (13:22 -0800)]
[lldb] Change dwim-print to default to disabled persistent results

Change `dwim-print` to now disable persistent results by default, unless requested by
the user with the `--persistent-result` flag.

Ex:

```
(lldb) dwim-print 1 + 1
(int) 2
(lldb) dwim-print --persistent-result on -- 1 + 1
(int) $0 = 2
```

Users who wish to enable persistent results can make and use an alias that includes
`--persistent-result on`.

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

16 months agoReland [StandardInstrumentations] Check function analysis invalidation in module...
Arthur Eubanks [Wed, 15 Mar 2023 18:46:44 +0000 (11:46 -0700)]
Reland [StandardInstrumentations] Check function analysis invalidation in module passes as well

See comments for why we now need to pass in the MAM instead of the FAM.

Reviewed By: nikic

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

16 months agoRevert "[StandardInstrumentations] Check function analysis invalidation in module...
Arthur Eubanks [Wed, 15 Mar 2023 20:27:36 +0000 (13:27 -0700)]
Revert "[StandardInstrumentations] Check function analysis invalidation in module passes as well"

This reverts commit d6c0724eb158efcdcd4e31289dcb954a441c4939.

Breaks clang/flang builds.

16 months ago[StandardInstrumentations] Check function analysis invalidation in module passes...
Arthur Eubanks [Wed, 15 Mar 2023 18:46:44 +0000 (11:46 -0700)]
[StandardInstrumentations] Check function analysis invalidation in module passes as well

See comments for why we now need to pass in the MAM instead of the FAM.

Reviewed By: nikic

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

16 months ago[StandardInstrumentations] Verify function doesn't change if analyses are preserved
Arthur Eubanks [Tue, 14 Mar 2023 17:44:14 +0000 (10:44 -0700)]
[StandardInstrumentations] Verify function doesn't change if analyses are preserved

Reuse StructuralHash and allow it to be used in non-expensive checks builds.

Move PreservedAnalysisChecker further down StandardInstrumentations so other Instrumentations (e.g. printing) have a chance to run before PreservedAnalysisChecker crashes.

Reviewed By: nikic

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

16 months ago[StandardInstrumentations] Rename -verify-cfg-preserved -> -verify-analysis-invalidation
Arthur Eubanks [Tue, 14 Mar 2023 17:25:40 +0000 (10:25 -0700)]
[StandardInstrumentations] Rename -verify-cfg-preserved -> -verify-analysis-invalidation

In preparation for adding more checks under this flag.

Reviewed By: nikic

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

16 months ago[BOLT][NFC] Simplify preprocessProfile
Amir Ayupov [Wed, 15 Mar 2023 19:54:41 +0000 (12:54 -0700)]
[BOLT][NFC] Simplify preprocessProfile

Move out prepareToParse lambda, generalize it to handle mem events perf process.

Reviewed By: #bolt, rafauler

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

16 months ago[mlir][sparse] Updating `Merger::foreachTensorLoopId` to take `LatPointId`
wren romano [Tue, 14 Mar 2023 20:00:29 +0000 (13:00 -0700)]
[mlir][sparse] Updating `Merger::foreachTensorLoopId` to take `LatPointId`

Since all callsites of `foreachTensorLoopId` would simply look up the `LatPointId` to extract its `BitVector`, it's cleaner to let the `Merger` handle that instead.  This seems to better capture the intent of the `foreachTensorLoopId` method, and improves decoupling (since it removes a place that leaks the implementation detail that we use `BitVector`).

Reviewed By: aartbik

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

16 months ago[Dexter] Add a simple logging class to Dexter
Stephen Tozer [Tue, 28 Feb 2023 17:49:59 +0000 (17:49 +0000)]
[Dexter] Add a simple logging class to Dexter

Adds a basic logging class to Dexter that uses the existing PrettyOutput
class for printing and supports 3 levels of verbosity (note, warning,
error). Intended to consolidate the logging logic for Dexter into one
place, removing the need for conditional log statements and making it
easier for us later if we wish to use a more complete logging class.

Reviewed By: Orlando

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

16 months ago[gn build] Manually port d505d20
Zequan Wu [Wed, 15 Mar 2023 18:48:34 +0000 (14:48 -0400)]
[gn build] Manually port d505d20

16 months ago[MSVC][dllexport/dllimport] Propagate a dllexport/dllimport attribute to template...
Wolfgang Pieb [Wed, 15 Mar 2023 17:04:26 +0000 (10:04 -0700)]
[MSVC][dllexport/dllimport] Propagate a dllexport/dllimport attribute to template baseclass

For the Playstation platform, mimick MSVC in propagating dllexport/dllimport attributes
to an instantiated template base class.

Reviewed By: hans

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

16 months ago[Debugify/Strip] Fix returned PreservedAnalyses
Arthur Eubanks [Wed, 15 Mar 2023 18:45:25 +0000 (11:45 -0700)]
[Debugify/Strip] Fix returned PreservedAnalyses

16 months ago[WPD] Fix PreservedAnalyses value after runForTesting()
Arthur Eubanks [Wed, 15 Mar 2023 18:43:11 +0000 (11:43 -0700)]
[WPD] Fix PreservedAnalyses value after runForTesting()

16 months ago[wasm] Silence 'not all control paths return a value' warning when
Alexandre Ganea [Wed, 15 Mar 2023 18:19:55 +0000 (14:19 -0400)]
[wasm] Silence 'not all control paths return a value' warning when
building with MSVC on Windows

16 months ago[DebugInfo][MSF] Silence 'not all control paths return a value' warning
Alexandre Ganea [Wed, 15 Mar 2023 18:19:12 +0000 (14:19 -0400)]
[DebugInfo][MSF] Silence 'not all control paths return a value' warning
when building with MSVC on Windows

16 months ago[X86] lzcnt-cmp.ll - enable CMOV on 32-bit LZCNT tests
Simon Pilgrim [Wed, 15 Mar 2023 18:14:48 +0000 (18:14 +0000)]
[X86] lzcnt-cmp.ll - enable CMOV on 32-bit LZCNT tests

There are no 32-bit targets that have LZCNT but not CMOV, and this allows us to test the straight line i64 pattern - otherwise we're doing the same branchy code as the 32-bit BSR test

16 months ago[FuncSpec][NFC] Command line option renaming.
Alexandros Lamprineas [Fri, 3 Mar 2023 15:29:54 +0000 (15:29 +0000)]
[FuncSpec][NFC] Command line option renaming.

Standardize all options with 'funcspec' prefix and shorter abreviations.

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

16 months ago[clang][RISCV][test] Add test coverage for _Float16 ABI lowering
Alex Bradbury [Wed, 15 Mar 2023 17:59:15 +0000 (17:59 +0000)]
[clang][RISCV][test] Add test coverage for _Float16 ABI lowering

By the psABI, any test case where a FPR would be used for a float, it
should also be used if you replaced that float with a _Float16. This
doesn't hold true in current Clang for the special cases in the FP
calling convention involving structs. This patch doesn't attempt to fix
that, simply to add coverage. D145074 contains the fix.

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

16 months ago[mlir][memref] Fold subview into GPU subgroup MMA load/store ops
Lei Zhang [Wed, 15 Mar 2023 17:49:27 +0000 (17:49 +0000)]
[mlir][memref] Fold subview into GPU subgroup MMA load/store ops

This commits adds support for folding subview into GPU subgroup
MMA load/store ops.

Reviewed By: ThomasRaoux

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

16 months ago[DAG] Don't fold zext(logicalshift(zext(x),c)) -> logicalshift(zext(x),c) if the...
Simon Pilgrim [Wed, 15 Mar 2023 17:43:56 +0000 (17:43 +0000)]
[DAG] Don't fold zext(logicalshift(zext(x),c)) -> logicalshift(zext(x),c) if the outer zext is free

Avoid widening the shift to a bigger type if the zext would be free anyway

Pulled out of D146121

16 months ago[DWARFLinkerParallel] add AddressesMap interface.
Alexey Lapshin [Wed, 15 Mar 2023 15:30:21 +0000 (16:30 +0100)]
[DWARFLinkerParallel] add AddressesMap interface.

This patch is extracted from D96035. It adds AddressesMap map interface
to the DWARFLinkerParallel library. This interface mostly match with the
paired interface from the DWARFLinker library, except that it does
not depend on DIEInfo class.

Reviewed By: JDevlieghere

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

16 months ago[Inliner] Assign dummy debug location to the memcpy for byval argument
Yuanfang Chen [Wed, 15 Mar 2023 17:14:58 +0000 (10:14 -0700)]
[Inliner] Assign dummy debug location to the memcpy for byval argument

A similar fix to D133095.

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

Reviewed By: aprantl

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

16 months ago[libc++] Fixes accidental CI breakage.
Mark de Wever [Wed, 15 Mar 2023 17:30:02 +0000 (18:30 +0100)]
[libc++] Fixes accidental CI breakage.

16 months ago[MSAN] Replace another open-coded convertToBool instance [nfc]
Philip Reames [Wed, 15 Mar 2023 17:15:17 +0000 (10:15 -0700)]
[MSAN] Replace another open-coded convertToBool instance [nfc]

Note that getCleanShadow always returns Constant::getNullValue so the prior code is equivalent to convertToBool.

16 months ago[MSAN] Inline getShadowTyNoVec into convertShadowToScalar [nfc]
Philip Reames [Wed, 15 Mar 2023 17:10:00 +0000 (10:10 -0700)]
[MSAN] Inline getShadowTyNoVec into convertShadowToScalar [nfc]

This is an implementation detail of the flattening scheme, so hide it in the implementation thereof.  This does require one caller to go through the appropriate utility, but doing that makes the code cleaner anyways.

16 months ago[X86] Add more thorough testing of the zext(logicalshift(zext(x),c)) -> logicalshift...
Simon Pilgrim [Wed, 15 Mar 2023 17:20:37 +0000 (17:20 +0000)]
[X86] Add more thorough testing of the zext(logicalshift(zext(x),c)) -> logicalshift(zext(x),c) fold

Add tests for more extension combos, 64-bit targets and some illegal types

16 months ago[NFC][libc++] Uses newer libc++ style.
Mark de Wever [Wed, 15 Mar 2023 17:16:13 +0000 (18:16 +0100)]
[NFC][libc++] Uses newer libc++ style.

16 months ago[InlineOrder] Plugin Inline Order
ibricchi [Wed, 15 Mar 2023 17:14:27 +0000 (13:14 -0400)]
[InlineOrder] Plugin Inline Order

Adds the ability to load a plugin to control the inline order.
This allows developing and distributing inlining heuristics
outside of tree. And together with the inline advisor plugins
allows for fine grained control of the inliner.

The PluginInlineOrderAnalysis class serves as the entry point
for dynamic advisors. Plugins must register instances of this
class to provide their own InlineOrder.

Reviewed By: kazu

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

16 months agoRevert "[InlineOrder] Plugin Inline Order"
Jake Egan [Wed, 15 Mar 2023 17:12:04 +0000 (13:12 -0400)]
Revert "[InlineOrder] Plugin Inline Order"

This commit is causing a CMake error on AIX. Will recommit with
a fix.

This reverts commit e46d8a731535afcf0c5c2a2f6cf3c5d4fb69cd5b.

16 months ago[Dexter] Add target_run_args option
Stephen Tozer [Tue, 28 Feb 2023 17:14:13 +0000 (17:14 +0000)]
[Dexter] Add target_run_args option

Adds an option to Dexter that passes command line arguments to the
debugged process, following (and in addition to) any arguments given by
the DexCommandLine command.

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

16 months ago[codegen][riscv] Emit CFI directives when using shadow call stack
Paul Kirth [Thu, 2 Mar 2023 22:11:17 +0000 (22:11 +0000)]
[codegen][riscv] Emit CFI directives when using shadow call stack

Currently we don't emit any CFI instructions for the SCS register when
enabling SCS on RISCV. This causes problems when unwinding, since the
SCS register isn't being handled properly.

Reviewed By: mcgrathr

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

16 months ago[clang][RISCV][NFC] Combine RV32/RV64 ABI tests into single files
Alex Bradbury [Wed, 15 Mar 2023 16:56:49 +0000 (16:56 +0000)]
[clang][RISCV][NFC] Combine RV32/RV64 ABI tests into single files

After D134050, it makes sense to combine the RV64 ABI tests into a
single file in order to make it more maintainable (i.e. not having to
split tests based on the combinations of ABIs they're expected to
impact). This patch deletes duplicated tests but doesn't do much further
reorganisation beyond that.

I imagine the logical ordering of tests in the file and comments could
be further improved in the future. My personal feeling is that it's
probably not worth investing the time to try to get this "perfect", and
to instead settle for this incremental step forward. But if there's
reviewer interest in attempting to further iterate, I'm happy to do so.

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

16 months ago[NFC][libc++] Fixes a typo.
Mark de Wever [Wed, 15 Mar 2023 17:03:43 +0000 (18:03 +0100)]
[NFC][libc++] Fixes a typo.

16 months ago[libc++][charconv] Granularizes the header.
Mark de Wever [Wed, 8 Mar 2023 16:08:04 +0000 (17:08 +0100)]
[libc++][charconv] Granularizes the header.

Having the header granularized makes it possible to remove the
dependency on this header in <format>. This <format> header gets
included in more headers due to more usage of std::formatter in the
library. This should reduce the number of transitive includes.

Note formatting the new headers will be done in a followup patch.

Reviewed By: #libc, ldionne

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

16 months ago[libc++] Disables transitive includes in library.
Mark de Wever [Fri, 10 Mar 2023 16:31:58 +0000 (17:31 +0100)]
[libc++] Disables transitive includes in library.

I noticed this wile investigating https://llvm.org/PR61314

Reviewed By: #libc, ldionne

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

16 months ago[flang] Detect fir.class nested in fir.box as invalid element type
Valentin Clement [Wed, 15 Mar 2023 16:35:00 +0000 (17:35 +0100)]
[flang] Detect fir.class nested in fir.box as invalid element type

Catch invalid element type in fir.box in the verifier so
it does not propagate later in lowering.

Reviewed By: PeteSteinfeld

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

16 months ago[RISCV][TTI] Fix indentation and remove tabs [nfc]
Philip Reames [Wed, 15 Mar 2023 16:23:51 +0000 (09:23 -0700)]
[RISCV][TTI] Fix indentation and remove tabs [nfc]

16 months ago[flang] Avoid to wrap box/class type with box/class
Valentin Clement [Wed, 15 Mar 2023 16:27:48 +0000 (17:27 +0100)]
[flang] Avoid to wrap box/class type with box/class

Adapat the fix made in D146079 to just avoid the type
to be wrapped with an extra fir.box or fir.class. The potential
load is delegated to the code that is after.

Reviewed By: PeteSteinfeld

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

16 months ago[Debugify] Invalidate function analyses
Arthur Eubanks [Wed, 15 Mar 2023 16:13:13 +0000 (09:13 -0700)]
[Debugify] Invalidate function analyses

Since debugify inserts instructions.

16 months ago[mlir][Affine] Use stable sorting to prevent non-determinism
Tres Popp [Wed, 15 Mar 2023 16:10:41 +0000 (17:10 +0100)]
[mlir][Affine] Use stable sorting to prevent non-determinism

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

16 months ago[ADT] Make llvm::is_contained call member `contains` or `find` when available
Jakub Kuderski [Wed, 15 Mar 2023 15:56:34 +0000 (11:56 -0400)]
[ADT] Make llvm::is_contained call member `contains` or `find` when available

This makes it so that calling `llvm::is_contained` no longer degrades
performance over member contains, even though both have almost identical
names. This would be the case in most set/map classes that can check for
an element being present in O(1) or O(log n) time vs. linear scan with
`std::find`. For C++17 maps/sets without `.contains`, use `.find` when available,
falling back to a linear scan with `std::find`.

I also considered detecting member contains and triggering a
`static_assert` instead, but decided against it because it's just as easy
to do the right thing and call `.contains`. This would also make some code fail
only when compiled in the C++20 mode when more container types come with
`.contains` member functions.

This was actually already the case with `CommandLine.h` calling `is_contained`
on `SmallPtrSet` and in a recent BOLT patch.

Reviewed By: kazu, dblaikie, MaskRay

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

16 months ago[compiler-rt] Point UndefinedBehaviorSanitizer link to its own page.
Frederic Cambus [Wed, 15 Mar 2023 16:03:22 +0000 (17:03 +0100)]
[compiler-rt] Point UndefinedBehaviorSanitizer link to its own page.

16 months ago[InstCombine] Add additional test for icmp eq/ne with bool load (NFC)
Nikita Popov [Wed, 15 Mar 2023 16:03:27 +0000 (17:03 +0100)]
[InstCombine] Add additional test for icmp eq/ne with bool load (NFC)

16 months ago[ASAN] Use AI.getAllocationSize() helper (NFC)
Nikita Popov [Wed, 15 Mar 2023 15:51:32 +0000 (16:51 +0100)]
[ASAN] Use AI.getAllocationSize() helper (NFC)

16 months agoUse *{Map,Set}::contains (NFC)
Kazu Hirata [Wed, 15 Mar 2023 15:46:32 +0000 (08:46 -0700)]
Use *{Map,Set}::contains (NFC)

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

16 months ago[clang][RISCV][NFC][test] Move riscv-abi.cpp and riscv{32,64}-*abi.c tests to use...
Alex Bradbury [Wed, 15 Mar 2023 15:35:01 +0000 (15:35 +0000)]
[clang][RISCV][NFC][test] Move riscv-abi.cpp and riscv{32,64}-*abi.c tests to use update_cc_test_checks.py

This patch implements an initial step towards refactoring our ABI tests
(moving them to update_cc_test_checks.py). Future patches combine them.

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

16 months ago[InstCombine] Regenerate test checks (NFC)
Nikita Popov [Wed, 15 Mar 2023 15:42:02 +0000 (16:42 +0100)]
[InstCombine] Regenerate test checks (NFC)

16 months ago[StandardInstrumentations] Only turn on -verify-cfg-preserved by default in expensive...
Arthur Eubanks [Tue, 14 Mar 2023 17:13:18 +0000 (10:13 -0700)]
[StandardInstrumentations] Only turn on -verify-cfg-preserved by default in expensive checks builds

https://llvm-compile-time-tracker.com/compare.php?from=3fd42f50d8aadb4d0c348ac17cd2115c1b0564a4&to=50c37f6fc62a1e7bb4f0e307c89f760d42dbe4e9&stat=instructions:u
shows that this is fairly expensive, 5-10% increase in compile time, and I'd like to add more similar checks under the same flag.

This matches the legacy pass manager.

Reviewed By: nikic

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

16 months ago[gn build] Manually port fe7b38
Arthur Eubanks [Wed, 15 Mar 2023 15:36:28 +0000 (08:36 -0700)]
[gn build] Manually port fe7b38

16 months ago[PassManager] Run PassInstrumentation after analysis invalidation
Arthur Eubanks [Tue, 14 Mar 2023 21:25:57 +0000 (14:25 -0700)]
[PassManager] Run PassInstrumentation after analysis invalidation

This allows instrumentation to inspect cached analyses to verify them.

The CGSCC PassInstrumentation previously ran `runAfterPass()` on the original SCC, but really it should be running on UpdatedC when relevant since that's the relevant SCC after the pass.

Reviewed By: nikic

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

16 months ago[flang] Rebox the polymorphic argument in merge intrinsic
Valentin Clement [Wed, 15 Mar 2023 15:31:58 +0000 (16:31 +0100)]
[flang] Rebox the polymorphic argument in merge intrinsic

When fsource or tsource is not polymorphic, the result is not
polymorphic. Rebox the polymoprhic arguement so the dynamic
type of the result is correct.

Reviewed By: PeteSteinfeld

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

16 months ago[DWARFLinker][DWARFv5] add support for DW_FORM_implicit_const form.
Alexey Lapshin [Mon, 13 Mar 2023 15:13:41 +0000 (16:13 +0100)]
[DWARFLinker][DWARFv5] add support for DW_FORM_implicit_const form.

This patch adds handling of DW_FORM_implicit_const form.

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

16 months ago[AMDGPU] Update mul.ll with auto-generated checks
Konstantina Mitropoulou [Mon, 13 Mar 2023 21:58:31 +0000 (14:58 -0700)]
[AMDGPU] Update mul.ll with auto-generated checks

Reviewed By: foad

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

16 months ago[X86] add-and-not.ll - add 32-bit test coverage
Simon Pilgrim [Wed, 15 Mar 2023 15:12:58 +0000 (15:12 +0000)]
[X86] add-and-not.ll - add 32-bit test coverage

16 months ago[ASAN] Initial support memory checks on scalable vector typed allocas
Philip Reames [Wed, 15 Mar 2023 14:39:14 +0000 (07:39 -0700)]
[ASAN] Initial support memory checks on scalable vector typed allocas

This patch adjusts the memory instrumentation to account for scalable vector types in allocas. Note that we don't allow scalable vector globals, so we don't need to update that codepath.

A couple points.

First, this simply disables the optimization for scalable allocas. We can revisit this in the future, but it requires a bit of plumbing to get scalable object sizes through the visitor to be useful.

Second, I am simply disabling stack poisoning for scalable vector allocas. This is mostly for staging the change as I can't write a working test for memory instrumentation without doing so. I don't think it's unreasonable to do on it's own basis as without the bailout, we crash the compiler.

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

16 months ago[ADT][mlir][NFCI] Do not use non-const lvalue-refs with enumerate
Jakub Kuderski [Wed, 15 Mar 2023 14:43:55 +0000 (10:43 -0400)]
[ADT][mlir][NFCI] Do not use non-const lvalue-refs with enumerate

Replace references to enumerate results with either result_pairs
(reference wrapper type) or structured bindings. I did not use
structured bindings everywhere as it wasn't clear to me it would
improve readability.

This is in preparation to the switch to zip semantics which won't
support non-const lvalue reference to elements:
https://reviews.llvm.org/D144503.

I chose to use values instead of const lvalue-refs because MLIR is
biased towards avoiding `const` local variables. This won't degrade
performance because currently `result_pair` is cheap to copy (size_t
+ iterator), and in the future, the enumerator iterator dereference
will return temporaries anyway.

Reviewed By: dblaikie

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

16 months ago[libc++][spaceship] Implement `operator<=>` for `map` and `multimap`
Hristo Hristov [Wed, 15 Mar 2023 14:23:53 +0000 (15:23 +0100)]
[libc++][spaceship] Implement `operator<=>` for `map` and `multimap`

Implements parts of P1614R2: `operator<=>` for `map` and `multimap`

Reviewed By: #libc, philnik

Spies: philnik, libcxx-commits, yaxunl

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

16 months ago[AMDGPU] Avoid constant bus limitation on V_BFE GISel pattern
pvanhout [Wed, 15 Mar 2023 12:28:33 +0000 (13:28 +0100)]
[AMDGPU] Avoid constant bus limitation on V_BFE GISel pattern

For D141247 - if that pattern was used by GISel it could cause constant bus limitation failures.
Just use inline immediates instead of S_MOV to avoid the issue.

Reviewed By: arsenm

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

16 months ago[AArch64][SVE] Fix the indexed addressing mode when FI = 0.
Sander de Smalen [Wed, 15 Mar 2023 09:21:48 +0000 (09:21 +0000)]
[AArch64][SVE] Fix the indexed addressing mode when FI = 0.

This is an alternative fix to D145497, which also addresses
  https://github.com/llvm/llvm-project/issues/60918

In D124457 which added the original code for this, @efriedma pointed
out that it wasn't safe to assume that FI #0 would be allocated at offset
0, but that part of the patch went in without any changes.

The downside of this solution is that any access to an object on the
stack that has been allocated at SP + 0, still gets moved to a separate
register first, which degrades performance.

Reviewed By: paulwalker-arm

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