Pavel Labath [Fri, 30 Oct 2020 13:24:21 +0000 (14:24 +0100)]
[lldb/test] Remove a double debugserver launch in TestGdbRemoteGPacket
Debug server is already launched by prep_debug_monitor_and_inferior. The
second seems to have been benign so far, but after
8cc49bec2 this test
started failing frequently on GreenDragon, and this is the only unusual
thing about it.
Pavel Labath [Thu, 29 Oct 2020 13:25:24 +0000 (14:25 +0100)]
[lldb/test] Simplify/generalize YAMLModuleTester
The class only supports a single DWARF unit (needed for my new test), and it
reimplements chunks of object and symbol file classes. We can just make it use
the real thing, save some LOC and get the full feature set.
Differential Revision: https://reviews.llvm.org/D90393
Louis Dionne [Thu, 29 Oct 2020 20:02:21 +0000 (16:02 -0400)]
[libc++] Add a new concept of ConfigAction, and use it in the DSL
This will allow adding bare compiler flags through the new
configuration DSL. Previously, this would have required adding
a Lit feature for each such flag.
Differential Revision: https://reviews.llvm.org/D90429
Georgii Rymar [Thu, 29 Oct 2020 13:04:45 +0000 (16:04 +0300)]
[yaml2obj] - Make `Section::Link` field to be `Optional<>`.
`Link` is not an optional field currently.
Because of this it is not convenient to write macros.
This makes it optional and fixes corresponding test cases.
Differential revision: https://reviews.llvm.org/D90390
Melanie Blower [Wed, 28 Oct 2020 16:23:21 +0000 (09:23 -0700)]
[clang][FPEnv] Diagnose Strict FP pragmas if target does not support StrictFP
Reviewers: sepavloff, kpn, aaron.ballman
Differential Revision: https://reviews.llvm.org/D90316
Eugene Zhulenev [Fri, 30 Oct 2020 12:19:42 +0000 (05:19 -0700)]
[mlir] Implement lowering to LLVM of async.execute ops with token dependencies
Add support for lowering `async.execute` operations with token dependencies
Example:
```
%dep = ... : !async.token
%token = async.execute[%dep] {
...
}
```
Token dependencies lowered to `async.await` operations inside the outline coroutine body.
Reviewed By: herhut, mehdi_amini, ftynse
Differential Revision: https://reviews.llvm.org/D89958
Stephen Kelly [Sun, 21 Jun 2020 12:31:27 +0000 (13:31 +0100)]
[AST] Fix traversal over CXXConstructExpr in Syntactic mode
Summary:
Skip over elidable nodes, and ensure that intermediate
CXXFunctionalCastExpr nodes are also skipped if they are semantic.
Reviewers: klimek, ymandel
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D82278
David Truby [Mon, 26 Oct 2020 14:45:11 +0000 (14:45 +0000)]
[Aarch64] Fix assumption that Windows implies x86
When compiling for Windows on Arm the amd64 debug interfce from the Visual
Studio SDK is used as the cmake currently only distinguishes between x86 and
amd64 by checking the pointer size. Instead we can get the target
architecture for the compilier and check that to distinguish between
architectures.
Simon Pilgrim [Fri, 30 Oct 2020 11:59:21 +0000 (11:59 +0000)]
Revert rG22c383763456 "[RISCV] Remove include of RISCVRegisterInfo.h from RISCVBaseInfo.h"
This reverts commit
22c38376345670c1883963e5e1cccd597a15b3a5.
This is causing a build failure with MSVC - reported on D90322
Andrzej Warzynski [Fri, 30 Oct 2020 11:27:04 +0000 (11:27 +0000)]
[Flang] Fix build failures (NFC)
Some changes introduced in https://reviews.llvm.org/D88655 cause compiler
warnings. Since in Flang warnings are treated as errors (`-Werror` is on by
default), these are in practice compiler errors (verified with clang-10 and
clang-11, gcc-10). This patches fixes these warning/failures.
Warning/error 1:
```
llvm-project/flang/lib/Semantics/check-omp-structure.cpp:107:3: error:
unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough]
```
Warning/error 2:
```
llvm-project/flang/lib/Semantics/check-directive-structure.h:39:9: error: field
'currentDirective_' will be initialized after field 'upperCaseDirName_'
[-Werror,-Wreorder-ctor]
```
Failing buildbot:
* http://lab.llvm.org:8011/#/builders/33/builds/386
alex-t [Wed, 28 Oct 2020 16:01:02 +0000 (19:01 +0300)]
[AMDGPU] SILowerControlFlow::removeMBBifRedundant. Refactoring plus fix for the null MBB pointer in MF->splice
Detailed description: This change addresses the refactoring adviced by foad. It also contain the fix for the case when getNextNode is null if the successor block is the last in MachineFunction.
Reviewed By: foad
Differential Revision: https://reviews.llvm.org/D90314
Simon Pilgrim [Fri, 30 Oct 2020 11:36:27 +0000 (11:36 +0000)]
[clangd] Fix MSVC implicit capture build failure.
MSVC builds were failing because the constexpr wasn't couldn't be captured by the lamdba.
Fix an implicit double to float truncation warning as well.
Simon Pilgrim [Thu, 29 Oct 2020 17:43:24 +0000 (17:43 +0000)]
[SROA] Pass Twine by const reference. NFCI.
Fixes clang-tidy warnings.
Nathan James [Fri, 30 Oct 2020 10:57:25 +0000 (10:57 +0000)]
[ADT][NFC] Silence some misc-unconventional-assign-operator warnings
Max Kazantsev [Fri, 30 Oct 2020 10:37:03 +0000 (17:37 +0700)]
[NFC] Simplify code in IndVars
David Green [Fri, 30 Oct 2020 10:20:59 +0000 (10:20 +0000)]
[ARM] Additional MVE VQDMULH tests. NFC
Nathan James [Fri, 30 Oct 2020 10:07:39 +0000 (10:07 +0000)]
[ADT] Add methods to SmallString for efficient concatenation
A common pattern when using SmallString is to repeatedly call append to build a larger string.
The issue here is the optimizer can't see through this and often has to check there is enough space in the storage for each string you try to append.
This results in lots of conditional branches and potentially multiple calls to grow needing to be emitted if the buffer wasn't large enough.
By taking an initializer_list of StringRefs, SmallString can preallocate the storage it needs for all of the StringRefs which only need to grow one time at most, then use a fast path of copying all the strings into its storage knowing there is guaranteed to be enough capacity.
By using StringRefs, this also means you can append different string like types in one go as they will all be implicitly converted to a StringRef.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D90386
Tres Popp [Thu, 29 Oct 2020 16:13:26 +0000 (17:13 +0100)]
[mlir] Add lowering for IsBroadcastable to Std dialect.
Differential Revision: https://reviews.llvm.org/D90407
Florian Hahn [Fri, 30 Oct 2020 09:32:43 +0000 (09:32 +0000)]
[DSE] Remove noop stores after killing stores for a MemoryDef.
Currently we fail to eliminate some noop stores if there is a kill-able
store between the starting def and the load. This is because we
eliminate noop stores first.
In practice it seems like eliminating noop stores after the main
elimination for a def covers slightly more cases.
This patch improves the number of stores slightly in 2 cases for X86 -O3
-flto
Same hash: 235 (filtered out)
Remaining: 2
Metric: dse.NumRedundantStores
Program base patch diff
test-suite...ce/Benchmarks/PAQ8p/paq8p.test 2.00 3.00 50.0%
test-suite...006/453.povray/453.povray.test 18.00 21.00 16.7%
There might be other phase ordering issues, but it appears that they do
not show up in the test-suite/SPEC2000/SPEC2006. We can always tune the
ordering later.
Partly fixes PR47887.
Reviewed By: asbirlea, zoecarver
Differential Revision: https://reviews.llvm.org/D89650
Louis Dionne [Wed, 21 Oct 2020 23:14:48 +0000 (16:14 -0700)]
[compiler-rt] Don't include libc++ headers from the source tree in MSAN
We shouldn't be including the libc++ headers from the source tree directly, since those headers are not configured (i.e. they don't use the __config_site) header like they should, which could mean up to ABI differences
Reviewed By: vitalybuka, phosek, ldionne
Differential Revision: https://reviews.llvm.org/D89915
Tres Popp [Thu, 29 Oct 2020 14:32:26 +0000 (15:32 +0100)]
[mlir] Add shape.is_broadcastable.
This op returns a boolean value indicating whether 2 ops are
broadcastable or not. This follows the same logic as the other ops with
broadcast in their names in the shape dialect.
Concretely, shape.is_broadcastable returning true implies that
shape.broadcast will not give an error, and shape.cstr_broadcastable
will not result in an assertion failure. Similarly, false implies an
error or assertion failure.
Dmitry Vyukov [Fri, 30 Oct 2020 08:17:46 +0000 (09:17 +0100)]
[sanitizer] Use __atomic_load/store() built-ins for generic 32-bit targets
Simplifies the code and fixes the build on SPARC.
See discussion in: http://lists.llvm.org/pipermail/llvm-dev/2020-October/145937.html
Author: glaubitz (John Paul Adrian Glaubitz)
Reviewed-in: https://reviews.llvm.org/D89940
Roman Lebedev [Fri, 30 Oct 2020 06:12:49 +0000 (09:12 +0300)]
[SCEV] SCEVPtrToIntExpr simplifications
If we've got an SCEVPtrToIntExpr(op), where op is not an SCEVUnknown,
we want to sink the SCEVPtrToIntExpr into an operand,
so that the operation is performed on integers,
and eventually we end up with just an `SCEVPtrToIntExpr(SCEVUnknown)`.
Reviewed By: mkazantsev
Differential Revision: https://reviews.llvm.org/D89692
Roman Lebedev [Fri, 30 Oct 2020 06:12:17 +0000 (09:12 +0300)]
[SCEV] Introduce SCEVPtrToIntExpr (PR46786)
And use it to model LLVM IR's `ptrtoint` cast.
This is essentially an alternative to D88806, but with no chance for
all the problems it caused due to having the cast as implicit there.
(see rG7ee6c402474a2f5fd21c403e7529f97f6362fdb3)
As we've established by now, there are at least two reasons why we want this:
* It will allow SCEV to actually model the `ptrtoint` casts
and their operands, instead of treating them as `SCEVUnknown`
* It should help with initial problem of PR46786 - this should eventually allow us
to not loose pointer-ness of an expression in more cases
As discussed in [[ https://bugs.llvm.org/show_bug.cgi?id=46786 | PR46786 ]], in principle,
we could just extend `SCEVUnknown` with a `is ptrtoint` cast, because `ScalarEvolution::getPtrToIntExpr()`
should sink the cast as far down into the expression as possible,
so in the end we should always end up with `SCEVPtrToIntExpr` of `SCEVUnknown`.
But i think that it isn't the best solution, because it doesn't really matter
from memory consumption side - there probably won't be *that* many `SCEVPtrToIntExpr`s
for it to matter, and it allows for much better discoverability.
Reviewed By: mkazantsev
Differential Revision: https://reviews.llvm.org/D89456
Michael Roe [Fri, 30 Oct 2020 07:57:22 +0000 (10:57 +0300)]
[mips] Implement add.ps, mul.ps and sub.ps
Differential revision: https://reviews.llvm.org/D90321
Vitaly Buka [Fri, 30 Oct 2020 07:36:50 +0000 (00:36 -0700)]
[NFC] Fix "ambiguous overload for ‘operator=’"
From D89768
River Riddle [Fri, 30 Oct 2020 07:30:59 +0000 (00:30 -0700)]
[mlir][ASM] Refactor how attribute/type aliases are specified.
Previously they were separated into "instance" and "kind" aliases, and also required that the dialect know ahead of time all of the instances that would have a corresponding alias. This approach was very clunky and not ergonomic to interact with. The new approach is to provide the dialect with an instance of an attribute/type to provide an alias for, fully replacing the original split approach.
Differential Revision: https://reviews.llvm.org/D89354
Vitaly Buka [Fri, 30 Oct 2020 07:36:50 +0000 (00:36 -0700)]
[NFC] Fix "ambiguous overload for ‘operator=’"
Xun Li [Fri, 30 Oct 2020 06:54:28 +0000 (23:54 -0700)]
[Coroutine] Properly determine whether an alloca should live on the frame
The existing logic in determining whether an alloca should live on the frame only looks explicit def-use relationships. However a value defined by an alloca may be implicitly needed across suspension points, either because an alias has across-suspension-point def-use relationship, or escaped by store/call/memory intrinsics. To properly handle all these cases, we have to properly visit the alloca pointer up-front. Thie patch extends the exisiting alloca use visitor to determine whether an alloca should live on the frame.
Differential Revision: https://reviews.llvm.org/D89768
Georgii Rymar [Fri, 30 Oct 2020 06:50:00 +0000 (09:50 +0300)]
[llvm-readobj][test][NFC] - Use "--check-prefix" instead of "--check-prefixes".
We have the `--check-prefixes` invocation for a single suffix.
It is cleaner to use `--check-prefix` in this case.
Vitaly Buka [Fri, 30 Oct 2020 06:46:22 +0000 (23:46 -0700)]
[NFC] Don't run python binding tests with sanitizers
Almost any sanitizer can try to install interceptors.
Johannes Doerfert [Tue, 27 Oct 2020 18:16:03 +0000 (13:16 -0500)]
[OpenMP][Docs] Structure and content for the OpenMP documentation
This adds some initial content as well as structure to the new OpenMP
Sphinx documentation hosted at http://openmp.llvm.org/docs/ .
The content contains some useful links but most pages are still empty.
This uses a "custom" theme which is a copy of the default "agogo" one
with minor modifications to get a nicer table of content in the sidebar.
This way we can also adjust the theme as we go.
Reviewed By: jhuber6, JonChesterfield
Differential Revision: https://reviews.llvm.org/D90256
Johannes Doerfert [Thu, 29 Oct 2020 23:44:28 +0000 (18:44 -0500)]
[OpenMP][NFC] Clang format ParseOpenMP
ParseOpenMP.cpp was pretty much clang-formatted except a few minor
locations. Let's make it a clang formatted file.
Reviewed By: JonChesterfield
Differential Revision: https://reviews.llvm.org/D90440
Fangrui Song [Fri, 30 Oct 2020 06:09:57 +0000 (23:09 -0700)]
[MC] Fix an assert in MCAssembler::writeSectionData to be aware of errors
If MCContext has an error, MCAssembler::layout may stop early
and some MCFragment's may not finalize.
In the Linux kernel, arch/x86/lib/memcpy_64.S could trigger the assert before
"x86_64: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S"
sameeran joshi [Fri, 30 Oct 2020 04:50:05 +0000 (10:20 +0530)]
[Flang][OpenMP][OpenACC] Fix exit out of a region in OpenMP parallel construct.
From below mentioned standard references
OpenACC 3.0 Standards document
840 • A program may not branch into or out of an OpenACC parallel construct
OpenMP 5.0 Standards document
A program that branches into or out of a parallel region is non-conforming.
This patch
Resolves the issue of exit out of a parallel region, other branching out issues like goto statements are not handled with this patch.
Moves code from D87906 to be reused by other OpenMP/OpenACC to check-directive-structure.h.
Adds support in OpenMP parallel construct and a test case to verify.
Reviewed By: clementval
Differential Revision: https://reviews.llvm.org/D88655
Vitaly Buka [Fri, 30 Oct 2020 01:13:23 +0000 (18:13 -0700)]
[NFC] Don't run clang/bindings/python/tests with msan
Fixes check-all with LLVM_USE_SANITIZER=Memory
Mehdi Amini [Fri, 30 Oct 2020 05:16:59 +0000 (05:16 +0000)]
Fix "incorrect" assertions in Linalg/EDSC/Builders.cpp (NFC)
It is semantically equivalent, but the intent was really lost there.
This fixes a warning/error from MSVC as well, see PR48013
Fangrui Song [Fri, 30 Oct 2020 04:54:45 +0000 (21:54 -0700)]
[test] Fix unused check prefixes in test/Linker/ and test/Other/
Michael Liao [Fri, 30 Oct 2020 04:44:42 +0000 (00:44 -0400)]
Fix shared build.
Fangrui Song [Fri, 30 Oct 2020 04:18:00 +0000 (21:18 -0700)]
[RISCV] Fix unused check prefixes in test/MC/RISCV/
Jonas Devlieghere [Fri, 30 Oct 2020 03:24:37 +0000 (20:24 -0700)]
[llvm] Export LLVM_LIT_ARGS in LLVMConfig.cmake
Allow standalone builds to inherit the LLVM_LIT_ARGS.
Fangrui Song [Fri, 30 Oct 2020 02:41:59 +0000 (19:41 -0700)]
[MC] Add SMLoc to MCStreamer::emitSymbolAttribute and report changed binding warnings/errors for ELF
LLVM GN Syncbot [Fri, 30 Oct 2020 02:36:24 +0000 (02:36 +0000)]
[gn build] Port
00090a2b826
Liu, Chen3 [Sat, 10 Oct 2020 10:42:05 +0000 (18:42 +0800)]
Support complex target features combinations
This patch is mainly doing two things:
1. Adding support for parentheses, making the combination of target features
more diverse;
2. Making the priority of ’,‘ is higher than that of '|' by default. So I need
to make some change with PTX Builtin function.
Differential Revision: https://reviews.llvm.org/D89184
Jonas Devlieghere [Fri, 30 Oct 2020 01:37:44 +0000 (18:37 -0700)]
[lldb] XFAIL TestTypeGetModule.py (temporarily)
Temporarily XFAIL'ing TestTypeGetModule.py while the DWO failure is
being investigated.
Ilya Bukonkin [Fri, 30 Oct 2020 01:27:47 +0000 (18:27 -0700)]
[lldb] Update TestTypeGetModule.py
Differential revision: https://reviews.llvm.org/D88483
Arthur Eubanks [Fri, 23 Oct 2020 05:26:21 +0000 (22:26 -0700)]
[PruneEH] Pin tests to legacy PM
prune-eh will not be ported to the NPM. Instead, a combination of
function-attrs and simplifycfg should be used (as described in
https://reviews.llvm.org/D44415).
This pins most tests using -prune-eh to the legacy PM. Some of these
were testing legacy PM infra (mostly the CGPassManager). Some of these
can be tested in the NPM using function-attrs and simplifycfg.
One interesting case is simplenoreturntest.ll. function-attrs +
simplifycfg does not yet make a caller of a caller of a noreturn
function end with unreachable like prune-eh does. That can be added in
the future.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D90012
Alina Sbirlea [Fri, 30 Oct 2020 00:55:07 +0000 (17:55 -0700)]
[AA] Pass query info.
Pass AAQI in places where it was missed.
Part of D89991.
Author: haoranxu510 (Haoran Xu)
Jonas Devlieghere [Fri, 30 Oct 2020 00:48:21 +0000 (17:48 -0700)]
[dwarfdump] Recognize __apple sections as debug info sections
Recognize the __apple_ sections as debug info sections and make sure
they're included in the --show-sections-sizes output.
Differential revision: https://reviews.llvm.org/D90433
Keith Smiley [Fri, 30 Oct 2020 00:47:26 +0000 (17:47 -0700)]
[llvm-readobj][NFC] Remove unused prefix from FileCheck tests
This is to enable --allow-unused-duplicates=false. This prefix appears
to be outdated and intentionally unused.
Reviewed By: rupprecht
Differential Revision: https://reviews.llvm.org/D90427
Stella Laurenzo [Thu, 29 Oct 2020 06:16:36 +0000 (23:16 -0700)]
Add InsertionPoint and context managers to the Python API.
* Removes index based insertion. All insertion now happens through the insertion point.
* Introduces thread local context managers for implicit creation relative to an insertion point.
* Introduces (but does not yet use) binding the Context to the thread local context stack. Intent is to refactor all methods to take context optionally and have them use the default if available.
* Adds C APIs for mlirOperationGetParentOperation(), mlirOperationGetBlock() and mlirBlockGetTerminator().
* Removes an assert in PyOperation creation that was incorrectly constraining. There is already a TODO to rework the keepAlive field that it was guarding and without the assert, it is no worse than the current state.
Differential Revision: https://reviews.llvm.org/D90368
Wouter van Oortmerssen [Mon, 26 Oct 2020 21:38:09 +0000 (14:38 -0700)]
[WebAssembly] Improved LLD error messages in case of mixed wasm32/wasm64 object files
Differential Revision: https://reviews.llvm.org/D90428
Nico Weber [Fri, 30 Oct 2020 00:12:50 +0000 (20:12 -0400)]
clang-tidy: Make tests more hermetic
Make check_clang_tidy.py not just pass -format-style=none by default
but a full -config={}. Without this, with a build dir outside of
the llvm root dir and a .clang-tidy config further up that contains
CheckOptions:
- key: modernize-use-default-member-init.UseAssignment
value: 1
these tests would fail:
Clang Tools :: clang-tidy/checkers/cppcoreguidelines-prefer-member-initializer-modernize-use-default-member-init.cpp
Clang Tools :: clang-tidy/checkers/modernize-use-default-member-init-bitfield.cpp
Clang Tools :: clang-tidy/checkers/modernize-use-default-member-init.cpp
After this change, they pass fine, despite the unrelated
.clang-tidy file further up.
Krzysztof Parzyszek [Thu, 29 Oct 2020 21:09:46 +0000 (16:09 -0500)]
[Hexagon] Handle additional shuffles that can be made perfect
Jim Ingham [Thu, 29 Oct 2020 23:37:34 +0000 (16:37 -0700)]
This is a preliminary version of the test for https://reviews.llvm.org/D88483.
The test can be cleaned up a bit, but this should be good to see why the
Debian bot is failing...
Aaron Puchert [Thu, 29 Oct 2020 23:35:14 +0000 (00:35 +0100)]
Thread safety analysis: Consider static class members as inaccessible
This fixes the issue pointed out in D84604#2363134. For now we exclude
static members completely, we'll take them into account later.
Arthur Eubanks [Thu, 29 Oct 2020 23:10:17 +0000 (16:10 -0700)]
[NFC] Fix typo function -> module
Scott Linder [Thu, 29 Oct 2020 21:45:46 +0000 (21:45 +0000)]
[NFC][AMDGPU] Resize Memory Model columns in AMDGPUUsage.rst
Make all of the "AMDGPU Machine Code GFX*" columns in the Memory Model
table a consistent width of 32-characters.
Best viewed with something like --word-diff
Differential Revision: https://reviews.llvm.org/D89977
Scott Linder [Thu, 22 Oct 2020 16:42:05 +0000 (16:42 +0000)]
[AMDGPU] Update Memory Model in AMDGPUUsage.rst
Mostly NFC, but some changes are "bug fixes" rather than just e.g.
formatting changes or typo corrections.
- Fix typo "competing" -> "completing".
- Document why waintcnt is added to stores and not loads for
sequentially consistent ordering.
- Lowercase some mentions of `buffer_gl{0,1}_inv`.
- Make mentions of `*cnt(0)` consistently include the `(0)` count.
- Remove some mentions of instructions for incorrect address spaces. For
example, remove mention of `flat_load` from
`load atomic acquire workgroup global`.
- Re-flow some text to get all the target columns to fit in a
32-character wide column. Makes a future NFC patch to make these columns
both 32-character wide more straightforward.
Modified cherry-pick of patch by Tony Tye
Reviewed By: t-tye
Differential Revision: https://reviews.llvm.org/D89596
Kostya Kortchinsky [Wed, 28 Oct 2020 23:04:02 +0000 (16:04 -0700)]
[GWP-ASan] Add mutexes for Fuchsia
Mitch expressed a preference to not have `#ifdef`s in platform agnostic
code, this change tries to accomodate this.
I am not attached to the method this CL proposes, so if anyone has a
suggestion, I am open.
We move the platform specific member of the mutex into its own platform
specific class that the main `Mutex` class inherits from. Functions are
implemented in their respective platform specific compilation units.
For Fuchsia, we use the sync APIs, as those are also the ones being
used in Scudo.
Differential Revision: https://reviews.llvm.org/D90351
Joachim Meyer [Thu, 29 Oct 2020 18:45:49 +0000 (19:45 +0100)]
[OpenMP] Use __OPENMP_NVPTX__ instead of _OPENMP in complex wrapper headers.
This is very similar to
7f1e6fcff942, just fixing a left-over.
With this, it should be possible to use both, -x cuda and -fopenmp in the same invocation,
enabling to use both OpenMP, targeting CPU, and CUDA, targeting the GPU.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D90415
Jim Ingham [Thu, 29 Oct 2020 22:02:51 +0000 (15:02 -0700)]
Provide a reasonable value for PATH_MAX if the lldb headers don't provide it.
Thomas Raoux [Thu, 29 Oct 2020 21:28:01 +0000 (14:28 -0700)]
[mlir][vector] Improve vector distribute integration test and fix block distribution
Fix semantic in the distribute integration test based on offline feedback. This
exposed a bug in block distribution, we need to make sure the id is multiplied
by the stride of the vector. Fix the transformation and unit test.
Differential Revision: https://reviews.llvm.org/D89291
Craig Topper [Thu, 29 Oct 2020 21:16:12 +0000 (14:16 -0700)]
[RISCV] Improve worklist management in the DAG combine for SLLW/SRLW/SRAW
This combine makes two calls to SimplifyDemandedBits, one for the LHS and one
for the RHS. If the LHS call returns true, we don't make the RHS call. When
SimplifyDemandedBits makes a change, it will add the nodes around the change to
the DAG combiner worklist. If the simplification happens on the first recursion
step, the N will get added to the worklist. But if the simplification happens
deeper in the recursion, then N will not be revisited until the next time the
DAG combiner runs.
This patch explicitly addes N to the worklist anytime a Simplification is made.
Without this we might miss additional simplifications on the LHS or never
simplify the RHS. Special care also needs to be taken to not add N if it has
been CSEd by the simplification. There are similar examples in DAGCombiner and
the X86 target, but I don't have a test for it for RISC-V. I've also returned
SDValue(N, 0) instead of SDValue() so DAGCombiner knows a change was made and
will update its Statistic variable.
The test here was constructed so that 2 simplifications happen to the LHS.
Without this fix one happens in the post type legalization DAG combine and the
other happens after LegalizeDAG. This prevents the RHS from ever being
simplified causing the left and right shift to clear the upper 32 bits of the
RHS to be left behind.
Differential Revision: https://reviews.llvm.org/D90339
Craig Topper [Thu, 29 Oct 2020 21:15:37 +0000 (14:15 -0700)]
[RISCV] Add test case for D90339
Jim Ingham [Thu, 29 Oct 2020 21:43:03 +0000 (14:43 -0700)]
Use !hasLocalLinkage instead of listing the symbol types
we should be exporting one by one.
Differential Revision: https://reviews.llvm.org/D78972
Jim Ingham [Wed, 28 Oct 2020 18:58:25 +0000 (11:58 -0700)]
Mark the execution of stop-hooks as non-interactive.
The intention is not to allow stop-hook commands to query the
user, so this is correct. It also works around a deadlock in
switching to the Python Session to execute python based commands
in the stop hook when the Debugger stdin is backed by a FILE *.
Differential Revision: https://reviews.llvm.org/D90332
Christian Sigg [Thu, 29 Oct 2020 17:13:01 +0000 (18:13 +0100)]
[mlir][gpu] Add pass to make GPU ops within a region execute asynchronously.
Do not use the pass yet, except in a test.
Reviewed By: herhut
Differential Revision: https://reviews.llvm.org/D89937
Christian Sigg [Thu, 29 Oct 2020 16:58:48 +0000 (17:58 +0100)]
[mlir][gpu] Handle async in gpu.launch_func lowering.
For the synchronous case, destroy the stream after synchronization.
Sneak in a unrelated change to report why the gpu.wait conversion pattern didn't match.
Reviewed By: herhut
Differential Revision: https://reviews.llvm.org/D89933
Nikita Popov [Thu, 29 Oct 2020 20:59:58 +0000 (21:59 +0100)]
[SDAG] Extract helper to determine neutral element (NFC)
Make the existing VECREDUCE based code more generic, but expressing
it in terms of the neutral value of the base opcode instead.
Stefanos Baziotis [Thu, 29 Oct 2020 20:50:07 +0000 (22:50 +0200)]
[LCSSA] Doc for special treatment of PHIs
Differential Revision: https://reviews.llvm.org/D89739
Christian Sigg [Thu, 22 Oct 2020 05:49:50 +0000 (07:49 +0200)]
[mlir][gpu] Allow gpu.launch_func to be async.
This is a roll-forward of rGec7780ebdab4, now that the remaining
gpu.launch_func have been converted to custom form in rGb22f111023ba.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D90420
Nikita Popov [Thu, 29 Oct 2020 20:41:58 +0000 (21:41 +0100)]
[LoopUtils] Fix neutral value for vector.reduce.fadd
Use -0.0 instead of 0.0 as the start value. The previous use of 0.0
was fine for all existing uses of this function though, as it is
always generated with fast flags right now, and thus nsz.
Ilya Bukonkin [Tue, 29 Sep 2020 12:51:49 +0000 (15:51 +0300)]
GetModule, GetExeModule methods added
Florian Hahn [Thu, 29 Oct 2020 19:46:34 +0000 (19:46 +0000)]
[SLP] Consider alternatives for cost of select instructions.
Some architectures do not have general vector select instructions (e.g.
AArch64). But some cmp/select patterns can be vectorized using other
instructions/intrinsics.
One example is using min/max instructions for certain patterns.
This patch updates the cost calculations for selects in the SLP
vectorizer to consider using min/max intrinsics.
This patch does not change SLP vectorizer's codegen itself to actually
generate those intrinsics, but relies on the backends to lower the
vector cmps & selects. This keeps things simple on the SLP side and
works well in practice for AArch64.
This exposes additional SLP vectorization opportunities in some
benchmarks on AArch64 (-O3 -flto).
Metric: SLP.NumVectorInstructions
Program base slp diff
test-suite...ications/JM/ldecod/ldecod.test 502.00 697.00 38.8%
test-suite...ications/JM/lencod/lencod.test 1023.00 1414.00 38.2%
test-suite...-typeset/consumer-typeset.test 56.00 65.00 16.1%
test-suite...6/464.h264ref/464.h264ref.test 804.00 822.00 2.2%
test-suite...006/453.povray/453.povray.test 3335.00 3357.00 0.7%
test-suite...CFP2000/177.mesa/177.mesa.test 2110.00 2121.00 0.5%
test-suite...:: External/Povray/povray.test 2378.00 2382.00 0.2%
Reviewed By: RKSimon, samparker
Differential Revision: https://reviews.llvm.org/D89969
Thomas Lively [Thu, 29 Oct 2020 20:37:55 +0000 (13:37 -0700)]
[WebAssembly] Remove unused FileCheck test prefixes
This commit removes unused FileCheck prefixes from WebAssembly test files to
avoid causing test failures once FileCheck disallows unused prefixes by default.
See D90281 and the corresponding llvm-dev thread for context.
Reviewed By: aardappel
Differential Revision: https://reviews.llvm.org/D90416
Nikita Popov [Thu, 29 Oct 2020 20:27:59 +0000 (21:27 +0100)]
[SDAG] Fix neutral value for vecreduce_fadd
The neutral value for FADD is -0.0, not 0.0, so this is what we
need to pad vectors with.
Nikita Popov [Thu, 29 Oct 2020 19:34:13 +0000 (20:34 +0100)]
[CodeGen] Fix neutral value of vecreduce fadd in tests (NFC)
The neutral value is -0.0, not 0.0. This doesn't matter for "fast"
reductions due to nsz, but does matter for reassoc-only and seq
reductions.
Change tests to mostly use -0.0 where the neutral value was intended,
and add some additional test coverage in some places. Also update
LangRef to use the right value.
Christian Sigg [Thu, 29 Oct 2020 18:16:19 +0000 (19:16 +0100)]
[mlir][gpu] NFC: Change gpu.launch_func ops to custom format.
This should fix the reason for the failures after
ec7780ebdab480139596c3cb08ee77d7035457b3. I will roll forward in a separate change.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D90410
Tony [Wed, 28 Oct 2020 22:20:51 +0000 (22:20 +0000)]
[AMDGPU] Update AMD GPU documentation
- AMDGPUUsage.rst: Correct AMD GPU DWARF address space table address
sizes which are in bits and not bytes.
- clang/.../Options.td: Improve description of AMD GPU options.
- Re-generate ClangComamndLineReference.rst from clang/.../Options.td .
Differential Revision: https://reviews.llvm.org/D90364
Alex Orlov [Thu, 29 Oct 2020 20:11:16 +0000 (00:11 +0400)]
Added remotely ran compiler-rt tests.
Use LLVM/utils/remote-exec.py to run compiler-rt tests remotely on the target.
Reviewed By: vvereschaka
Differential Revision: https://reviews.llvm.org/D90054
Marcel Hlopko [Thu, 29 Oct 2020 20:01:28 +0000 (13:01 -0700)]
Remove HAVE_VCS_VERSION_INC, not needed
This preprocessor define was meant to be used to conditionally include VCSVersion.inc. However, the define was always set, and it was the content of the header that was conditionally generated. Therefore HAVE_VCS_VERSION_INC should be cleaned up.
Reviewed By: gribozavr2, MaskRay
Differential Revision: https://reviews.llvm.org/D84623
Nikita Popov [Thu, 29 Oct 2020 19:21:25 +0000 (20:21 +0100)]
[SDAG] Extract helper to get vecreduce base opcode (NFC)
Adhemerval Zanella [Thu, 29 Oct 2020 14:49:28 +0000 (14:49 +0000)]
[sanitizer] Disable ASLR for release_shadow_space
On aarch64 with kernel 4.12.13 the test sporadically fails with
RSS at start: 1564, after mmap: 103964, after mmap+set label: 308768, \
after fixed map: 206368, after another mmap+set label: 308768, after \
munmap: 206368
release_shadow_space.c.tmp: [...]/release_shadow_space.c:80: int \
main(int, char **): Assertion `after_fixed_mmap <= before + delta' failed.
It seems on some executions the memory is not fully released, even
after munmap. And it also seems that ASLR is hurting it by adding
some fragmentation, by disabling it I could not reproduce the issue
in multiple runs.
Peyton, Jonathan L [Thu, 29 Oct 2020 18:57:33 +0000 (13:57 -0500)]
[OpenMP] Add NULL check in dispatcher debug output
Patch by Nawrin Sultana
Differential Revision: https://reviews.llvm.org/D90403
Dávid Bolvanský [Thu, 29 Oct 2020 18:14:55 +0000 (19:14 +0100)]
[InferAttrs] Add nocapture/writeonly to string/mem libcalls
One step closer to fix PR47644.
Differential Revision: https://reviews.llvm.org/D89645
Paul-Antoine Arras [Thu, 29 Oct 2020 18:08:45 +0000 (11:08 -0700)]
[llvm-libtool-darwin] Add support for LLVM bitcode files
This diff adds support for LLVM bitcode objects to llvm-libtool-darwin.
Test plan: make check-all
Differential revision: https://reviews.llvm.org/D88722
Utkarsh Saxena [Fri, 23 Oct 2020 08:19:53 +0000 (10:19 +0200)]
[clangd] Add support for multiple DecisionForest model experiments.
With every incremental change, one needs to check-in new model upstream.
This also significantly increases the size of the git repo with every
new model.
Testing and comparing the old and previous model is also not possible as
we run only a single model at any point.
One solution is to have a "staging" decision forest which can be
injected into clangd without pushing it to upstream. Compare the
performance of the staging model with the live model. After a couple of
enhancements have been done to staging model, we can then replace the
live model upstream with the staging model. This reduces upstream churn
and also allows us to compare models with current baseline model.
This is done by having a callback in CodeCompleteOptions which is called
only when we want to use a decision forest ranking model. This allows us
to inject different completion model internally.
Differential Revision: https://reviews.llvm.org/D90014
Craig Topper [Thu, 29 Oct 2020 18:39:19 +0000 (11:39 -0700)]
[RISCV] Remove include of RISCVRegisterInfo.h from RISCVBaseInfo.h
RISCVRegisterInfo.h is part of the CodeGen layer. The Utils library
is intended to be shared with the MC layer so shouldn't use files
from the CodeGen layer.
The register enum names are already available from
RISCVMCTargetDesc.h. It appears what was coming from this include
was a transitive include of the Register class which I've replaced
with MCRegister. Register has a constructor from MCRegister so it
should be convertible.
Teresa Johnson [Thu, 29 Oct 2020 18:22:28 +0000 (11:22 -0700)]
[MemProf] Temporarily disable test failing on a couple bots
I finally see why this test is failing (on now 2 bots). Somehow the path
name is getting messed up, and the "linux" converted to "1". I suspect
there is something in the environment causing the macro expansion in the
test to get messed up:
http://lab.llvm.org:8011/#/builders/112/builds/555/steps/5/logs/FAIL__MemProfiler-x86_64-linux__log_path_test_cpp
http://lab.llvm.org:8011/#/builders/37/builds/275/steps/31/logs/stdio
On the avr bot:
-DPROFILE_NAME_VAR="/home/buildbot/llvm-avr-linux/llvm-avr-linux/stage1/projects/compiler-rt/test/memprof/X86_64LinuxConfig/TestCases/Output/log_path_test.cpp.tmp.log2"
after macros expansions becomes:
/home/buildbot/llvm-avr-1/llvm-avr-1/stage1/projects/compiler-rt/test/memprof/X86_64LinuxConfig/TestCases/Output/log_path_test.cpp.tmp.log2
Similar (s/linux/1/) on the other bot.
Disable it while I investigate
Sylvestre Ledru [Thu, 29 Oct 2020 16:56:53 +0000 (17:56 +0100)]
Add support of the next Ubuntu (Ubuntu 21.04 - Hirsute Hippo)
Thomas Lively [Thu, 29 Oct 2020 18:06:20 +0000 (11:06 -0700)]
[WebAssembly] Implement SIMD signselect instructions
As proposed in https://github.com/WebAssembly/simd/pull/124, using the opcodes
adopted by V8 in
https://chromium-review.googlesource.com/c/v8/v8/+/2486235/2/src/wasm/wasm-opcodes.h.
Uses new builtin functions and a new target intrinsic exclusively to ensure that
the new instructions are only emitted when a user explicitly opts in to using
them since they are still in the prototyping and evaluation phase.
Differential Revision: https://reviews.llvm.org/D90357
Louis Dionne [Thu, 29 Oct 2020 17:04:41 +0000 (13:04 -0400)]
[libc++] Minor cleanup in the test suite
Jody Sankey [Thu, 29 Oct 2020 17:51:01 +0000 (10:51 -0700)]
[sanitizer][fuchsia] Avoid deprecated syscall.
The zx_clock_get syscall on Fuchsia is deprecated - ref
https://fuchsia.dev/fuchsia-src/reference/syscalls/clock_get
This changes to the recommended replacement; calling zx_clock_read on
the userspace UTC clock.
Reviewed By: mcgrathr, phosek
Differential Revision: https://reviews.llvm.org/D90169
Roland McGrath [Wed, 28 Oct 2020 01:30:25 +0000 (18:30 -0700)]
[Support] Make Support/SwapByteOrder.h compile on Fuchsia
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D90279
Jay Foad [Wed, 28 Oct 2020 13:06:44 +0000 (13:06 +0000)]
[AMDGPU] Fix double space in disassembly of ds_gws_sema_* with gds
By setting up the AsmStrings correctly we can remove some special cases
from AMDGPUInstPrinter::printOffset.
Differential Revision: https://reviews.llvm.org/D90307
Mehdi Amini [Thu, 29 Oct 2020 17:30:27 +0000 (17:30 +0000)]
Revert "[mlir][gpu] Allow gpu.launch_func to be async."
This reverts commit
ec7780ebdab480139596c3cb08ee77d7035457b3.
One of the bot is crashing in a test related to this change.
Teresa Johnson [Thu, 29 Oct 2020 16:40:22 +0000 (09:40 -0700)]
[MemProf] Augment test to debug avr bot failure
After
81f7b96ed0a2295e0b82ca185019370ac8e1895e, I can see that the
reason this test is failing on llvm-avr-linux is that it doesn't think
the directory exists (error comes during file open for write command).
Not sure why since this is the main test Output directory and we created
a different file there earlier in the test from the same file open
invocation. Print directory contents in an attempt to debug.
Jan Kratochvil [Thu, 29 Oct 2020 16:54:43 +0000 (17:54 +0100)]
[nfc] [lldb] Remove excessive parentheses in SymbolFileDWARF::GetUID
Mircea Trofin [Thu, 29 Oct 2020 03:16:51 +0000 (20:16 -0700)]
[ThinLTO] Fix empty .llvmcmd sections
When passing -lto-embed-bitcode=post-merge-pre-opt, we were getting
empty .llvmcmd sections. It turns out that is because the
CodeGenOptions::CmdArgs field was only populated when clang saw
-fembed-bitcode={all|marker}.
This patch always populates the CodeGenOptions::CmdArgs. The overhead
of carrying through in memory in all cases is likely negligible in
the grand schema of things, and it keeps the using code simple.
Differential Revision: https://reviews.llvm.org/D90366