Max Kazantsev [Fri, 9 Apr 2021 08:22:47 +0000 (15:22 +0700)]
[GVN][NFC] Factor out load elimination logic via PRE for reuse
Frederik Gossen [Thu, 8 Apr 2021 09:21:50 +0000 (11:21 +0200)]
[MLIR] Do not yield values from an assuming op that are never used
Differential Revision: https://reviews.llvm.org/D100042
Jim Lin [Fri, 9 Apr 2021 09:01:48 +0000 (17:01 +0800)]
[RISCV][NFC] Replace explicit type i64 with riscv customized SDTypeProfile.
New SDTypeProfile can be reused for other word operation patterns without explicit i64 type in the future.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D100097
Thomas Preud'homme [Sun, 28 Mar 2021 00:03:37 +0000 (00:03 +0000)]
[test, LoopVectorize] Fix use of var defined in CHECK-NOT
LLVM test Transforms/LoopVectorize/pr34681.ll tries to check for the
absence of a sequence of instructions with several CHECK-NOT with one of
those directives using a variable defined in another. However CHECK-NOT
are checked independently so that is using a variable defined in a
pattern that should not occur in the input.
This commit only checks for the absence of icmp ne 1 which rules out the
presence of the whole sequence and does not involve an undefined
variable.
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D99582
Alexander Belyaev [Fri, 9 Apr 2021 08:02:24 +0000 (10:02 +0200)]
[lldb] Update object.test after 'nosync' inference was enabled.
https://reviews.llvm.org/D99769
Alexander Belyaev [Fri, 9 Apr 2021 08:01:50 +0000 (10:01 +0200)]
[lldb] Update UUID after https://reviews.llvm.org/D99978.
Chen Zheng [Fri, 9 Apr 2021 07:21:24 +0000 (03:21 -0400)]
[NFC][PowerPC] add test cases for reverse memory op transformation
Jim Lin [Fri, 9 Apr 2021 05:20:07 +0000 (13:20 +0800)]
[RISCV][NFC] Fix formatting
Max Kazantsev [Fri, 9 Apr 2021 06:19:52 +0000 (13:19 +0700)]
[Test] Add two more tests on PRE with guards
Serguei Katkov [Fri, 9 Apr 2021 04:29:35 +0000 (11:29 +0700)]
[GreedyRA ORE] Re-factor computeNumberOfSplillsReloads.
Replace if-else to if-continue usage.
This simplifies further extension of the collected stats.
MaheshRavishankar [Fri, 9 Apr 2021 05:30:49 +0000 (22:30 -0700)]
[mlir][Linalg] Drop unit-trip loops of reductions only if other reduction loops exists.
Recent change enable dropping unit-trip loops of "reduction" iterator
type as well. This is fine as long as there is one other "reduction"
iterator in the operation. Without this the initialized value (value
of `out`) is not read which leads to a correctness issue.
Also fix a bug in the `fill` -> `tensor_reshape` folding. The `out`
operand of the `fill` needs to be reshaped to get the `out` operand of
the generated `fill` operation.
Differential Revision: https://reviews.llvm.org/D100145
zoecarver [Fri, 9 Apr 2021 05:01:35 +0000 (22:01 -0700)]
[libcxx] Allow shared_ptr's unique_ptr converting constructor to support array types.
Refs: https://bugs.llvm.org/show_bug.cgi?id=32147
Differential Revision: https://reviews.llvm.org/D80882
Arthur Eubanks [Fri, 2 Apr 2021 03:22:29 +0000 (20:22 -0700)]
[LICM] Hoist loads with invariant.group metadata
Previously loading the vtable used in calling a virtual method in a loop
was not hoisted out of the loop. This fixes that.
canSinkOrHoistInst() itself doesn't check that the load operands are
loop invariant, callers also check that separately.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D99784
Esme-Yi [Fri, 9 Apr 2021 04:53:59 +0000 (04:53 +0000)]
[debug-info][NFC] Set -mtriple to avoid the test failure under other targets.
Serguei Katkov [Fri, 9 Apr 2021 03:20:25 +0000 (10:20 +0700)]
[RS4GC] Cleanup meetBDVState. NFC.
meetBDVState looks pretty difficult to read and follow.
This is purely NFC but doing several things:
1) Combine meet and meetBDVState
2) Move the function to be a member of BDVState
3) Make BDVState be a mutable object
4) Convert switch to sequence of ifs
5) Adds comments.
Reviewers: reames, dantrushin
Reviewed By: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D99064
Yang Fan [Fri, 9 Apr 2021 02:22:56 +0000 (10:22 +0800)]
[clang][SourceManager] Fix -Wparentheses warning (NFC)
GCC warning:
```
/llvm-project/clang/lib/Basic/SourceManager.cpp: In instantiation of ‘constexpr T likelyhasbetween(T, unsigned char, unsigned char) [with T = long unsigned int]’:
/llvm-project/clang/lib/Basic/SourceManager.cpp:1292:52: required from here
/llvm-project/clang/lib/Basic/SourceManager.cpp:1264:48: warning: suggest parentheses around ‘+’ in operand of ‘&’ [-Wparentheses]
1264 | (x & ~static_cast<T>(0) / 255 * 127) +
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
1265 | (~static_cast<T>(0) / 255 * (127 - (m - 1)))) &
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
Jim Lin [Fri, 9 Apr 2021 01:36:33 +0000 (09:36 +0800)]
[RISCV][NFC] Add explicit type i64 to RV64 only patterns.
Add explicit type i64 to RV64 only patterns to stop emitting unneeded i32 patterns.
It can reduce the isel table size.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D100089
Alex Orlov [Fri, 9 Apr 2021 01:29:14 +0000 (05:29 +0400)]
[lld] Fixed CodeView GuidAdapter::format to handle GUID bytes in the right order.
This fixes https://bugs.llvm.org/show_bug.cgi?id=41712 bug.
Reviewed By: aganea
Differential Revision: https://reviews.llvm.org/D99978
Rob Suderman [Thu, 1 Apr 2021 23:39:25 +0000 (16:39 -0700)]
[mlir][tosa] Add tosa.max_pool2d lowering to linalg int max pooling additions
Lowerings tosa.max_pool2d to linalg equivalent operations. Includes
adding max pooling operations for linalg, with corresponding tests.
Differential Revision: https://reviews.llvm.org/D99824
Duncan P. N. Exon Smith [Thu, 28 Jan 2021 23:43:04 +0000 (15:43 -0800)]
ADT: Sink the guts of StringMapEntry::Create into StringMapEntryBase
Sink the interesting parts of StringMapEntry::Create into a new function
StringMapEntryBase::allocateWithKey that's only templated on the
allocator, taking the entry size and alignment as parameters.
As dblaikie pointed out in the review, it'd be interesting as a
follow-up to make this more generic and maybe sink at least some of it
into a source file; I haven't done that yet myself, but I left behind an
encouraging comment.
Differential Revision: https://reviews.llvm.org/D95654
David Blaikie [Fri, 9 Apr 2021 00:36:41 +0000 (17:36 -0700)]
DebugInfo: Include inline namespaces in template specialization parameter names
This ensures these types have distinct names if they are distinct types
(eg: if one is an instantiation with a type in one inline namespace, and
another from a type with the same simple name, but in a different inline
namespace).
David Blaikie [Thu, 8 Apr 2021 23:56:27 +0000 (16:56 -0700)]
Use default ref capture to avoid unused capture warning on assert-used variable
Weiwei Li [Thu, 8 Apr 2021 23:22:25 +0000 (19:22 -0400)]
[mlir][spirv] Define spv.ImageDrefGather operation
This patch doesn't support the optional operands of ImageDrefGather. The support of optional operands will be implemented later.
co-authered-by: Alan Liu <alanliu.yf@gmail.com>
Differential Revision: https://reviews.llvm.org/D100128
Duncan P. N. Exon Smith [Fri, 9 Apr 2021 00:00:43 +0000 (17:00 -0700)]
Support: Use std::unique_ptr for SignpostEmitter::Impl, NFC, 3rd attempt
This reverts commit
e35afbe535f96086141f57a5ce7d679429b4405f, reapplying
022ccedde8877e877b45e49641544b5e4fff0b42 and
e7ed5c920db3f537a85d962c1c918a1bb6de99fd.
- The first attempt missed defining `SignpostEmitterImpl`.
- The second attempt missed defining `llvm::SignpostEmitterImpl`.
Not sure how I failed to test both versions locally before; I thought
I'd turned the feature off via rerunning `cmake` but it must have been
stuck in place. This time I confirmed via `clang -E` that I was testing
both build configurations.
Original commit message:
Replace some manual memory management with std::unique_ptr.
Differential Revision: https://reviews.llvm.org/D100151
Duncan P. N. Exon Smith [Thu, 8 Apr 2021 23:58:12 +0000 (16:58 -0700)]
Revert "Revert "Revert "Support: Use std::unique_ptr for SignpostEmitter::Impl, NFC"""
This reverts commit
e7ed5c920db3f537a85d962c1c918a1bb6de99fd again, due
to more buildbot failures:
https://lab.llvm.org/buildbot/#/builders/131/builds/8191
Duncan P. N. Exon Smith [Thu, 8 Apr 2021 23:41:40 +0000 (16:41 -0700)]
Revert "Revert "Support: Use std::unique_ptr for SignpostEmitter::Impl, NFC""
This reverts commit
078072285d3fbdaa94f9a91140eb5c1223b548af, reapplying
022ccedde8877e877b45e49641544b5e4fff0b42.
I figured out why this was failing in other environments: it's not a
problem with std::unique_ptr, but that SignpostEmitterImpl only has a
forward declaration. Adding an empty definition should do the trick.
Original commit message:
Replace some manual memory management with std::unique_ptr.
Differential Revision: https://reviews.llvm.org/D100151
Duncan P. N. Exon Smith [Thu, 8 Apr 2021 23:36:42 +0000 (16:36 -0700)]
Revert "Support: Use std::unique_ptr for SignpostEmitter::Impl, NFC"
This reverts commit
022ccedde8877e877b45e49641544b5e4fff0b42. Looks like
some hosts need a definition of SignpostEmitterImpl to put it in a
unique_ptr:
https://lab.llvm.org/buildbot/#/builders/92/builds/7733
Duncan P. N. Exon Smith [Thu, 8 Apr 2021 23:20:31 +0000 (16:20 -0700)]
Support: Avoid unnecessary std::function for SignpostEmitterImpl::SignpostLog
The destructor for SignPostEmitterImpl::SignpostLog is known statically. Avoid
the unnecessary vtable indirection through std::function in the std::unique_ptr
by turning LogDeleter into a struct. No real functionality change here.
Differential Revision: https://reviews.llvm.org/D100154
Duncan P. N. Exon Smith [Thu, 8 Apr 2021 23:14:16 +0000 (16:14 -0700)]
Support: Drop the no-op initializer for SignpostEmitterImpl::Signposts, NFC
This is a DenseMap, which has its own initializer; we don't need to explicitly
call the default constructor here.
Differential Revision: https://reviews.llvm.org/D100152
Duncan P. N. Exon Smith [Thu, 8 Apr 2021 23:04:55 +0000 (16:04 -0700)]
Support: Use std::unique_ptr for SignpostEmitter::Impl, NFC
Replace some manual memory management with std::unique_ptr.
Differential Revision: https://reviews.llvm.org/D100151
Duncan P. N. Exon Smith [Wed, 27 Jan 2021 00:01:36 +0000 (16:01 -0800)]
Support: Extract fs::resize_file_before_mapping_readwrite from FileOutputBuffer
Add a variant of `fs::resize_file` for use immediately before opening a
file with `mapped_file_region::readwrite`. On Windows, `_chsize`
(`ftruncate`) is slow, but `CreateFileMapping` (`mmap`) automatically
extends the file so the call to `fs::resize_file` can be skipped.
This optimization was added to `FileOutputBuffer` in
da9bc2e56d5a5c6332a9def1a0065eb399182b93; this commit just extracts the
logic out and adds a unit test.
Differential Revision: https://reviews.llvm.org/D95490
Mehdi Amini [Thu, 8 Apr 2021 22:15:39 +0000 (22:15 +0000)]
Improve error message when tring to export to LLVM IR with a dialect missing the interface
Dialects can be translated to LLVM IR when they have the
LLVMTranslationDialectInterface interface registered. In case the
interface isn't explicitly registered, even the LLVM dialect can't be
exported to LLVM IR. This make the error message more explicit on this.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D96729
Nikita Kniazev [Thu, 8 Apr 2021 22:55:22 +0000 (23:55 +0100)]
[ASTMatchers] Add `cxxBaseSpecifier` matcher (non-top-level)
Required for capturing base specifier in matchers:
`cxxRecordDecl(hasDirectBase(cxxBaseSpecifier().bind("base")))`
Reviewed By: steveire, aaron.ballman
Differential Revision: https://reviews.llvm.org/D69218
Leonard Chan [Thu, 25 Mar 2021 19:32:21 +0000 (12:32 -0700)]
[compiler-rt][hwasan] Add C++17 new/delete operators with alignment
Differential Revision: https://reviews.llvm.org/D99368
Craig Topper [Thu, 8 Apr 2021 22:02:57 +0000 (15:02 -0700)]
[RISCV] Use multiclass inheritance where possible for the VPat* multiclasses in RISVInstrInfoVPseudos. NFCI
Instead of instantiating multiclasses inside multiclasses, just
inherit from them.
We can do the same for the VPseudo* multiclasses, but that may
interfere with the scheduler class work.
Craig Topper [Thu, 8 Apr 2021 21:47:41 +0000 (14:47 -0700)]
[RISCV] Remove empty string after 'defm' at top level of vector .td files. NFC
This doesn't do anything so it's just wasted characters. I have
other plans for the ones in multiclasses.
Jonas Devlieghere [Thu, 8 Apr 2021 22:05:26 +0000 (15:05 -0700)]
[lldb] (Temporarily) disable vfork-follow-parent-wp.test on Darwin
The test is failing on GreenDragon. Pinged Michał in D98822.
Alexey Bataev [Thu, 8 Apr 2021 18:33:57 +0000 (11:33 -0700)]
[SLP]Fix PR49898: Infinite loop in SLP vectorizer.
We should not re-try attempt of finding of the consecutive store chain
if it was tried before.
Differential Revision: https://reviews.llvm.org/D100131
Philip Reames [Thu, 8 Apr 2021 21:02:39 +0000 (14:02 -0700)]
[funcattrs] Infer nosync from instruction walk
Pretty straightforward use of existing infrastructure and port of the attributor inference rules for nosync.
A couple points of interest:
* I deliberately switched from "monotonic or better" to "unordered or better". This is simply me being conservative and is better in line with the rest of the optimizer. We treat monotonic conservatively pretty much everywhere.
* The operand bundle test change is suspicious. It looks like we might have missed something here, but if so, it's an issue with the existing nofree inference as well. I'm going to take a closer look at that separately.
* I needed to keep the previous inference from readnone. This surprised me, but made sense once I realized readonly inference goes to lengths to reason about local vs non-local memory and that writes to local memory are okay. This is fine for the purpose of nosync, but would e.g. prevent us from inferring nofree from readnone - which is slightly surprising.
Differential Revision: https://reviews.llvm.org/D99769
Arthur Eubanks [Thu, 8 Apr 2021 18:44:23 +0000 (11:44 -0700)]
[GVN] Properly invalidate ICF cache when we simplify a value
This fixes a "Cached first special instruction is wrong!" assert.
The assert fires because replacing a value with another can cause an
instruction to no longer be "special" to ICF. In this case,
devirtualization happened, turning an indirect call to a
call to a willreturn function which is no longer special.
Reviewed By: nikic, rnk
Differential Revision: https://reviews.llvm.org/D99977
Dan Liew [Thu, 8 Apr 2021 04:33:24 +0000 (21:33 -0700)]
Include `count` in AppleClang toolchains.
The motivation here is so we can run the compiler-rt tests
from a standalone build against AppleClang.
In particular the `Posix/halt_on_error-torture.cpp` and
`Posix/halt_on_error_suppress_equal_pcs.cpp` ASan test cases currently
require this binary for the tests to pass.
rdar://
76366784
Differential Revision: https://reviews.llvm.org/D100087
Thomas Preud'homme [Wed, 10 Mar 2021 13:53:40 +0000 (13:53 +0000)]
[FileCheck, test] Rename checkWildcardRegexCharMatchFailure
Proposed edit https://reviews.llvm.org/D97845#inline-922769 in D97845
suggests the checkWildcardRegexCharMatchFailure function name is
misleading because it is not clear it checks for a match failure on each
character in the string parameter. This commit renames it to an
hopefully clearer name.
Reviewed By: jdenny
Differential Revision: https://reviews.llvm.org/D98343
Konstantin Zhuravlyov [Thu, 8 Apr 2021 20:42:05 +0000 (16:42 -0400)]
AMDGPU: Add gfx90c support to code object v2 for backwards compatibility
Differential Revision: https://reviews.llvm.org/D100126
Stanislav Mekhanoshin [Thu, 8 Apr 2021 20:24:46 +0000 (13:24 -0700)]
[AMDGPU] Check for all meta instrs in GCNRegBankReassign
It used to work correctly even with a KILL, but there is
no reason to consider meta instructions since they do not
create real HW uses.
Differential Revision: https://reviews.llvm.org/D100135
Jason Molenda [Thu, 8 Apr 2021 20:28:59 +0000 (13:28 -0700)]
Add setting to disable LanguageRuntime UnwindPlans
When debugging LanguageRuntime unwindplans, it can be
helpful to disable their use and see the normal
stack walk. Add a setting for this.
Differential Revision: https://reviews.llvm.org/D99828
Nikita Popov [Sat, 3 Apr 2021 13:57:58 +0000 (15:57 +0200)]
[LoopRotate] Don't split loop pass manager
After D99249 we use three different loop pass managers for LICM,
LoopRotate and LICM+LoopUnswitch. This happens because LazyBFI
and LazyBPI are not preserved by LoopRotate (note that D74640
is no longer needed). Avoid this by marking them as preserved.
My understanding of D86156 is that it is okay to simply preserve
them (which LoopUnswitch already does for the same reason) and
rely on callbacks to deal with deleted blocks.
Differential Revision: https://reviews.llvm.org/D99843
Stanislav Mekhanoshin [Wed, 7 Apr 2021 22:22:48 +0000 (15:22 -0700)]
[AMDGPU] Allow -amdgpu-unsafe-fp-atomics to ignore denorm mode
Fixes: SWDEV-274276
Differential Revision: https://reviews.llvm.org/D100072
Xiangling Liao [Thu, 8 Apr 2021 17:40:27 +0000 (13:40 -0400)]
[AIX] Support init priority attribute
Differential Revision: https://reviews.llvm.org/D99291
Arnamoy Bhattacharyya [Thu, 8 Apr 2021 18:33:04 +0000 (14:33 -0400)]
[flang][OpenMP] Add functionality to check "close nesting" of regions, which can be used for Semantic checks. Also adding more test cases.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D99970
Hanhan Wang [Thu, 8 Apr 2021 19:15:15 +0000 (12:15 -0700)]
[mlir][StandardToSPIRV] Handle i1 case for lowering memref.load/store op
This patch unconditionally converts i1 types to i8 types on memrefs. If the
extensions or capabilities are not met, they will be converted to i32. Hence the
logic in IntLoadPattern and IntStorePattern are also updated.
Also added the implementation of SPIRVTypeConverter::getOptions().
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D99724
Wouter van Oortmerssen [Thu, 25 Mar 2021 23:04:10 +0000 (16:04 -0700)]
[WebAssembly] Fix for PIC external symbol ISEL
wasm64 was missing DAG ISEL patterns for external symbol based global.get, but simply adding these analogous to the existing 32-bit versions doesn't work.
This is because we are conflating the 32-bit global index with the pointer represented by the external symbol, which for wasm32 happened to work.
The simplest fix is to pretend we have a 64-bit global index. This sounds incorrect, but is immaterial since once this index is stored as a MachineOperand it becomes 64-bit anyway (and has been all along). As such, the EmitInstrWithCustomInserter based implementation I experimented with become a no-op and no further changes in the C++ code are required.
Differential Revision: https://reviews.llvm.org/D99904
Congzhe Cao [Thu, 8 Apr 2021 18:53:09 +0000 (14:53 -0400)]
[LoopInterchange] Fix transformation bugs in loop interchange
After loop interchange, the (old) outer loop header should not jump to
the `LoopExit`. Note that the old outer loop becomes the new inner loop
after interchange. If we branched to `LoopExit` then after interchange
we would jump directly from the (new) inner loop header to `LoopExit`
without executing the rest of outer loop.
This patch modifies adjustLoopBranches() such that the old outer
loop header (which becomes the new inner loop header) jumps to the
old inner loop latch which becomes the new outer loop latch after
interchange.
Reviewed By: bmahjour
Differential Revision: https://reviews.llvm.org/D98475
Levy Hsu [Thu, 8 Apr 2021 18:40:49 +0000 (11:40 -0700)]
[RISCV] Add InstAlias for Zbb Zbp and Zbs extension
Add InstAlias that allows the last operand to be an imm for following instructions:
1. Zbb or Zbp:
- ror
- rorw (RV64 Only)
2. Zbs
- best
- bclr
- binv
- bext
Reviewed By: craig.topper, jrtc27
Differential Revision: https://reviews.llvm.org/D100083
Sanjay Patel [Thu, 8 Apr 2021 18:29:33 +0000 (14:29 -0400)]
[InstCombine] fold min/max intrinsic with negated operand to abs
The smax case shows up in https://llvm.org/PR49885 .
The others seem unlikely, but we might as well try
for uniformity (although that could mean an extra
instruction to create "nabs").
smax -- https://alive2.llvm.org/ce/z/8yYaGy
smin -- https://alive2.llvm.org/ce/z/0_7zc_
umax -- https://alive2.llvm.org/ce/z/EcsZWs
umin -- https://alive2.llvm.org/ce/z/Xw6WvB
Sanjay Patel [Thu, 8 Apr 2021 17:47:48 +0000 (13:47 -0400)]
[InstCombine] add tests for min/max with negated operand; NFC
Craig Topper [Thu, 8 Apr 2021 16:12:57 +0000 (09:12 -0700)]
[RISCV] Prevent __builtin_riscv_orc_b_64 from being compiled RV32 target.
The backend can't handle this and will throw a fatal error from
type legalization. It's easy enough to fix that for this intrinsic
by just splitting the IR intrinsic since it works on individual bytes.
There will be other intrinsics in the future that would be harder
to support through splitting, for example grev, gorc, and shfl. Those
would require a compare and a select be inserted to check the MSB of
their control input.
This patch adds support for preventing this in the frontend with
a nice diagnostic.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D99984
Stanislav Mekhanoshin [Mon, 5 Apr 2021 20:01:44 +0000 (13:01 -0700)]
Set IgnoreLLVMUsed to false in CallGraph::addToCallGraph()
clang++ uses llvm.compiler.used in certain cases to preserve
symbol which is fully inlined. D96087 has resulted in undefined
symbols in such cases. Set it to false by default to preserve
old behavior but keep the option for specific uses where we
want to ignore these (e.g. to detect a potential indirect call
to a function).
Differential Revision: https://reviews.llvm.org/D99897
Jez Ng [Thu, 8 Apr 2021 18:11:45 +0000 (14:11 -0400)]
[lld-macho][nfc] Use varargs form of hasArg()
Jez Ng [Thu, 8 Apr 2021 18:12:20 +0000 (14:12 -0400)]
[lld-macho] Support -add_ast_path
Swift builds seem to use it. All it requires is emitting the
corresponding paths as STABS.
Fixes llvm.org/PR49385.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D100076
Michał Górny [Thu, 8 Apr 2021 18:03:21 +0000 (20:03 +0200)]
[lldb] [test] Skip clone() tests on Linux/aarch64
Paul C. Anagnostopoulos [Thu, 8 Apr 2021 17:55:16 +0000 (13:55 -0400)]
Revert "[TableGen] Add support for the 'assert' statement in multiclasses"
This reverts commit
3b9a15d910a8c748b1444333a4a3905a996528bc.
Sushma Unnibhavi [Thu, 8 Apr 2021 17:55:55 +0000 (10:55 -0700)]
[lldb] Improve the documentation (#42017)
Added punctuation and changed "So for instance" to "For instance".
Fixes https://llvm.org/PR42017
Differential revision: https://reviews.llvm.org/D100053
Lei Zhang [Thu, 8 Apr 2021 17:40:35 +0000 (13:40 -0400)]
[mlir][linalg] Fix loop upper bounds in conv fusion test
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D100112
Valeriy Savchenko [Wed, 24 Mar 2021 13:15:04 +0000 (16:15 +0300)]
[analyzer] Fix false positives in inner pointer checker (PR49628)
This patch supports std::data and std::addressof functions.
rdar://
73463300
Differential Revision: https://reviews.llvm.org/D99260
Valeriy Savchenko [Tue, 23 Mar 2021 12:38:55 +0000 (15:38 +0300)]
[analyzer] Fix crash on spaceship operator (PR47511)
rdar://
68954187
Differential Revision: https://reviews.llvm.org/D99181
Stephen Tozer [Thu, 8 Apr 2021 16:54:45 +0000 (17:54 +0100)]
Revert "[DebugInfo] Correctly track SDNode dependencies for list debug values"
Reverted due to failure on the sanitizer-x86_64-linux-fast bot.
This reverts commit
e10493eb5012a2c313471489646bde9595ea06c0.
Michał Górny [Fri, 12 Mar 2021 08:02:36 +0000 (09:02 +0100)]
[lldb] [Process] Watch for fork/vfork notifications
Watch for fork(2)/vfork(2) (also fork/vfork-style clone(2) on Linux)
notifications and explicitly detach the forked child process, and add
initial tests for these cases. The code covers FreeBSD, Linux
and NetBSD process plugins. There is no new user-visible functionality
provided -- this change lays foundations over subsequent work on fork
support.
Differential Revision: https://reviews.llvm.org/D98822
Yuanfang Chen [Thu, 8 Apr 2021 16:43:08 +0000 (09:43 -0700)]
abtest.py: support bisection based on a response file
Also makes LINK_TEST customizable from commandline with `--test` option.
Andrew Savonichev [Fri, 15 Jan 2021 13:08:58 +0000 (16:08 +0300)]
[MCA] Add tests for IPC on Cortex-A55
The tests compare IPC statistics that MCA provides with IPC values
measured on Cortex-A55 hardware. For hardware tests, each snippet is
run in a loop unrolled by 1000, and IPC is measured by linux-perf.
Several tests do not match the hardware: the skewed ALU is not
supported, LDR seem to be missing a forwarding path.
Differential Revision: https://reviews.llvm.org/D98174
Jez Ng [Thu, 8 Apr 2021 16:14:48 +0000 (12:14 -0400)]
[lld-macho][nfc] Extend abs-symbol.s to test for local absolute symbols
Addresses an old TODO.
Reviewed By: #lld-macho, oontvoo
Differential Revision: https://reviews.llvm.org/D100082
Jez Ng [Thu, 8 Apr 2021 16:14:47 +0000 (12:14 -0400)]
[lld-macho] Support --thinlto-jobs
The test is loosely based off LLD-ELF's `thinlto.ll`. However, I
found that test questionable because the the -save_temps behavior it
checks for is identical regardless of whether we are running in single-
or multi-threaded mode. I tried writing a test based on `--time-trace`
but couldn't get it to run deterministically... so I've opted to just
skip checking that behavior for now.
Reviewed By: #lld-macho, gkm
Differential Revision: https://reviews.llvm.org/D99356
Arjun P [Thu, 8 Apr 2021 15:29:58 +0000 (20:59 +0530)]
[MLIR] Support symbols in emptiness checks for FlatAffineConstraints
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D100114
Stephen Tozer [Fri, 26 Mar 2021 14:52:56 +0000 (14:52 +0000)]
[DebugInfo] Correctly track SDNode dependencies for list debug values
During SelectionDAG, we must track the SDNodes that each SDDbgValue depends on
to compute its value. These are ultimately derived from the location operands to
the SDDbgValue, but were stored in a separate vector prior to this patch. This
resulted in cases where one of the lists was updated incorrectly, resulting in
crashes during compilation. This patch fixes the issue by directly recomputing
the dependency list from the SDDbgOperands in getDependencies().
Differential Revision: https://reviews.llvm.org/D99423
Jay Foad [Thu, 8 Apr 2021 15:24:19 +0000 (16:24 +0100)]
[AMDGPU] Add some implicit uses to tests. NFC.
This is just to stop a future patch from optimizing away the things that
we actually want to check for.
Jay Foad [Thu, 8 Apr 2021 15:32:25 +0000 (16:32 +0100)]
[AMDGPU] SIFoldOperands: remove an unneeded isReg check. NFC.
Dávid Bolvanský [Thu, 8 Apr 2021 15:28:57 +0000 (17:28 +0200)]
Revert "Reduce the number of attributes attached to each function"
This reverts commit
053dc95839b3b8a36db46f8c419e36e632e989cd. It causes perf regressions - see discussion in D97116.
David Spickett [Thu, 8 Apr 2021 14:52:15 +0000 (15:52 +0100)]
[lsan] Mark 2 new lsan tests unsupported on arm-linux
These tests were added in:
1daa48f005bd477ba8711ecdf91a1f1515f01383
59e422c90bf4796fc73237e838d8954b4e2099b1
malloc_zero.c and realloc_too_big.c fail when only
leak sanitizer is enabled.
http://lab.llvm.org:8011/#/builders/59/builds/1635
(also in an armv8 32 bit build)
(I would XFAIL them but the same test is run with
address and leak sanitizer enabled and that one does
pass)
Pavel Labath [Sat, 27 Mar 2021 20:21:14 +0000 (21:21 +0100)]
[lldb/DWARF] Fix a crash parsing invalid dwarf (pr49678)
If the debug info is missing the terminating null die, we would crash
when trying to access the nonexisting children/siblings. This was
discovered because the test case for D98619 accidentaly produced such
input.
Pavel Labath [Thu, 8 Apr 2021 14:31:18 +0000 (16:31 +0200)]
[lldb] Re-skip TestVSCode_launch
The test is flaky (sleeps didn't help).
serge-sans-paille [Thu, 8 Apr 2021 14:09:40 +0000 (16:09 +0200)]
Jay Foad [Thu, 8 Apr 2021 13:33:51 +0000 (14:33 +0100)]
[AMDGPU] SIFoldOperands: make use of emplace_back. NFC.
Jay Foad [Thu, 8 Apr 2021 13:32:36 +0000 (14:32 +0100)]
[AMDGPU] SIFoldOperands: remove an unneeded make_early_inc_range. NFC.
Jay Foad [Thu, 8 Apr 2021 13:09:31 +0000 (14:09 +0100)]
[AMDGPU] SIFoldOperands: try harder to fold cndmask instructions
Look through copies to find more cases where the two values being
selected are identical. The motivation for this is just to be able to
remove the weird special case where tryFoldCndMask was called from
foldInstOperand, part way through folding a move-immediate into its
users, without regressing any lit tests.
Florian Hahn [Thu, 8 Apr 2021 13:15:39 +0000 (14:15 +0100)]
[LV] Pass VPWidenPHIRecipe to widenPHIInstruction (NFC).
Instead of passing the start value and the defined value to
widenPHIInstruction, pass the VPWidenPHIRecipe directly, which can be
used to get both (and more in future patches).
Valeriy Savchenko [Wed, 24 Mar 2021 13:50:19 +0000 (16:50 +0300)]
[analyzer] Fix dead store checker false positive
It is common to zero-initialize not only scalar variables,
but also structs. This is also defensive programming and
we shouldn't complain about that.
rdar://
34122265
Differential Revision: https://reviews.llvm.org/D99262
Joseph Tremoulet [Thu, 8 Apr 2021 13:06:52 +0000 (09:06 -0400)]
Support: mapped_file_region: Pass MAP_NORESERVE to mmap
This allows mapping larger files, delaying OOM failures until too many
pages of them are accessed. This is makes the behavior of the
mapped_file_region in this regard consistent between its "Unix" and
"Windows" implementations.
Guard the code witih #if defined(MAP_NORESERVE), consistent with other
uses of MAP_NORESERVE in llvm-project, because some FreeBSD versions do
not provide this flag.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D96626
Jay Foad [Thu, 8 Apr 2021 13:04:49 +0000 (14:04 +0100)]
[AMDGPU] SIFoldOperands: make tryFoldCndMask a member function. NFC.
Sebastian Neubauer [Thu, 8 Apr 2021 12:00:33 +0000 (14:00 +0200)]
[AMDGPU] Fix computing live registers in prolog
ScratchExecCopy needs to be marked as live, we cannot use that register
while EXEC is stored in there.
Marking SGPRForFPSaveRestoreCopy and SGPRForBPSaveRestoreCopy as
available is unnecessary, they should not be live at that point anway.
Differential Revision: https://reviews.llvm.org/D100098
Sanjay Patel [Thu, 8 Apr 2021 12:28:59 +0000 (08:28 -0400)]
[InstCombine] add icmp with no-wrap add tests; NFC
Goes with D100095
Paul C. Anagnostopoulos [Mon, 5 Apr 2021 13:13:25 +0000 (09:13 -0400)]
[TableGen] Make behavior of list slice suffix consistent across all values
Differential Revision: https://reviews.llvm.org/D99883
Paul C. Anagnostopoulos [Thu, 1 Apr 2021 17:01:43 +0000 (13:01 -0400)]
[TableGen] Add support for the 'assert' statement in multiclasses
David Sherwood [Wed, 7 Apr 2021 08:13:00 +0000 (09:13 +0100)]
[CodeGen][AArch64] Fix isel crash for truncating FP stores
When attempting to truncate a FP vector and store the result out
to memory we crashed because we had no pattern for truncating FP
stores. In fact, we don't support these types of stores and the
correct fix is to stop marking these truncating stores as legal.
Tests have been added here:
CodeGen/AArch64/sve-fptrunc-store.ll
Differential Revision: https://reviews.llvm.org/D100025
Lei Zhang [Wed, 7 Apr 2021 18:52:16 +0000 (14:52 -0400)]
[mlir][spirv] Add control for non-32-bit scalar type emulation
Non-32-bit scalar types require special hardware support that may not
exist on all GPUs. This is reflected in SPIR-V as that non-32-bit scalar
types require special capabilities or extensions.
Previously when there is a non-32-bit type and no native support, we
unconditionally emulate it with 32-bit ones. This isn't good given that
it can have implications over ABI and data layout consistency.
This commit introduces an option to control whether to use 32-bit
types to emulate.
Differential Revision: https://reviews.llvm.org/D100059
Lei Zhang [Wed, 7 Apr 2021 18:52:07 +0000 (14:52 -0400)]
[mlir][spirv] Timely fail type conversion
Per the TypeConverter API contract, returning `llvm:None` means
other conversion rules should be tried. But we only have one
rule per input type. So there is no need to try others and we can
just directly fail, which should return `nullptr`. This avoids
unnecessary checks.
Differential Revision: https://reviews.llvm.org/D100058
Jay Foad [Thu, 8 Apr 2021 12:03:20 +0000 (13:03 +0100)]
[AMDGPU] SIFoldOperands: refactor tryFoldCndMask with early-outs. NFC.
Stephen Tozer [Fri, 26 Mar 2021 14:52:43 +0000 (14:52 +0000)]
[DebugInfo] Prevent invalid debug info being produced during LoopStrengthReduce
During LoopStrengthReduce, some of the SSA values that are used by debug values
may be lost and/or salvaged. After LSR we attempt to recover any undef debug
values, including any that were salvaged but then lost their values afterwards,
by replacing the lost values with any live equal values (plus a possible
constant offset) that have been gathered prior to running LSR. When we do this
we restore the debug value's original DIExpression, to undo any salvaging (as we
have gone back to using the original debug value).
This process can currently produce invalid debug info if the number of operands
has changed by salvaging during LSR. Replacing old values during the
applyEqualValues step does not change the number of location operands, which
means that when we restore the old DIExpression we may have a mismatch between
the number of operands used by the debug value and the number of operands
referenced by the DIExpression. This patch fixes this by restoring the full
original location metadata at the start of the applyEqualValues step, so that
there is no mismatch in operand count between the debug value and its
DIExpression.
Differential Revision: https://reviews.llvm.org/D98644
Roman Lebedev [Thu, 8 Apr 2021 11:56:05 +0000 (14:56 +0300)]
[NFC][X86][CostModel] Add some load/store tests w/ non-power-of-two elt cnt vectors
For example the cost to load <48 x i16> should likely be 3,
because that's just 3x load i256.
Michał Górny [Fri, 12 Mar 2021 08:02:36 +0000 (09:02 +0100)]
[lldb] [client] Support for multiprocess extension
Add a minimal support for the multiprocess extension in gdb-remote
client. It accepts PIDs as part of thread-ids, and rejects PIDs that
do not match the current inferior.
Differential Revision: https://reviews.llvm.org/D99603
Mikael Holmen [Thu, 8 Apr 2021 11:21:07 +0000 (13:21 +0200)]
[NVPTX] Fix compiler warning in NDEBUG build [NFC]
Without the fix we get
../lib/Target/NVPTX/NVPTXLowerArgs.cpp:236:24: error: lambda capture 'Arg' is not used [-Werror,-Wunused-lambda-capture]
auto IsALoadChain = [Arg](Value *Start) {
^~~
1 error generated.
Andrzej Warzynski [Thu, 8 Apr 2021 10:01:35 +0000 (10:01 +0000)]
[flang][nfc] Rename some test files
Update test names as per Flang's coding style guide [1]:
```
File names should use dashes, not underscores.
```
[1] https://github.com/llvm/llvm-project/blob/main/flang/docs/C%2B%2Bstyle.md#files