Nikita Popov [Thu, 16 Mar 2023 09:34:18 +0000 (10:34 +0100)]
[IR] Remove unused ConstantExpr::getOffsetOf() methods (NFC)
These are not used and should not be used (just like anything that
creates a constant expression only due to lack of DL-awareness).
Nikita Popov [Mon, 6 Mar 2023 09:46:22 +0000 (10:46 +0100)]
[ConstExpr] Remove select constant expression
This removes the select constant expression, as part of
https://discourse.llvm.org/t/rfc-remove-most-constant-expressions/63179.
Uses of this expressions have already been removed in advance,
so this just removes related infrastructure and updates tests.
Differential Revision: https://reviews.llvm.org/D145382
Dmitry Polukhin [Wed, 15 Mar 2023 17:45:07 +0000 (10:45 -0700)]
[clang][Lexer] Fix crash/assert clang::HeaderSearch::search_dir_nth
The issue was introduced in D135801. When there are only header maps in the SearchDirs,
the out of bounds value is assigned to FirstNonHeaderMapSearchDirIdx.
Test Plan: check-clang
Differential Revision: https://reviews.llvm.org/D146156
Mikhail R. Gadelha [Wed, 15 Mar 2023 17:10:54 +0000 (14:10 -0300)]
[libc] Enable __llvm_libc_syscall and fork
This patch enables the remaining calls from unistd.
The test cases had to be updated to:
1. Use SYS_symlinkat if SYS_symlink is not available
2. Use SYS_readlinkat if SYS_readlink is not available
3. Use SYS_unlinkat if SYS_unlink is not available
4. Use SYS_openat if SYS_open is not available
We also abort compilation if neither of the syscalls mentioned above are
available.
Differential Revision: https://reviews.llvm.org/D146161
Mikhail R. Gadelha [Tue, 14 Mar 2023 20:50:09 +0000 (17:50 -0300)]
[libc] Enable spawn lib in riscv
In this patch we add support for the spawn lib in riscv.
Only small changes were required, the biggest one was to use of dup3
instead of dup2, if the latter is not available. This follows our
implementation of dup2.
Differential Revision: https://reviews.llvm.org/D146145
Mikhail R. Gadelha [Tue, 14 Mar 2023 17:06:01 +0000 (14:06 -0300)]
[libc] Update supported riscv libs
This patch removes some duplicated libs added to entrypoints.txt, adds
new libs supported to entrypoints.txt and updates header.txt
Differential Revision: https://reviews.llvm.org/D146065
Max Kazantsev [Thu, 16 Mar 2023 09:09:41 +0000 (16:09 +0700)]
[Test] Add test showing difference in behavior of Guard Widening depending on form
Guards can be represented differently (as intrinsic calls and as explicit branches),
and the expectation is that Guard Widening should do the same things for them, no
matter what form it was suggested. Currently it seems to be not so.
We also don't want LICM to prevent guard widening.
Max Kazantsev [Thu, 16 Mar 2023 06:23:11 +0000 (13:23 +0700)]
[Metarenamer] Distinguish instructions by opcodes
This should improve readability of metarenamed code.
Differential Revision: https://reviews.llvm.org/D145896
Reviewed By: nikic
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
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
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
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
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
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.
Kazu Hirata [Thu, 16 Mar 2023 05:55:35 +0000 (22:55 -0700)]
Use *{Map,Set}::contains (NFC)
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
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
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
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
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
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
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
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.
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
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.
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
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
Kazu Hirata [Thu, 16 Mar 2023 01:06:34 +0000 (18:06 -0700)]
[clang] Use *{Map,Set}::contains (NFC)
Kazu Hirata [Thu, 16 Mar 2023 01:06:32 +0000 (18:06 -0700)]
[llvm] Use *{Map,Set}::contains (NFC)
Kazu Hirata [Thu, 16 Mar 2023 01:06:31 +0000 (18:06 -0700)]
[Lex] Use false instead of 0 (NFC)
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
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
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.
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
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
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
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
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
Matt Arsenault [Wed, 15 Mar 2023 15:14:49 +0000 (11:14 -0400)]
ConstantFolding: Minor cleanups for is_fpclass
Luke Lau [Wed, 15 Mar 2023 22:00:48 +0000 (22:00 +0000)]
Revert "[RISCV] Enable interleaved access vectorization"
This reverts commit
acc03ad10af4f379a644e3956cb9aca54e40696c.
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
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
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
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.
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
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
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.
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
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
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
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
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.
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
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
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
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
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
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
Zequan Wu [Wed, 15 Mar 2023 18:48:34 +0000 (14:48 -0400)]
[gn build] Manually port d505d20
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
Arthur Eubanks [Wed, 15 Mar 2023 18:45:25 +0000 (11:45 -0700)]
[Debugify/Strip] Fix returned PreservedAnalyses
Arthur Eubanks [Wed, 15 Mar 2023 18:43:11 +0000 (11:43 -0700)]
[WPD] Fix PreservedAnalyses value after runForTesting()
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
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
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
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
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
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
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
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
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
Mark de Wever [Wed, 15 Mar 2023 17:30:02 +0000 (18:30 +0100)]
[libc++] Fixes accidental CI breakage.
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.
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.
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
Mark de Wever [Wed, 15 Mar 2023 17:16:13 +0000 (18:16 +0100)]
[NFC][libc++] Uses newer libc++ style.
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
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.
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
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
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
Mark de Wever [Wed, 15 Mar 2023 17:03:43 +0000 (18:03 +0100)]
[NFC][libc++] Fixes a typo.
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
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
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
Philip Reames [Wed, 15 Mar 2023 16:23:51 +0000 (09:23 -0700)]
[RISCV][TTI] Fix indentation and remove tabs [nfc]
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
Arthur Eubanks [Wed, 15 Mar 2023 16:13:13 +0000 (09:13 -0700)]
[Debugify] Invalidate function analyses
Since debugify inserts instructions.
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
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
Frederic Cambus [Wed, 15 Mar 2023 16:03:22 +0000 (17:03 +0100)]
[compiler-rt] Point UndefinedBehaviorSanitizer link to its own page.
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)
Nikita Popov [Wed, 15 Mar 2023 15:51:32 +0000 (16:51 +0100)]
[ASAN] Use AI.getAllocationSize() helper (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
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
Nikita Popov [Wed, 15 Mar 2023 15:42:02 +0000 (16:42 +0100)]
[InstCombine] Regenerate test checks (NFC)
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
Arthur Eubanks [Wed, 15 Mar 2023 15:36:28 +0000 (08:36 -0700)]
[gn build] Manually port fe7b38
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
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