Shilei Tian [Mon, 30 Jan 2023 19:02:22 +0000 (14:02 -0500)]
[OpenMP][NVPTX] Guard the target name macro definition
Kyuwon Cho [Mon, 30 Jan 2023 18:10:50 +0000 (10:10 -0800)]
[LTO] Demangle the function name in DiagnosticInfoDontCall message
Previously, dontcall attribute message on LTO prints the mangled function name.
Fixes https://github.com/llvm/llvm-project/issues/58933
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D142844
Arthur Eubanks [Sun, 29 Jan 2023 23:48:04 +0000 (15:48 -0800)]
[CGSCC] Add pass which counts the max number of times we visit a function
This will help with finding potential pathological CGSCC cases.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D142853
Florian Hahn [Mon, 30 Jan 2023 18:03:18 +0000 (18:03 +0000)]
[SCCP] Flip range arguments for NSW region check.
This brings the operand order in line with the NUW handling, which was
missed out in
72121a20cda4dc91d0ef5548f930.
At the moment this is NFC as we only additions, but it
should fix miscompiles with
024115ab14822a recommitted.
Craig Topper [Mon, 30 Jan 2023 17:53:48 +0000 (09:53 -0800)]
[RISCV] Replace multiple ifs with a switch. NFC
D108961 will add more instructions to this.
Mitch Phillips [Mon, 30 Jan 2023 17:41:55 +0000 (09:41 -0800)]
Revert "[AIX][BigArchive] Treat the archive is empty if the first child member offset is zero"
This reverts commit
7f0003c19c3a47f484ea9cc929728808b27ace32.
Reason: This broke the ASan buildbot, see the comments in
https://reviews.llvm.org/D138986 for more information.
Nikolas Klauser [Tue, 10 Jan 2023 23:01:37 +0000 (00:01 +0100)]
[libc++] Add [[clang::lifetimebound]] to min/max algorithms
Reviewed By: Mordante, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D142608
Siva Chandra Reddy [Sat, 28 Jan 2023 09:26:46 +0000 (09:26 +0000)]
[libc] Add an off-by-default option to silence "skipping" messages from CMake.
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D142802
Siva Chandra Reddy [Sat, 28 Jan 2023 00:14:14 +0000 (00:14 +0000)]
[libc] Use a more general way to determine the compiler's target triple.
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D142788
Felipe de Azevedo Piovezan [Thu, 19 Jan 2023 15:02:28 +0000 (12:02 -0300)]
[mem2reg][debuginfo] Handle op_deref when converting dbg.declare
The conversion of dbg.declare into dbg.values doesn't take into account
the DIExpression attached to the intrinsic. In particular, when
converting:
```
store %val, ptr %alloca
dbg.declare(ptr %alloca, !SomeVar, !DIExpression())
```
Mem2Reg will try to figure out if `%val` has the size of `!SomeVar`. If
it does, then a non-undef dbg.value is inserted:
```
dbg.value(%val, !SomeVar, !DIExpression())
```
This makes sense: the alloca is _the_ address of the variable. So a
store to the alloca is a store to the variable. However, if the
expression in the original intrinsic is a `DW_OP_deref`, this logic is
not applicable:
```
store ptr %val, ptr %alloca
dbg.declare(ptr %alloca, !SomeVar, !DIExpression(DW_OP_deref))
```
Here, the alloca is *not* the address of the variable. A store to the
alloca is *not* a store to the variable. As such, querying whether
`%val` has the same size as `!SomeVar` is meaningless.
This patch addresses the issue by:
1. Allowing the conversion when the expression is _only_ a `DW_OP_deref`
without any other expressions (see code comment).
2. Checking that the expression does not start with a `DW_OP_deref`
before applying the logic that checks whether the value being stored and
the variable have the same length.
Differential Revision: https://reviews.llvm.org/D142160
David Green [Mon, 30 Jan 2023 16:05:25 +0000 (16:05 +0000)]
[AArch64] Replace AEK_CRYPTO with relevant features in cpu definitions
This replaces AEK_CRYPTO in the AArch64TargetParser definitions,
replacing the composite Crypto features with the constituent parts.
AEK_CRYPTO is replaced with either AEK_AES | AEK_SHA2 or AEK_AES |
AEK_SHA2 | AEK_SHA3 | AEK_SHA4 depending on if the cpu is Arm-v8.4+.
This helps get the features correct in some more places like
target(cpu=..) attributes.
Otherwise this is hopefully an NFC for -mcpu options but seems like a
cleaner design.
Differential Revision: https://reviews.llvm.org/D142548
Louis Dionne [Mon, 28 Nov 2022 13:01:46 +0000 (08:01 -0500)]
[libc++] Don't assume that string_view::const_iterator is a raw pointer
Our implementation of std::format assumed that string_view's iterators
were raw pointers in various places. If we want to introduce a checked
iterator in debug mode, that won't be true anymore. This patch removes
that assumption.
Differential Revision: https://reviews.llvm.org/D138795
Tobias Gysi [Mon, 30 Jan 2023 14:38:28 +0000 (15:38 +0100)]
[mlir][llvm] Import access group metadata.
The revision adds support to import access group metadata from LLVM IR.
It closely follows the design of the TBAA metadata import with an
up-front conversion of the metadata nodes to operations stored in the
body of a module-level metadata operation. The revision chooses to use
only one module-level metadata operation for all kinds of metadata.
This design ensures there is only one metadata operation that pollutes
the user namespace.
The import of loop metadata, which will use the access groups,
is left to a follow up revision.
Reviewed By: Dinistro
Differential Revision: https://reviews.llvm.org/D142605
Nikita Popov [Mon, 30 Jan 2023 14:28:27 +0000 (15:28 +0100)]
[InstCombine] Regenerate test checks (NFC)
Nikita Popov [Mon, 30 Jan 2023 14:27:37 +0000 (15:27 +0100)]
[InferAddressSpaces] Regenerate test checks (NFC)
Xiang [Sun, 29 Jan 2023 23:12:47 +0000 (18:12 -0500)]
[mlir] use getNumDimAndSymbolVars when iterate dims/symbols of FlatAffineValueConstraints
Fixes #59443 https://github.com/llvm/llvm-project/issues/59443
getNumVars will add locals and cause out of bound access.
Differential Revision: https://reviews.llvm.org/D142851
Simon Pilgrim [Mon, 30 Jan 2023 14:00:45 +0000 (14:00 +0000)]
[X86] Add SSE2 test coverage to vector comparison all_of/any_of tests
Alexander Belyaev [Mon, 30 Jan 2023 13:03:38 +0000 (14:03 +0100)]
[mlir] Remove Linalg fusion-on-memrefs.
PSA: https://discourse.llvm.org/t/psa-retire-tileandfuselinalgops-method/63850
Differential Revision: https://reviews.llvm.org/D141807
Johannes de Fine Licht [Mon, 30 Jan 2023 13:33:02 +0000 (14:33 +0100)]
[MLIR][LLVM] Generate LLVM lifetime intrinsics while inlining.
Extend `LLVMInlinerInterface` to inline lifetime intrinsics for
`LLVM::AllocaOp` operations, and to insert new lifetime intrinsics when
an alloca is moved to the entry block that restrict its scope to where
the call was before inlining.
Depends on D142436
Reviewed By: gysit
Differential Revision: https://reviews.llvm.org/D142701
Joseph Huber [Mon, 30 Jan 2023 13:16:25 +0000 (07:16 -0600)]
[Libomptarget] Fix tests after previous patch
Summary:
The previous patch didn't remove these tests correctly.
Simon Pilgrim [Mon, 30 Jan 2023 12:54:04 +0000 (12:54 +0000)]
[X86] combinePredicateReduction - pull out SETCC handling for all_of(icmp_eq) reductions. NFC.
Minor cleanup before we can handle any_of(icmp_ne) with the same code.
Aaron Ballman [Mon, 30 Jan 2023 12:46:20 +0000 (07:46 -0500)]
Fix LLVM sphinx docs, redux
I missed a second title with too short of underlining.
Aaron Ballman [Mon, 30 Jan 2023 12:36:51 +0000 (07:36 -0500)]
Fix LLVM Sphinx build
This addresses the issue found by:
https://lab.llvm.org/buildbot/#/builders/30/builds/31313
Joseph Huber [Mon, 30 Jan 2023 12:31:10 +0000 (06:31 -0600)]
[Libomptarget] Remove unused test targets in libomptaget
Summary:
These don't need to be set.
Samuel Parker [Mon, 30 Jan 2023 12:17:11 +0000 (12:17 +0000)]
[DAGCombine] fp_to_sint isSaturatingMinMax
Recommitting after fixing scalable vector crash.
Check for single smax pattern against zero when converting from a
small enough float.
Differential Revision: https://reviews.llvm.org/D142481
Hans Wennborg [Mon, 30 Jan 2023 12:15:31 +0000 (13:15 +0100)]
Revert "[ASan][libcxx] Annotating std::vector with all allocators"
This caused false container-overflow errors when using a custom allocator that
touches the memory on deallocation: GitHub Issue #60384
> This revision is a part of a series of patches extending
> AddressSanitizer C++ container overflow detection
> capabilities by adding annotations, similar to those existing
> in std::vector, to std::string and std::deque collections.
> These changes allow ASan to detect cases when the instrumented
> program accesses memory which is internally allocated by
> the collection but is still not in-use (accesses before or
> after the stored elements for std::deque, or between the size and
> capacity bounds for std::string).
>
> The motivation for the research and those changes was a bug,
> found by Trail of Bits, in a real code where an out-of-bounds read
> could happen as two strings were compared via a std::equals function
> that took iter1_begin, iter1_end, iter2_begin iterators
> (with a custom comparison function).
> When object iter1 was longer than iter2, read out-of-bounds on iter2
> could happen. Container sanitization would detect it.
>
> In revision D132522, support for non-aligned memory buffers (sharing
> first/last granule with other objects) was added, therefore the
> check for standard allocator is not necessary anymore.
> This patch removes the check in std::vector annotation member
> function (__annotate_contiguous_container) to support
> different allocators.
>
> If you have any questions, please email:
> - advenam.tacet@trailofbits.com
> - disconnect3d@trailofbits.com
>
> Reviewed By: #libc, #sanitizers, philnik, vitalybuka
>
> Spies: EricWF, philnik, #sanitizers, libcxx-commits
>
> Differential Revision: https://reviews.llvm.org/D136765
This reverts commit
490555026821db47d1cf4bf08c219b3e56ec6b45.
Sacha Ballantyne [Mon, 30 Jan 2023 11:50:59 +0000 (11:50 +0000)]
[flang] Fix simplify intrinsic for count not checking for rank = 0 properly
Simple fix to check for rank in the same way as other intrinsics to allow
runtime count to take over when dealing with unknown dimension arrays.
Fixes #60356
Reviewed By: Leporacanthicus
Differential Revision: https://reviews.llvm.org/D142877
Pavel Labath [Mon, 30 Jan 2023 12:19:10 +0000 (13:19 +0100)]
[lldb] Fix TestVSCode_completions for D141828
Muhammad Omair Javaid [Mon, 30 Jan 2023 11:43:52 +0000 (16:43 +0500)]
Revert "Revert "[lldb] Make SBSection::GetSectionData call Section::GetSectionData.""
This reverts commit
e1bbe50f5a48e9b5407de9e5f4ab8197dedc85c5.
Differential Revision: https://reviews.llvm.org/D142672
Tomas Matheson [Fri, 27 Jan 2023 13:50:47 +0000 (13:50 +0000)]
[AArch64] Add atomics tests for lse2+lse128
FEAT_LSE128 implies FEAT_LSE but not FEAT_LSE2, so add tests showing
what happens when you have both.
Differential Revision: https://reviews.llvm.org/D142712
Andrew Ng [Fri, 20 Jan 2023 14:58:54 +0000 (14:58 +0000)]
[clangd] Disable tests that are incompatible with Windows
These tests explicitly make use of POSIX absolute paths.
Differential Revision: https://reviews.llvm.org/D142228
Andrew Ng [Fri, 20 Jan 2023 15:04:38 +0000 (15:04 +0000)]
[memprof] Change test output redirection to enable it to run on Windows
Differential Revision: https://reviews.llvm.org/D142225
Florian Hahn [Mon, 30 Jan 2023 10:29:27 +0000 (10:29 +0000)]
[VPlan] VPPredInstPHIRecipes does not write to memory.
VPPredInstPHIRecipe just merges the incoming values and does not write
to memory.
Jirui Wu [Fri, 13 Jan 2023 10:21:09 +0000 (10:21 +0000)]
[ARM] Accept shortened forms of the T2 ADC instruction
The previous T2 ADC instruction requires three operands. This patch
supports its shortened forms.
Differential Revision: https://reviews.llvm.org/D141853
Matthias Springer [Mon, 30 Jan 2023 10:03:34 +0000 (11:03 +0100)]
[mlir][bufferization][NFC] Rename BufferRelation::None to BufferRelation::Unknown
The previous name was incorrect. `None` does not mean that there is no buffer relation between two buffers (seems to imply that they do not alias for sure); instead it means that there is no further information available.
Differential Revision: https://reviews.llvm.org/D142870
Marius Brehler [Mon, 30 Jan 2023 10:02:39 +0000 (10:02 +0000)]
[mlir][nfc] Migrate standalone to new fold API
Migrates the standalone sample/dialect to the new fold API, see
https://discourse.llvm.org/t/psa-new-improved-fold-method-signature-has-landed-please-update-your-downstream-projects/67618
Guillaume Chatelet [Mon, 23 Jan 2023 17:01:00 +0000 (17:01 +0000)]
[libc] Remove warning about unused variable
Differential Revision: https://reviews.llvm.org/D142376
Matt Devereau [Fri, 27 Jan 2023 11:16:07 +0000 (11:16 +0000)]
[LoopVectorize] Enable integer Mul and Add as select reduction patterns
This patch vectorizes Phi node loop reductions for select's whos condition
comes from a floating-point comparison, with its operands being integers
for Add, Sub, and Mul reductions.
Example:
int foo(float *x, int n) {
int sum = 0;
for (int i=0; i<n; ++i) {
float elem = x[i];
if (elem > 0) {
sum += 2;
}
}
return sum;
}
This would previously fail to vectorize due to the integer reduction.
Simon Pilgrim [Mon, 30 Jan 2023 09:32:50 +0000 (09:32 +0000)]
[X86] pr53419.ll - add AVX512 test coverage
Matthias Springer [Mon, 30 Jan 2023 09:19:32 +0000 (10:19 +0100)]
[mlir][bufferization] Better handling of unranked tensors in resolveTensorOpOperandConflicts
Unranked tensors can currently not be copied. They are forced to always bufferize in-place. There is typically some other OpOperand that can bufferize out-of-place instead if needed.
Note: There is IR that cannot be bufferized with One-Shot Bufferize at the moment (see invalid test case). But it is unclear if we need to support such cases. We do not have a use case at the moment. This restriction could be loosened in the future if needed.
This change improves error handling when bufferizing IR where an unranked tensor would be copied. It also disables an optimization where an OpResult was copied instead of an OpOperand in case the OpResult is an unranked tensor (Github #60187).
Differential Revision: https://reviews.llvm.org/D142331
Matthias Springer [Mon, 30 Jan 2023 09:12:28 +0000 (10:12 +0100)]
[mlir][bufferization][NFC] Simplify func bufferization state
The analysis previous kept track of OpOperand -> OpResult and OpResult -> OpOperand aliasing mappings. Only one mapping is needed, the other one can be inferred.
Differential Revision: https://reviews.llvm.org/D142128
Matthias Springer [Mon, 30 Jan 2023 09:03:23 +0000 (10:03 +0100)]
[mlir][bufferization] Fix getAliasingOpOperand/OpResult for non-bufferizable ops
Also enable analysis of unknown ops.
Differential Revision: https://reviews.llvm.org/D142006
Balázs Kéri [Mon, 30 Jan 2023 08:39:55 +0000 (09:39 +0100)]
[clang][ASTImporter] Handle UsingType in friend declarations.
ASTImporterLookupTable did not handle correctly friend declarations
where the friend type is an UsingType (type of a declaration that
comes from an using-declaration). The problem is fixed by handling
it in the same way as a friend with TypedefType.
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D142607
Nikita Popov [Fri, 27 Jan 2023 13:53:33 +0000 (14:53 +0100)]
[UTC] Add --version argument
We have a number of pending changes to update_test_checks.py
(and friends) that are essentially blocked on test churn:
If the output of UTC for an existing flag combination changes,
then the next time a test is regenerated, it will contain many
spurious changes. This makes changes to UTC default
behavior essentially impossible.
Examples of such changes are:
* D133943/D142373 want --function-signature to also check the
return type/attributes.
* D139006/D140212 want to make --function-signature the default
behavior.
* D142452 wants to add wildcards for block labels.
This patch tries to resolve this issue by adding a --version
argument, which works as follows:
* When regenerating an old test, the default version is 1.
* When generating a new test, the default version is the newest.
When an explicit version is specified, that of course wins.
This means that any currently existing tests will keep using
--version 1 format, while any new tests will automatically embed
--version N where N is the latest version, and then keep using
that test format from then on.
This patch only implements the --version flag without bumping
the default version, so it does not have any visible behavior
change by itself.
Differential Revision: https://reviews.llvm.org/D142473
Nikita Popov [Mon, 30 Jan 2023 08:37:38 +0000 (09:37 +0100)]
Revert "[llvm] Use llvm::bit_ceil (NFC)"
This reverts commit
54971c8a39e8b682e7a042eee33f94a8283d8305.
This causes a compile-time regression. bit_ceil should probably
not be used in performance-critical code.
Matthias Springer [Mon, 30 Jan 2023 08:41:31 +0000 (09:41 +0100)]
[mlir][bufferization][NFC] Rename: "last-write" -> "definition"
The previous lingo was confusing. There are no writes on tensors. There are only definitions.
Also some minor cleanup and better documentation.
Differential Revision: https://reviews.llvm.org/D141790
Christian Ulmann [Mon, 30 Jan 2023 08:34:29 +0000 (09:34 +0100)]
Revert "[mlir][LLVM] Add all LLVM parameter attributes"
This reverts commit
54941942c82f3a1640d50c0e354d29a3cf5535f6.
The commit introduced a linking error in flang.
varconst [Mon, 30 Jan 2023 08:35:55 +0000 (00:35 -0800)]
[libc++][ranges] Temporarily mark `ranges::join_view` as experimental.
This is in anticipation of https://isocpp.org/files/papers/D2770R0.html,
which is ABI-breaking for `join_view`.
Differential Revision: https://reviews.llvm.org/D142520
Matthias Springer [Mon, 30 Jan 2023 08:26:15 +0000 (09:26 +0100)]
[mlir][bufferization] Generalize and rename isMemoryWrite
The name of the method was confusing. It is bufferizesToMemoryWrite, but from the perspective of OpResults.
`bufferizesToMemoryWrite(OpResult)` now supports ops with regions that do not have aliasing OpOperands (such as `scf.if`). These ops no longer need to implement `isMemoryWrite`.
Differential Revision: https://reviews.llvm.org/D141684
Konstantin Varlamov [Mon, 30 Jan 2023 08:29:55 +0000 (00:29 -0800)]
[libc++] Fix some missed `return 0` statements in test `main` functions.
Matthias Springer [Mon, 30 Jan 2023 08:04:31 +0000 (09:04 +0100)]
[mlir][NFC] GreedyPatternRewriteDriver: Remove single-op entry point
This is to simplify the API. The multi-op entry point can be used directly. GreedyRewriteStrictness must now be specified explicitly.
Depends On: D141396
Differential Revision: https://reviews.llvm.org/D142613
Christian Ulmann [Mon, 30 Jan 2023 07:27:14 +0000 (08:27 +0100)]
[mlir][LLVM] Add all LLVM parameter attributes
This commit adds name accessors and verifiers for all LLVM parameter
attributes excluding the swift specific ones to the LLVM dialect.
Additionally, these attributes are now also imported and exported.
Reviewed By: gysit
Differential Revision: https://reviews.llvm.org/D142635
Muhammad Omair Javaid [Mon, 30 Jan 2023 07:32:23 +0000 (12:32 +0500)]
Revert "[lldb] Make SBSection::GetSectionData call Section::GetSectionData."
This reverts commit
805600c7d573cf88cf035d01a2ea9389fc24d435.
LLDB windows buildbots were broken by the TestSectionAPI.py test. I dont
have full context of the commit to fix it. Reverting it temporarily.
https://lab.llvm.org/buildbot/#/builders/83/builds/28617
https://lab.llvm.org/buildbot/#/builders/219/builds/180
Differential Revision: https://reviews.llvm.org/D142672
Nathan Ridge [Mon, 30 Jan 2023 07:07:46 +0000 (02:07 -0500)]
[clangd] Fix test failure in TypeHints.Decltype
Craig Topper [Mon, 30 Jan 2023 06:50:43 +0000 (22:50 -0800)]
[Docs] Rename -dot-postdom -> -dom-post-dom in Passes.rst. NFC
Same for -dot-postdom-only.
Looks like these passes got renamed when they moved to the new
pass manager.
Nathan Ridge [Tue, 24 Jan 2023 09:38:35 +0000 (04:38 -0500)]
[clangd] Don't show 'auto' type hint when type deduction fails
Fixes https://github.com/clangd/clangd/issues/1475
Differential Revision: https://reviews.llvm.org/D142440
Kai Luo [Mon, 30 Jan 2023 05:43:50 +0000 (13:43 +0800)]
[AIX][BigArchive] Treat the archive is empty if the first child member offset is zero
If the archive contains free list and contains no member file, the buffer length doesn't equal to length of the header.
Reviewed By: Esme, DiggerLin, #powerpc
Differential Revision: https://reviews.llvm.org/D138986
Xiang Li [Mon, 30 Jan 2023 01:30:36 +0000 (20:30 -0500)]
[mlir] skip 0-D vector in BubbleUpBitCastForStridedSliceInsert
InsertStridedSliceOp will not get 0-D vector result, so just skip 0-D vector in BubbleUpBitCastForStridedSliceInsert.
Fixes #60214 https://github.com/llvm/llvm-project/issues/60214
Differential Revision: https://reviews.llvm.org/D142319
Sergei Barannikov [Mon, 30 Jan 2023 03:39:37 +0000 (06:39 +0300)]
[WebAssembly] Convert some tests to opaque pointers (NFC)
Sergei Barannikov [Mon, 30 Jan 2023 03:10:10 +0000 (06:10 +0300)]
[Thumb2] Convert some tests to opaque pointers (NFC)
Ben Shi [Fri, 13 Jan 2023 09:37:00 +0000 (17:37 +0800)]
[AVR][NFC] Remove redundant target feature PROGMEM
The functionality of FeaturePROGMEM is all equivalant to FeatureLPM.
Reviewed By: Chenbing.Zheng, aykevl
Differential Revision: https://reviews.llvm.org/D141242
Craig Topper [Mon, 30 Jan 2023 02:45:58 +0000 (18:45 -0800)]
[RISCV] Move IsRV64 field of RISCVOperand into RegOp and ImmOp sub-structs.
We don't need this field for all operand types, so sync it into the
ones that do need it. Then remove it from the create* functions that
don't need it.
Craig Topper [Sun, 29 Jan 2023 23:54:48 +0000 (15:54 -0800)]
[RISCV] Correct end pointer in RISCVAsmParser::parseGPRAsFPR.
Instead of using start pointer - 1, use start pointer + length of
the name string.
Craig Topper [Sun, 29 Jan 2023 23:48:14 +0000 (15:48 -0800)]
[RISCV] Make RISCVOperand struct final.
Allows the compiler to de-virtualize some calls.
bixia1 [Fri, 27 Jan 2023 23:16:31 +0000 (15:16 -0800)]
[mlir][sparse] Extend sparse_tensor.sort with a enum attribute to specify a sorting implementation.
Currently, all the non-stable sorting algorithms are implemented via the
straightforward quick sort. This will be fixed in the following PR.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D142678
Sergei Barannikov [Mon, 30 Jan 2023 01:39:36 +0000 (04:39 +0300)]
[PowerPC] Convert more tests to opaque pointers (NFC)
Kazu Hirata [Mon, 30 Jan 2023 02:08:00 +0000 (18:08 -0800)]
[clang] Remove clang::Optional
This is part of an effort to migrate from llvm::Optional to
std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Differential Revision: https://reviews.llvm.org/D142857
bixia1 [Fri, 27 Jan 2023 23:24:02 +0000 (15:24 -0800)]
[mlir][sparse] Change the quick sort pivot selection.
Previously, we choose the value at (lo + hi)/2 as a pivot for partitioning the
data in [lo, hi). We now choose the median for the three values at lo, (lo +
hi)/2, and (hi-1) as a pivot to match the std::qsort implementation.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D142679
Kshitij Jain [Mon, 30 Jan 2023 01:26:45 +0000 (01:26 +0000)]
[JITLink] Fixes a bug in one of the test files which was causing build failures
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D142856
Sergei Barannikov [Sun, 29 Jan 2023 23:59:37 +0000 (02:59 +0300)]
[PowerPC] Convert more tests to opaque pointers (NFC)
* Add -fast-isel=false to func-alias.ll. The test was added as a
SelectionDAG test. Without this option, FastISel successfully selects
the call that had a ConstantExpr argument.
* fast-isel-branch.ll couldn't be handled by FastISel. Now it can,
hence the change in the stack offsets.
Kshitij Jain [Sun, 29 Jan 2023 17:19:41 +0000 (17:19 +0000)]
[JITLink] Adds support for PLT based relocations to the ELF/i386 JITLink backend
This commit adds support for PLT based relocations. Specifically -
1. It adds logic to create a `PLTTableManager` in the `buildTables_ELF_i386`
function, which is called as part of the post-prune JITLink passes. The `PLTTableManager`
handles creating pointer jump stubs and related GOT entries for position independent
code.
2. It also adds a pre-fixup pass to optimize away PLT based calls in position independent
code, when possible.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D142846
Kazu Hirata [Mon, 30 Jan 2023 00:07:04 +0000 (16:07 -0800)]
[Support] Use llvm::bit_ceil (NFC)
For nonzero X, NextPowerOf2(X) is equivalent to llvm::bit_ceil(X + 1).
Peter Klausler [Fri, 20 Jan 2023 01:01:06 +0000 (17:01 -0800)]
[flang] Fix ENUMERATOR declarations in nested scopes
ENUMERATOR declarations are checking for conflicts between new
enumerator names and names in both the local scope and scopes
that contain it. ENUMERATOR declarations belong to the local
scope and so only a conflict with a name therein is an error.
(In short, use FindInScope rather than FindSymbol.)
Differential Revision: https://reviews.llvm.org/D142773
Kazu Hirata [Sun, 29 Jan 2023 23:39:46 +0000 (15:39 -0800)]
[AST] Use llvm::bit_ceil (NFC)
For nonzero X that is not a power of 2, NextPowerOf2(X) is equivalent
to llvm::bit_ceil(X).
Kazu Hirata [Sun, 29 Jan 2023 23:25:49 +0000 (15:25 -0800)]
[ADT] Use llvm::bit_ceil (NFC)
For nonzero X, NextPowerOf2(X - 1) is equivalent to llvm::bit_ceil(X).
Lang Hames [Sun, 29 Jan 2023 23:08:02 +0000 (15:08 -0800)]
[ORC] Add ordering to ExecutorAddrRanges.
This allows ranges to be sorted and used as map keys.
Peter Klausler [Sun, 29 Jan 2023 22:53:40 +0000 (14:53 -0800)]
[flang][MSVC] Change XFAIL to UNSUPPORTED for disabled test
Test flang/test/Semantics/select-rank02.f90 has an unresolved
failure when built with MSVC on an x86 Windows buildbot, but it passes
on an Arm Windows buildbot. Change XFAIL to UNSUPPORTED to dodge
an XPASS buildbot complaint on the Arm Windows buildbot.
Florian Hahn [Sun, 29 Jan 2023 22:46:17 +0000 (22:46 +0000)]
[VPlan] Add sideffect/read or write test for VPPredInstPHIRecipe. (NFC)
Peter Klausler [Tue, 10 Jan 2023 23:53:12 +0000 (15:53 -0800)]
[flang] Check that DO index variables are definable
We're letting immutable objects appear as DO index variables;
catch and diagnose this error.
Differential Revision: https://reviews.llvm.org/D142767
Sergei Barannikov [Sun, 29 Jan 2023 20:52:16 +0000 (23:52 +0300)]
[PowerPC] Convert some tests to opaque pointers (NFC)
Sylvestre Ledru [Sun, 29 Jan 2023 09:09:16 +0000 (10:09 +0100)]
flang: remove the hardcoded 15 from the release notes
Differential Revision: https://reviews.llvm.org/D142835
Philipp Tomsich [Sun, 29 Jan 2023 21:00:32 +0000 (22:00 +0100)]
[RISCV] Fix wrong comment style. NFC
Philipp Tomsich [Sun, 29 Jan 2023 19:21:11 +0000 (20:21 +0100)]
[RISCV] Alphabetize X-extensions (and add a comment). NFC.
Craig Topper [Sun, 29 Jan 2023 20:30:52 +0000 (12:30 -0800)]
[RISCV] Move IsGPRAsFPR into RegOp struct in RISCVOperand. NFC
This field is only initialized for register operands, move it into
the struct to make that clear.
This also fixes a potential bug where the field wasn't copied by
the RISCVOperand copy constructor.
Craig Topper [Sun, 29 Jan 2023 20:25:00 +0000 (12:25 -0800)]
[RISCV] Move FRM parsing in the assembler to a custom operand parser.
Previously we parsed it as a symbol, and then accessed the name.
This works, but seems like an unusual way to do it.
This adds a custom parser that looks for an Identifier token containing
one of the valid FRM strings.
Differential Revision: https://reviews.llvm.org/D142833
Simon Pilgrim [Sun, 29 Jan 2023 20:14:46 +0000 (20:14 +0000)]
[X86] pr53419.ll - cleanup check-prefixes. NFC.
Avoid using CHECK unless its for all possible RUNs
Peter Klausler [Tue, 17 Jan 2023 21:30:09 +0000 (13:30 -0800)]
[flang] Don't fold REPEAT() when the result would be too large
A test program shouldn't be able to crash the compiler by getting it to
fold REPEAT() with an absurdly large repetition count.
Differential Revision: https://reviews.llvm.org/D142770
Kazu Hirata [Sun, 29 Jan 2023 19:43:10 +0000 (11:43 -0800)]
[Support] Use std::clamp (NFC)
Peter Klausler [Fri, 13 Jan 2023 22:33:57 +0000 (14:33 -0800)]
[flang] Fix defined I/O semantics crash & missing errors that exposed it
Semantics crashes when emitting runtime derived type information tables
for a type that has user-defined I/O procedures declared outside the
type with explicit INTERFACE blocks (as opposed to a GENERIC binding
within the type). This is due to the runtime table constructor
adding a table entry for each specific procedure of any explicit interface
of the right kind (e.g., READ(UNFORMATTED)) that it found, rather than
just the ones that pertain to the derived type in question. But
semantics also wasn't checking such interfaces for distinguishable
specific procedures, either.
Clean these up, improve the spelling of defined I/O procedure kinds
in error messages ("read(formatted)" rather than "READFORMATTED"),
and make error messages stemming from macro expansions only have
one "error:" prefix on the original message so that a new test
would work.
Differential Revision: https://reviews.llvm.org/D142769
Simon Pilgrim [Sun, 29 Jan 2023 18:03:49 +0000 (18:03 +0000)]
[Support] ModRef.h - fix include guard
ModRef.h is part of Support not IR
Fixes clang-tidy warning
Simon Pilgrim [Sun, 29 Jan 2023 18:02:54 +0000 (18:02 +0000)]
[IR] PatternMatch.h - m_SplatOrUndefMask::match - specialise auto to const auto*
Fixes clang-tidy warning
Simon Pilgrim [Sun, 29 Jan 2023 18:01:44 +0000 (18:01 +0000)]
[IR] InstrTypes.h - operandBundleFromBundleOpInfo - specialise auto to const auto*
Fixes clang-tidy warning
Kazu Hirata [Sun, 29 Jan 2023 18:03:15 +0000 (10:03 -0800)]
[Scalar] Remove an unused local varable (NFC)
The last uses of CRs were removed on Jan 17, 2023 in commit
61bb549cfd43fe4753fc78075b626ae18106fbeb.
Kazu Hirata [Sun, 29 Jan 2023 17:43:36 +0000 (09:43 -0800)]
[AST] Use std::clamp (NFC)
Simon Pilgrim [Sun, 29 Jan 2023 16:50:37 +0000 (16:50 +0000)]
[Support] StringSaver.h - add missing closing namespace comment. NFC.
Fixes clang-tidy warning
Simon Pilgrim [Sun, 29 Jan 2023 16:48:21 +0000 (16:48 +0000)]
[Support] ReverseIteration.h - add missing closing namespace comment. NFC.
Fixes clang-tidy warning
Simon Pilgrim [Sun, 29 Jan 2023 16:47:13 +0000 (16:47 +0000)]
[X86] vec_ss_load_fold.ll - use X86 check prefix instead of X32
We try to use X32 for tests on gnux32 triples
Peter Klausler [Tue, 10 Jan 2023 21:26:39 +0000 (13:26 -0800)]
[flang] If it's got an argument keyword, it can't become an array reference
Array references like A(1) are commonly misparsed as function references,
since the parser has almost no semantic context, and the parse tree is
fixed up later by semantics once it can be disambiguated. In a case
like A(I=1), however, the presence of an argument keyword must prevent
conversion into an array reference. (It might still also be a structure
constructor.)
Differential Revision: https://reviews.llvm.org/D142765
Philipp Tomsich [Tue, 24 Jan 2023 17:55:17 +0000 (18:55 +0100)]
[AArch64] Add A+B+1 and A-B-1 macro fusion for Ampere1A
The Ampere1A core supports a new fusion pattern that optimises the
case of A+B+1 and A-B-1. Add support.
Depends on D142396
Differential Revision: https://reviews.llvm.org/D142502
Sanjay Patel [Sun, 29 Jan 2023 15:24:52 +0000 (10:24 -0500)]
[InstSimplify] !(X && Y) || X --> true (for poison-safe logical ops)
https://alive2.llvm.org/ce/z/xuvL46
This is the similar to the existing folds added with:
D138853 /
f2973327496fc966c4e89597
7dbeb127eaf6
...but with the and/or swapped.