Matt Arsenault [Wed, 22 Jul 2020 13:22:45 +0000 (09:22 -0400)]
GlobalISel: Add scalarSameSizeAs LegalizeRule
Widen or narrow a type to a type with the same scalar size as
another. This can be used to force G_PTR_ADD/G_PTRMASK's scalar
operand to match the bitwidth of the pointer type. Use this to
disallow narrower types for G_PTRMASK.
Matt Arsenault [Wed, 22 Jul 2020 13:52:49 +0000 (09:52 -0400)]
GlobalISel: Drop original type pointeriness in minScalarSameAs
It is not useful to report WidenScalar for a pointer value, so always
report a scalar value with the target size. This allows using this to
clamp the scalar operand to the pointer size in operations like
G_PTR_ADD or G_PTRMASK.
Matt Arsenault [Wed, 22 Jul 2020 13:26:11 +0000 (09:26 -0400)]
GlobalISel: Fix maxScalarIf predicate check
The std::function itself was tested, not the result of the actual
query. It seems like there should be a warning for this. Inline the
check to avoid this.
Fangrui Song [Fri, 24 Jul 2020 00:51:48 +0000 (17:51 -0700)]
Revert D84264 "[SCCP] Directly remove non-feasible edges" &
5db5b4bc4394ca247c9eb665e03b851848aa2fbf
It breaks stage-2 build. Clang crashed when compiling
llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp
llvm/Support/GenericDomTree.h eraseNode: Node is not a leaf node
Tim Keith [Fri, 24 Jul 2020 00:15:33 +0000 (17:15 -0700)]
[flang] Implicitly convert result of statement function
The result of a statement function may require an implicit conversion
to match its result type. Add that to the expression that represents
the statement function body in SubprogramDetails.
Extract the analysis of that expression into a separate function.
Dump the statement function expression as part of the dump of
SubprogramDetails.
Differential Revision: https://reviews.llvm.org/D84452
Mitch Phillips [Fri, 24 Jul 2020 00:07:55 +0000 (17:07 -0700)]
Revert "[libFuzzer] Expose fuzzer::FuzzerDriver()"
This reverts commit
22a376e73bc218137738ee4ac8af44e223576475.
Dokyung Song [Thu, 23 Jul 2020 23:03:13 +0000 (23:03 +0000)]
[libFuzzer] Add a missing include_directories.
Summary: FuzzerInterceptors.cpp includes <sanitizer/common_interface_defs.h>, and this patch adds a missing include_directories to make sure the included file is found.
Reviewers: morehouse, hctim, dmajor
Subscribers: mgorny, #sanitizers
Tags: #sanitizers
Differential Revision: https://reviews.llvm.org/D84474
Eli Friedman [Thu, 23 Jul 2020 00:06:47 +0000 (17:06 -0700)]
[AArch64][SVE] Teach copyPhysReg to copy ZPR2/3/4.
It's sort of tricky to hit this in practice, but not impossible. I have
a synthetic C testcase if anyone is interested.
The implementation is identical to the equivalent NEON register copies.
Differential Revision: https://reviews.llvm.org/D84373
Lang Hames [Thu, 23 Jul 2020 23:03:45 +0000 (16:03 -0700)]
[ORC] Enable use of TargetProcessControl::getMemMgr with ObjectLinkingLayer.
This patch makes ownership of the JITLinkMemoryManager by ObjectLinkingLayer
optional: the layer can still own the memory manager but no longer has to.
Evevntually we want to move to a state where ObjectLinkingLayer never owns its
memory manager. For now allowing optional ownership makes it easier to develop
classes that can dynamically use either RTDyldObjectLinkingLayer, which owns
its memory managers, or ObjectLinkingLayer (e.g. LLJIT).
Craig Topper [Thu, 23 Jul 2020 23:06:25 +0000 (16:06 -0700)]
[bugpoint] Fix typo in assertion message. NFC
Thomas Lively [Thu, 23 Jul 2020 23:05:19 +0000 (16:05 -0700)]
[WebAssembly] Fix store_unfolded_offset tests in simd-offset.ll
These tests were previously duplicates of the
unfolded_gep_negative_offset tests, and this change updates them to
test what they were meant to test.
Differential Revision: https://reviews.llvm.org/D84365
Roman Lebedev [Thu, 23 Jul 2020 22:25:25 +0000 (01:25 +0300)]
[NFC][GVN] Add a (horrible) test for D84181 demonstrating non-NFC'ness
Amy Kwan [Thu, 23 Jul 2020 18:12:45 +0000 (13:12 -0500)]
[PowerPC] Implement low-order Vector Multiply, Modulus and Divide Instructions
This patch aims to implement the low order vector multiply, divide and modulo
instructions available on Power10.
The patch involves legalizing the ISD nodes MUL, UDIV, SDIV, UREM and SREM for
v2i64 and v4i32 vector types in order to utilize the following instructions:
- Vector Multiply Low Doubleword: vmulld
- Vector Modulus Word/Doubleword: vmodsw, vmoduw, vmodsd, vmodud
- Vector Divide Word/Doubleword: vdivsw, vdivsd, vdivuw, vdivud
Differential Revision: https://reviews.llvm.org/D82510
Petr Hosek [Thu, 23 Jul 2020 22:12:42 +0000 (15:12 -0700)]
Revert "[CMake] Simplify CMake handling for zlib"
This reverts commit
1d09ecf36175f7910ffedd6d497c07b5c74c22fb since
it breaks sanitizer bots.
Peter Collingbourne [Wed, 22 Jul 2020 20:45:14 +0000 (13:45 -0700)]
scudo: Interleave odd and even tags for adjacent blocks.
This guarantees that we will detect a buffer overflow or underflow
that overwrites an adjacent block. This spatial guarantee is similar
to the temporal guarantee that we provide for immediate use-after-free.
Enabling odd/even tags involves a tradeoff between use-after-free
detection and buffer overflow detection. Odd/even tags make it more
likely for buffer overflows to be detected by increasing the size of
the guaranteed "red zone" around the allocation, but on the other
hand use-after-free is less likely to be detected because the tag
space for any particular chunk is cut in half. Therefore we introduce
a tuning setting to control whether odd/even tags are enabled.
Differential Revision: https://reviews.llvm.org/D84361
Eric Christopher [Thu, 23 Jul 2020 21:53:18 +0000 (14:53 -0700)]
Use llvm::size rather than an empty loop to get the number of top
level loops.
Petr Hosek [Thu, 30 Apr 2020 20:07:13 +0000 (13:07 -0700)]
[CMake] Simplify CMake handling for zlib
Rather than handling zlib handling manually, use find_package from CMake
to find zlib properly. Use this to normalize the LLVM_ENABLE_ZLIB,
HAVE_ZLIB, HAVE_ZLIB_H. Furthermore, require zlib if LLVM_ENABLE_ZLIB is
set to YES, which requires the distributor to explicitly select whether
zlib is enabled or not. This simplifies the CMake handling and usage in
the rest of the tooling.
This is a reland of abb0075 with all followup changes and fixes that
should address issues that were reported in PR44780.
Differential Revision: https://reviews.llvm.org/D79219
Matt Morehouse [Thu, 23 Jul 2020 20:53:46 +0000 (20:53 +0000)]
Reland "[DFSan] Handle fast16labels for all API functions."
Support fast16labels in `dfsan_has_label`, and print an error for all
other API functions. For `dfsan_dump_labels` we return silently rather
than crashing since it is also called from the atexit handler where it
is undefined behavior to call exit() again.
Reviewed By: kcc
Differential Revision: https://reviews.llvm.org/D84215
Amara Emerson [Thu, 23 Jul 2020 21:15:58 +0000 (14:15 -0700)]
[GlobalISel] Use existing MIR builder instead of creating one in combiner.
Tobias Hieta [Thu, 23 Jul 2020 21:10:22 +0000 (00:10 +0300)]
[clang] Fix libdl linking for libclang in standalone mode
Differential Revision: https://reviews.llvm.org/D81385
Sidharth Baveja [Thu, 23 Jul 2020 21:02:04 +0000 (21:02 +0000)]
[Loop Fusion] Integrate Loop Peeling into Loop Fusion (re-land after fixing ASAN build failures)
This patch adds the ability to peel off iterations of the first loop in loop
fusion. This can allow for both loops to have the same trip count, making it
legal for them to be fused together.
Here is a simple scenario peeling can be used in loop fusion:
for (i = 0; i < 10; ++i)
a[i] = a[i] + 3;
for (j = 1; j < 10; ++j)
b[j] = b[j] + 5;
Here is we can make use of peeling, and then fuse the two loops together. We
can peel off the 0th iteration of the loop i, and then combine loop i and j for
i = 1 to 10.
a[0] = a[0] +3;
for (i = 1; i < 10; ++i) {
a[i] = a[i] + 3;
b[i] = b[i] + 5;
}
Currently peeling with loop fusion is only supported for loops with constant
trip counts and a single exit point. Both unguarded and guarded loops are
supported.
Reviewed By: bmahjour (Bardia Mahjour), MaskRay (Fangrui Song)
Differential Revision: https://reviews.llvm.org/D82927
David Green [Thu, 23 Jul 2020 20:47:59 +0000 (21:47 +0100)]
[ARM] Add predicated mla reduction patterns
Similar to
8fa824d7a3 but this time for MLA patterns, this selects
predicated vmlav/vmlava/vmlalv/vmlava instructions from
vecreduce.add(select(p, mul(x, y), 0)) nodes.
Differential Revision: https://reviews.llvm.org/D84102
Jonas Devlieghere [Thu, 23 Jul 2020 20:06:51 +0000 (13:06 -0700)]
[lldb] Remove the user-defined copy-ctor in ConstString
ConstString is essentially trivially copyable yet it has a user defined
copy constructor that copies its one member pointer. Remove it so it
qualifies as trivial in the eyes of the compiler.
This also fixes two unused variable warnings now that the compiler knows
that the constructor has no side-effects.
Differential revision: https://reviews.llvm.org/D84440
Steven Wu [Thu, 23 Jul 2020 20:04:57 +0000 (13:04 -0700)]
[Bitcode] Avoid duplicating linker option when upgrading
Summary:
The upgrading path from old ModuleFlag based linker options to the new
NamedMetadata based linker option in in materializeMetadata() which gets
called once for the module and once for every GV. The linker options are
getting dup'ed every time and it can create massive amount of the linker
options in the object file that gets created from old bitcode. Fix the
problem by checking if the new option exists or not before upgrade
again.
rdar://
64543389
Reviewers: pcc, t.p.northover, dexonsmith, arphaman
Reviewed By: arphaman
Subscribers: hiraditya, jkorous, ributzka, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D83688
Nikita Popov [Thu, 23 Jul 2020 19:50:47 +0000 (21:50 +0200)]
[SCCP] Add another switch+phi test (NFC)
Tarindu Jayatilaka [Thu, 23 Jul 2020 19:46:47 +0000 (12:46 -0700)]
Add new function properties to FunctionPropertiesAnalysis
Added LoadInstCount, StoreInstCount, MaxLoopDepth, LoopCount
Reviewed By: jdoerfert, mtrofin
Differential Revision: https://reviews.llvm.org/D82283
Matt Arsenault [Wed, 22 Jul 2020 23:22:34 +0000 (19:22 -0400)]
AMDGPU: Fix failures from overflowing uint8_t number of operands
If the operand index exceeded the limit of unsigned char, it wrapped
and would point to the wrong operand. Increase the size of the operand
index field to avoid this, and also don't bother trying to fold into
implicit operands.
Tue Ly [Thu, 23 Jul 2020 19:26:05 +0000 (15:26 -0400)]
[libc] Remove unused #include <vector> in fmin_test, fminf_test, and fminl_test.
Tue Ly [Thu, 23 Jul 2020 06:04:33 +0000 (02:04 -0400)]
[libc] Add implementations of fmax, fmaxf, and fmaxl.
Summary: Add implementations of fmax, fmaxf, and fmaxl.
Reviewers: sivachandra
Subscribers: mgorny, tschuett, libc-commits, ecnelises
Tags: #libc-project
Differential Revision: https://reviews.llvm.org/D84385
Peter Collingbourne [Thu, 23 Jul 2020 18:31:32 +0000 (11:31 -0700)]
scudo: Remove some boilerplate from the combined allocator tests. NFCI.
Differential Revision: https://reviews.llvm.org/D84454
Mitch Phillips [Thu, 23 Jul 2020 19:00:50 +0000 (12:00 -0700)]
[libFuzzer] Expose fuzzer::FuzzerDriver()
Summary:
Allows other-language libFuzzer derivatives to invoke the driver.
Patch By: Ian Eldred Pudney <ipudney@google.com>
Reviewers: morehouse, kcc
Reviewed By: morehouse
Subscribers: #sanitizers
Tags: #sanitizers
Differential Revision: https://reviews.llvm.org/D84425
Amara Emerson [Wed, 17 Jun 2020 18:55:53 +0000 (11:55 -0700)]
[AArch64][GlobalISel] Add post-legalize combine for sext(trunc(sextload)) -> trunc/copy
On AArch64 we generate redundant G_SEXTs or G_SEXT_INREGs because of this.
Differential Revision: https://reviews.llvm.org/D81993
Nikita Popov [Thu, 23 Jul 2020 18:58:03 +0000 (20:58 +0200)]
[SCCP] Add missing change reporting
Forgot to actually use the return value of the function.
Tarindu Jayatilaka [Thu, 23 Jul 2020 18:56:56 +0000 (11:56 -0700)]
Add a Printer to the FunctionPropertiesAnalysis
A printer pass and a lit test case was added.
Reviewed By: mtrofin
Differential Revision: https://reviews.llvm.org/D82523
Nikita Popov [Sun, 19 Jul 2020 15:06:17 +0000 (17:06 +0200)]
[IR] Add min/max/abs intrinsics
This adds the llvm.abs(), llvm.umin(), llvm.umax(), llvm.smin(),
and llvm.smax() intrinsics specified in D81829. For SelectionDAG,
the ISD opcodes and all the legalization and lowering already exist,
so this just wires them up to the intrinsic in the SDAG builder and
adds rudimentary tests. For GlobalISel only the min/max intrinsics
are wired up, as llvm.abs() will require the addition of a G_ABS op,
and corresponding legalization support.
Differential Revision: https://reviews.llvm.org/D84125
Roman Lebedev [Thu, 23 Jul 2020 18:45:50 +0000 (20:45 +0200)]
[LangRef] Add integer min/max/abs intrinsics
Add LangRef specification for the llvm.abs, llvm.umin, llvm.umax,
llvm.smin, and llvm.smax integer intrinsics.
Link to RFC:
https://lists.llvm.org/pipermail/llvm-dev/2020-June/142257.html
Proposed alive2 implementation:
https://github.com/AliveToolkit/alive2/pull/353
Differential Revision: https://reviews.llvm.org/D81829
Tarindu Jayatilaka [Thu, 23 Jul 2020 18:49:10 +0000 (11:49 -0700)]
Refactor FunctionPropertiesAnalysis
this separates `analyze` logic from `FunctionPropertiesAnalysis`
Reviewed By: mtrofin
Differential Revision: https://reviews.llvm.org/D82521
Matt Arsenault [Wed, 8 Jul 2020 15:32:24 +0000 (11:32 -0400)]
AMDGPU/GlobalISel: Add some tests for stack passed pointers
Nikita Popov [Tue, 21 Jul 2020 19:26:30 +0000 (21:26 +0200)]
[SCCP] Directly remove non-feasible edges
Non-feasible control-flow edges are currently removed by replacing
the branch condition with a constant and then calling
ConstantFoldTerminator. This happens in a rather roundabout manner,
by inspecting the users (effectively: predecessors) of unreachable
blocks, and further complicated by the need to explicitly materialize
the condition for "forced" edges. I would like to extend SCCP to
discard switch conditions that are non-feasible based on range
information, but this is incompatible with the current approach
(as there is no single constant we could use.)
Instead, this patch explicitly removes non-feasible edges. It
currently only needs to handle the case where there is a single
feasible edge. The llvm_unreachable() branch will need to be
implemented for the aforementioned switch improvement.
Differential Revision: https://reviews.llvm.org/D84264
Matt Arsenault [Sun, 5 Jul 2020 20:15:36 +0000 (16:15 -0400)]
AMDGPU/GlobalISel: Handle call return values
The only case that I know doesn't work is the implicit sret case when
the return type doesn't fit in the return registers.
clementval [Thu, 23 Jul 2020 18:10:00 +0000 (14:10 -0400)]
[flang][openacc] Add missing comment in header
MaheshRavishankar [Thu, 23 Jul 2020 17:20:54 +0000 (10:20 -0700)]
[mlir][Linalg] Fixing bug in subview size computation in Linalg tiling.
The `makeTiledViews` did not use the sizes of the tiled views based on
the result of the loop bound inference computation. This manifested as
an error in computing tile sizes with convolution where not all the
result expression of concatenated affine maps are simple
AffineDimExpr.
Differential Revision: https://reviews.llvm.org/D84366
Louis Dionne [Thu, 23 Jul 2020 15:05:47 +0000 (11:05 -0400)]
[libc++] Build the dylib with -faligned-allocation
This avoids issues when building the dylib for deployment targets that
don't support aligned allocation, where Clang normally triggers an
error to warn users their code would break at runtime when back-deployed.
Since we're building the dylib itself, which contains the aligned
allocation functions, we don't want to trigger that error.
Differential Revision: https://reviews.llvm.org/D84418
Matt Morehouse [Thu, 23 Jul 2020 17:48:10 +0000 (17:48 +0000)]
Revert "[DFSan] Handle fast16labels for all API functions."
This reverts commit
19d9c0397e61f2fb59a22d7c699436133a409aea due to
buildbot failure.
Nikita Popov [Thu, 23 Jul 2020 17:12:20 +0000 (19:12 +0200)]
[PredicateInfo][SCCP] Remove assertion (PR46814)
As long as RenamedOp is not guaranteed to be accurate, we cannot
assert here and should just return false. This was already done
for the other conditions in this function.
Fixes https://bugs.llvm.org/show_bug.cgi?id=46814.
Simon Pilgrim [Thu, 23 Jul 2020 17:22:07 +0000 (18:22 +0100)]
[X86][SSE] Add additional (f)add(shuffle(x,y),shuffle(x,y)) tests for D83789
Dokyung Song [Thu, 23 Jul 2020 16:31:12 +0000 (16:31 +0000)]
[libFuzzer] Disable interceptor tests on non-Linux platforms.
Summary: libFuzzer's interceptor support added in
831ae45e3dc609e43ba561af07670a8fe47461ef currently only works on Linux. This patch disables the test cases added as part of that commit on non-Linux platforms.
Reviewers: morehouse, hctim
Subscribers: #sanitizers
Tags: #sanitizers
Differential Revision: https://reviews.llvm.org/D84434
Gui Andrade [Thu, 23 Jul 2020 16:50:42 +0000 (16:50 +0000)]
[MSAN] Allow emitting checks for struct types
Differential Revision: https://reviews.llvm.org/D82680
Simon Pilgrim [Thu, 23 Jul 2020 16:50:00 +0000 (17:50 +0100)]
RegionInfo.cpp - remove duplicate includes that already exist in RegionInfo.h. NFC.
Also remove some unnecessary forward declarations in RegionInfo.h.
Gui Andrade [Thu, 23 Jul 2020 16:36:19 +0000 (16:36 +0000)]
[MSAN] Never allow checking calls to __sanitizer_unaligned_{load,store}
These functions expect the caller to always pass shadows over TLS.
Differential Revision: https://reviews.llvm.org/D84351
Louis Dionne [Thu, 23 Jul 2020 16:39:38 +0000 (12:39 -0400)]
[libc++abi] Also build the static archive with C++17
The dylib and the static archive should really be built using the same
Standard, it was just an oversight.
Raphael Isemann [Thu, 23 Jul 2020 16:35:40 +0000 (18:35 +0200)]
[lldb] Make socket_packet_pump.py work in Python3
Summary:
The `string_escape` encoding used here was removed in Python 3 which makes the
test crash during tearDown:
```
File "lldb/third_party/Python/module/unittest2/unittest2/case.py", line 386, in run
self.tearDown()
File "lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py", line 124, in tearDown
self._pump_queues.verify_queues_empty()
File "lldb/packages/Python/lldbsuite/test/tools/lldb-server/socket_packet_pump.py", line 55, in verify_queues_empty
_dump_queue(self.packet_queue())
File "lldb/packages/Python/lldbsuite/test/tools/lldb-server/socket_packet_pump.py", line 28, in _dump_queue
print(codecs.encode(the_queue.get(True), "string_escape"))
LookupError: unknown encoding: string_escape
```
Just replace it with `repr` which should work in both Python versions.
Reviewers: labath, JDevlieghere
Reviewed By: labath, JDevlieghere
Subscribers: JDevlieghere
Differential Revision: https://reviews.llvm.org/D84017
Raphael Isemann [Thu, 23 Jul 2020 16:18:25 +0000 (18:18 +0200)]
[lldb][NFC] Remove FormatMap
Summary:
FormattersContainer.h has two containers: FormatMap and FormattersContainer
itself. FormatMap is essentially just a SetVector with a listener interface that
is aspiring to be thread-safe as most of its functions lock its member mutex.
FormattersContainer is for the most part just calling the matching functions of
internal FormatMap instance and essentially acts as a wrapper class with some
minor formatter search functionality on top. The only difference is that the
FormattersContainer's public `Get` function is actually searching formatters in
the list of formatters (and for example doing regex-matching) while FormatMap's
`Get` function is just looking up a a format by the type matcher string.
This patch deletes `FormatMap` by just renaming it to `FormattersContainer` and
pulling in the two `Get` functions from the original `FormattersContainer`
class.
The only other user of `FormatMap` was the `NamedSummariesMap` in the
`FormatManager` which I migrated by just making it also a `FormattersContainer`
and replaced the only call to the `Get` function (which now has new semantics)
with `GetExact` (which is FormattersContainer's function that has the semantics
of FormatMap's `Get`). As `NamedSummariesMap` only stores non-regex-based
formatters, both `Get` and `GetExact` would have worked, so this was mostly to
clarify that this is supposed to be NFC.
I also added the missing mutex lock in the `GetCount` function which was
previously missing in the `FormatMap` implementation. Technically not "NFC" but
I anyway had to change the function...
Reviewers: labath, mib
Reviewed By: labath
Subscribers: abidh, JDevlieghere
Differential Revision: https://reviews.llvm.org/D84296
Gui Andrade [Thu, 23 Jul 2020 16:30:49 +0000 (16:30 +0000)]
[MSAN] Mark libatomic test unsupported on PowerPC
Florian Hahn [Thu, 23 Jul 2020 16:17:40 +0000 (17:17 +0100)]
[IPSCCP] Add test case for PR46717 for argmemonly handling.
Raphael Isemann [Tue, 21 Jul 2020 16:44:16 +0000 (18:44 +0200)]
Reland [lldb] Unify type name matching in FormattersContainer II
This was originally reverted because the m_valid member in TypeMatcher was
unused in builds with disabled asserts. Now the member is gone and the default
constructor is deleted (thanks Eric for the idea!).
Summary:
FormattersContainer stores LLDB's formatters. It's implemented as a templated
map-like data structures that supports any kind of value type and only allows
ConstString and RegularExpression as the key types. The keys are used for
matching type names (e.g., the ConstString key `std::vector` matches the type
with the same name while RegularExpression keys match any type where the
RegularExpression instance matches).
The fact that a single FormattersContainer can only match either by string
comparison or regex matching (depending on the KeyType) causes us to always have
two FormatterContainer instances in all the formatting code. This also leads to
us having every type name matching logic in LLDB twice. For example,
TypeCategory has to implement every method twice (one string matching one, one
regex matching one).
This patch changes FormattersContainer to instead have a single `TypeMatcher`
key that wraps the logic for string-based and regex-based type matching and is
now the only possible KeyType for the FormattersContainer. This means that a
single FormattersContainer can now match types with both regex and string
comparison.
To summarize the changes in this patch:
* Remove all the `*_Impl` methods from `FormattersContainer`
* Instead call the FormatMap functions from `FormattersContainer` with a
`TypeMatcher` type that does the respective matching.
* Replace `ConstString` with `TypeMatcher` in the few places that directly
interact with `FormattersContainer`.
I'm working on some follow up patches that I split up because they deserve their
own review:
* Unify FormatMap and FormattersContainer (they are nearly identical now).
* Delete the duplicated half of all the type matching code that can now use one
interface.
* Propagate TypeMatcher through all the formatter code interfaces instead of
always offering two functions for everything.
There is one ugly design part that I couldn't get rid of yet and that is that we
have to support getting back the string used to construct a `TypeMatcher` later
on. The reason for this is that LLDB only supports referencing existing type
matchers by just typing their respective input string again (without even
supplying if it's a regex or not).
Reviewers: davide, mib
Reviewed By: mib
Subscribers: mgorny, JDevlieghere
Differential Revision: https://reviews.llvm.org/D84151
Simon Pilgrim [Thu, 23 Jul 2020 16:16:00 +0000 (17:16 +0100)]
CSEInfo.h - remove unused includes. NFC.
Craig Topper [Thu, 23 Jul 2020 15:52:06 +0000 (08:52 -0700)]
[X86] Add Feature64Bit to the 'generic' CPU and remove feature string hacking in X86Subtarget constructor
Feature64Bit is only used by a check in the X86Subtarget
constructor to ensure that the CPU selected supports 64-bit mode
when the triple is for 64-bit mode.
'generic' is the default CPU in llc and so needs to be able to
pass this check. Previously we did this by detecting the name and
adding the feature to the feature string. But there doesn't seem
to be any reason we can't just add the feature to the CPU directly.
Pete Steinfeld [Wed, 15 Jul 2020 23:02:49 +0000 (16:02 -0700)]
[flang] Fix a crash when a BOZ literal is used as a relational operator
Summary:
Expressions like `iVar==z'fe'` were causing an assertion error because
the `Relate()` function in `Evaluate/tools.cpp` that processes
relational operators didn't deal with BOZ literals, which are typeless.
I fixed this by checking to see if the operands are BOZ literals. If
so, if the other operand is REAL, I convert them to REAL. Otherwise, I convert
them to integers with default kind.
I also added a test to resolve63.f90 that triggers the problem.
Reviewers: tskeith, DavidTruby
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D83917
Jonas Devlieghere [Thu, 23 Jul 2020 15:54:56 +0000 (08:54 -0700)]
[lldb] Pass ConstString by value (again) (NFC)
This reverts "Eliminate unneeded value parameters in Utility" for
ConstString. As Pavel pointed out on the mailing list, the class *is*
trivially copyable.
Steven Wu [Thu, 23 Jul 2020 16:06:47 +0000 (09:06 -0700)]
[Bitcode] Drop invalid branch_weight in BitcodeReader
Summary:
If bitcode reader gets an invalid branch weight, drop that from the
inputs. This allows us to read the broken modules we generated before
the verifier was able to catch this.
rdar://
64870641
Reviewers: yrouban, t.p.northover, dexonsmith, arphaman, aprantl
Reviewed By: aprantl
Subscribers: aprantl, hiraditya, jkorous, ributzka, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D83699
Dokyung Song [Thu, 16 Jul 2020 20:26:03 +0000 (20:26 +0000)]
Recommit "[libFuzzer] Link libFuzzer's own interceptors when other compiler runtimes are not linked."
Summary: libFuzzer intercepts certain library functions such as memcmp/strcmp by defining weak hooks. Weak hooks, however, are called only when other runtimes such as ASan is linked. This patch defines libFuzzer's own interceptors, which is linked into the libFuzzer executable when other runtimes are not linked, i.e., when -fsanitize=fuzzer is given, but not others.
The patch once landed but was reverted in
8ef9e2bf355d05bc81d8b0fe1e5333eec59a0a91 due to an assertion failure caused by calling an intercepted function, strncmp, while initializing the interceptors in fuzzerInit(). This issue is now fixed by calling libFuzzer's own implementation of library functions (i.e., internal_*) when the fuzzer has not been initialized yet, instead of recursively calling fuzzerInit() again.
Reviewers: kcc, morehouse, hctim
Subscribers: #sanitizers, krytarowski, mgorny, cfe-commits
Tags: #clang, #sanitizers
Differential Revision: https://reviews.llvm.org/D83494
Matt Morehouse [Thu, 23 Jul 2020 15:46:44 +0000 (15:46 +0000)]
[DFSan] Print more debugging info on test failure.
Raphael Isemann [Thu, 23 Jul 2020 15:25:17 +0000 (17:25 +0200)]
[lldb] Make deleting frame recognizers actually work
Summary:
Frame recognizers are stored alongside a flag that indicates whether they were
deleted by the user. If the flag is set, they are supposed to be ignored by the
rest of the frame recognizer code. 'frame recognizer delete' is supposed to set
that flag. 'frame recognizer clear' however actually deletes all frame
recognizers (so, it doesn't set the flag but directly deletes them from the
list).
The current implementation of this concept is pretty broken. `frame recognizer
delete` sets the flag, but it somehow thinks that the recognizer id is an index
in the recognizer list. That's not true as it's actually just a member of each
recognizer entry. So it actually just sets the `deleted` flag for a random other
recognizer. The tests for the recognizer still pass as `frame recognizer list`
is also broken and just completely ignored the `deleted` flag and lists all
recognizers. Also `frame recognizer delete` just ignores if it can't actually
delete a recognizer if the id is invalid.
I think we can simplify this whole thing by just actually deleting recognizers
instead of making sure all code is actually respecting the `deleted` flag. I
assume the intention of this was to make sure that all recognizers are getting
unique ids over the course of an LLDB session, but as `clear` is actually
deleting them and we keep recycling ids, that didn't really work to begin with.
This patch deletes the `deleted` flag and just actually deletes the stored
recognizer. Also adds the missing error message in case it find a recognizer
with a given id.
Reviewers: mib
Reviewed By: mib
Subscribers: abidh, JDevlieghere
Differential Revision: https://reviews.llvm.org/D84404
Mircea Trofin [Thu, 23 Jul 2020 15:42:34 +0000 (08:42 -0700)]
[llvm][NFC] Add comments and common-case API to MachineBlockFrequencyInfo
Clarify the relation between a block's BlockFrequency and the
getEntryFreq() API, and added an API for the relatively common case of
finding a block's frequency relative to the entrypoint.
Added / moved some comments to header.
Differential Revision: https://reviews.llvm.org/D84357
Louis Dionne [Thu, 23 Jul 2020 15:35:04 +0000 (11:35 -0400)]
[libc++abi] Build the dylib with C++17, like for libc++
Craig Topper [Thu, 23 Jul 2020 15:24:45 +0000 (08:24 -0700)]
[X86][docs] Add mention of removal of 'mpx' backend feature to the release notes.
I removed the feature from X86.td in
ebe5f17f9c396f14742a7c747951b65eaada158e
Sanjay Patel [Thu, 23 Jul 2020 14:35:03 +0000 (10:35 -0400)]
[VectorCombine] add tests for load vectorization; NFC
Simon Pilgrim [Thu, 23 Jul 2020 14:52:16 +0000 (15:52 +0100)]
GISelKnownBits.h - remove unused includes. NFC.
Simon Pilgrim [Thu, 23 Jul 2020 14:47:53 +0000 (15:47 +0100)]
AggressiveInstCombine.h - remove unused includes. NFC.
Simon Pilgrim [Thu, 23 Jul 2020 14:42:25 +0000 (15:42 +0100)]
PassTimingInfo.h - remove unused includes. NFC.
Remove duplicate includes from PassTimingInfo.cpp that already exist in PassTimingInfo.h
Fangrui Song [Thu, 23 Jul 2020 15:16:01 +0000 (08:16 -0700)]
[ELF] Support -r --gc-sections
-r --gc-sections is usually not useful because it just makes intermediate output
smaller. https://bugs.llvm.org/show_bug.cgi?id=46700#c7 mentions a use case:
validating the absence of undefined symbols ealier than in the final link.
After D84129 (SHT_GROUP support in -r links), we can support -r
--gc-sections without extra code. So let's allow it.
Reviewed By: grimar, jhenderson
Differential Revision: https://reviews.llvm.org/D84131
LLVM GN Syncbot [Thu, 23 Jul 2020 15:07:01 +0000 (15:07 +0000)]
[gn build] Port
92874d28669
Evgeny Leviant [Thu, 23 Jul 2020 15:05:11 +0000 (18:05 +0300)]
[CodeGen][TargetPassConfig] Add unreachable-mbb-elimination pass explicitly
Differential revision: https://reviews.llvm.org/D84228
Braedy Kuzma [Thu, 23 Jul 2020 14:57:22 +0000 (15:57 +0100)]
[Matrix] Add asserts for mismatched element types.
This patch clarifies the failing point of having input or output vectors
of differing types. Before, lowering would fail elsewhere (e.g. in
`fmul` creation) which may have been not immediately clear.
As a side effect, the `getElementType` and `getVectoryTy` functions
required the `const` qualifier to be added.
Reviewers: fhahn
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D84374
Sebastian Neubauer [Thu, 23 Jul 2020 14:58:16 +0000 (16:58 +0200)]
[AMDGPU] Fix typo. NFC
Xing GUO [Thu, 23 Jul 2020 15:00:19 +0000 (23:00 +0800)]
[DWARFYAML] Refactor emitDebugInfo() to make the length be inferred.
This patch refactors `emitDebugInfo()` to make the length field be
inferred from its content. Besides, the `Visitor` class is removed in
this patch. The original `Visitor` class helps us determine an
appropriate length and emit the .debug_info section. These two
processes can be merged into one process. Besides, the length field
should be inferred when it's missing rather than when it's zero.
Reviewed By: jhenderson, labath
Differential Revision: https://reviews.llvm.org/D84008
Xing GUO [Thu, 23 Jul 2020 14:57:30 +0000 (22:57 +0800)]
[DWARFYAML] Pull out common helper functions for rnglist and loclist tables. NFC.
This patch helps pull out some common helper functions for range list
and location list tables. NFC.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D84383
Kazuaki Ishizaki [Thu, 23 Jul 2020 14:40:35 +0000 (23:40 +0900)]
[mlir]: NFC: Fix trivial typo in documents and comments
Differential Revision: https://reviews.llvm.org/D84400
Simon Pilgrim [Thu, 23 Jul 2020 13:09:31 +0000 (14:09 +0100)]
[X86][SSE] SimplifyDemandedVectorEltsForTargetNode - add SSE shift multiple use handling
Add SimplifyMultipleUseDemandedVectorElts peek through for imm/var SSE shifts
Ulrich Weigand [Thu, 23 Jul 2020 13:31:15 +0000 (15:31 +0200)]
[SystemZ] Ensure -mno-vx disables any use of vector features
When passing the -vector feature to LLVM (or equivalently the
-mno-vx command line argument to clang), the intent is that
generated code must not use any vector features (in particular,
no vector registers must be used).
However, there are some cases where we still could generate
such uses; these are all related to some of the additional
vector features (like +vector-enhancements-1). Since none
of those features are actually usable with -vector, just make
sure we disable them all if -vector is given.
Florian Hahn [Thu, 23 Jul 2020 13:19:01 +0000 (14:19 +0100)]
[SCEVExpander] Use IRBuilderCallbackInserter to call rememberInstruction.
Currently there are plenty of instructions that SCEVExpander creates but
does not track as created. IRBuilder allows specifying a callback
whenever an instruction is inserted. Use this to call
rememberInstruction automatically for each created instruction.
There are still a few rememberInstruction calls remaining, because in
some cases Inst::Create functions are used to construct instructions.
Suggested by @lebedev.ri in D75980.
Reviewers: mkazantsev, reames, sanjoy.google, lebedev.ri
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D84326
Russell Gallop [Tue, 23 Jun 2020 13:50:11 +0000 (14:50 +0100)]
[docs] Fix TestSuiteGuide.md to mention scipy
This has been required since https://reviews.llvm.org/D57828.
Differential Revision: https://reviews.llvm.org/D82379
Mikhail Maltsev [Thu, 23 Jul 2020 13:20:30 +0000 (14:20 +0100)]
[libcxx] Adjust trivial_abi tests for C++03 and C++11 testing
This change replaces std::make_unique with manual construction of
std::unique_ptr to make the tests compatible with C++11
(std::make_unique is a C++14 feature).
libc++ supports std::unique_ptr and std::shared_ptr even in C++03 but
with some limitations: unique_ptr_array.pass.cpp and
shared_ptr_arg.pass.cpp fail to compile in C++03 mode and need to be
disabled.
Differential Revision: https://reviews.llvm.org/D84394
Jay Foad [Sun, 12 Jul 2020 18:18:45 +0000 (14:18 -0400)]
[GlobalISel][AMDGPU] Legalize saturating add/subtract
Add support in LegalizerHelper for lowering G_SADDSAT etc. either
using add/subtract-with-overflow or using max/min instructions.
Enable this lowering for AMDGPU so it can be tested. The legalization
rules are still approximate and skips out on using the clamp bit to
treat these as legal, which has never been used before. This also
doesn't yet try to deal with expanding SALU cases.
Florian Hahn [Thu, 23 Jul 2020 12:26:22 +0000 (13:26 +0100)]
[LSR] Re-generate check lines for test.
The test is quite frafile, as the check lines match IR numbers and it is
not obvious why only a very small subset is checked.
Re-generate check lines, so further changes are more obvious.
Florian Hahn [Thu, 23 Jul 2020 09:20:55 +0000 (10:20 +0100)]
[LoopIdiom] Add additional test cases.
Erich Keane [Thu, 23 Jul 2020 12:50:10 +0000 (05:50 -0700)]
Update make_cxx_dr_status and cxx_dr_status.html for the new release.
Our latest release is now 11, so update the make_cxx_dr_status and
regenerate the cxx_dr_status.html document.
Sanjay Patel [Thu, 23 Jul 2020 12:33:45 +0000 (08:33 -0400)]
[InstSimplify] reduce code duplication for binop expansion; NFC
D84250 proposes to extend this code, so the duplication for
the commuted case would continue to grow.
Simon Pilgrim [Thu, 23 Jul 2020 11:51:18 +0000 (12:51 +0100)]
Fix -Wparentheses warning - add missing brackets around the entire assertion condition
Pavel Labath [Mon, 6 Jul 2020 14:44:37 +0000 (16:44 +0200)]
Recommit "[lldb/API] Overwrite variables with SBLaunchInfo::SetEnvironment(append=true)"
The patch was reverted
27d52cd86a2c because of failures in
TestWeakSymbols.py. These have now been addressed in D83552.
The original commit message was:
This function was documented to overwrite entries with D76111, which was
adding a couple of similar functions. However, this function (unlike the
functions added in that patch) was/is not actually overwriting variables
-- any pre-existing variables would get ignored.
This behavior does not seem to be intentional. In fact, before the refactor in
D41359, this function could introduce duplicate entries, which could
have very surprising effects both inside lldb and on other applications
(some applications would take the first value, some the second one; in
lldb, attempting to unset a variable could make the second variable
become active, etc.).
Overwriting seems to be the most reasonable behavior here, so change the
code to match documentation.
Differential Revision: https://reviews.llvm.org/D83306
Shinji Okumura [Thu, 23 Jul 2020 11:26:30 +0000 (20:26 +0900)]
[Attributor] Cache query results for isPotentiallyReachable in AAReachability
Summary:
This is the next patch of [[ https://reviews.llvm.org/D76210 | D76210 ]].
This patch made a map in `InformationCache` for caching results.
Reviewers: jdoerfert, sstefan1, uenoku, homerdin, baziotis
Reviewed By: jdoerfert
Subscribers: hiraditya, uenoku, kuter, bbn, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D83246
Konstantin Schwarz [Tue, 30 Jun 2020 13:59:55 +0000 (15:59 +0200)]
[GlobalISel][InlineAsm] Add register class ID to the flags of register input operands
Summary: We do this already for output operands, but missed it for (non-tied) input operands.
Reviewers: arsenm, Petar.Avramovic
Reviewed By: arsenm
Subscribers: jvesely, wdng, nhaehnle, rovka, hiraditya, llvm-commits, kerbowa
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D83763
Simon Pilgrim [Thu, 23 Jul 2020 11:32:53 +0000 (12:32 +0100)]
Fix implicit dependency on CommandLine.h
Simon Pilgrim [Thu, 23 Jul 2020 11:31:12 +0000 (12:31 +0100)]
ValueProfileCollector.h - remove unnecessary includes. NFC.
Med Ismail Bennani [Thu, 23 Jul 2020 11:21:26 +0000 (13:21 +0200)]
[lldb/test] Fix TestHistoryRecall failure (NFC)
This patch fixes a test failure in TestHistoryRecall caused by the move
of the `history` subcommand to the `session` command.
This change was introduced by commit
85fbb08fa2ac5195dc7a2f13eea7de1471da2a21.
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Simon Pilgrim [Thu, 23 Jul 2020 11:14:35 +0000 (12:14 +0100)]
Fix implicit dependency on CommandLine.h
Med Ismail Bennani [Wed, 22 Jul 2020 11:07:12 +0000 (13:07 +0200)]
[lldb/interpreter] Move the history subcommand to session (NFCI)
This patch moves the `history` subcommand from the `command` to `session`
command. I think it makes more sense to have it there because as the `command`
usage suggests, it should be used to manage custom LLDB commands.
However, `history` is essentially tied to a debugging session and holds
all the commands (not specifically custom ones).
This also makes it more discoverable by adding an alias for it (mimicking
the shell builtin).
Differential Revision: https://reviews.llvm.org/D84307
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Simon Pilgrim [Thu, 23 Jul 2020 10:54:10 +0000 (11:54 +0100)]
Speculation.h - remove unnecessary includes. NFC.
Florian Hahn [Thu, 23 Jul 2020 10:54:38 +0000 (11:54 +0100)]
[ScheduleDAGRRList] Pacify overload mismatch in std::min.
On systems where size() doesn't return unsigned long, this leads to an
overloading mismatch. Convert the constant to whatever type is used for
Q.size() on the system.