Alexey Bataev [Thu, 22 Apr 2021 14:53:20 +0000 (07:53 -0700)]
[SLP]Replace more `TTI` with `TTIRef`, NFC.
To pacify MSVC buildbots.
Alexey Bataev [Thu, 22 Apr 2021 14:49:08 +0000 (07:49 -0700)]
[SLP]Added explicit ref to TargetTransformInfo to try to pacify MSVC
buildbots, NFC.
Nico Weber [Thu, 22 Apr 2021 14:44:56 +0000 (10:44 -0400)]
[lld/mac] make a few "named parameter comments" more consistent
Most of LLVM and almost all of lld/MachO uses `/*foo=*/bar` style.
No behavior change.
Alexey Bataev [Tue, 6 Apr 2021 17:26:25 +0000 (10:26 -0700)]
[SLP]Improve cost model for the vectorized extractelements.
1. No need to call `areAllUsersVectorized` as later the cost is
calculated only if the instruction has one use and gets vectorized.
2. Need to calculate the cost of the dead extractelement more precisely,
taking the vector type of the vector operand, not the resulting
vector type.
Part of D57059.
Differential Revision: https://reviews.llvm.org/D99980
Dávid Bolvanský [Thu, 22 Apr 2021 14:39:07 +0000 (16:39 +0200)]
[LoopIdiom] Added testcase for double memset (fixed in LLVM 12); NFC
Anastasia Stulova [Thu, 22 Apr 2021 12:46:46 +0000 (13:46 +0100)]
[C++4OpenCL] Add extra diagnostics for kernel argument types
Add restrictions on type layout (PR48099):
- Types passed by pointer or reference must be standard layout types.
- Types passed by value must be POD types.
Patch by olestrohm (Ole Strohm)!
Differential Revision: https://reviews.llvm.org/D100471
Alex Zinenko [Thu, 22 Apr 2021 13:52:01 +0000 (15:52 +0200)]
[mlir] Move PyConcreteAttribute to header. NFC.
This allows out-of-tree users to derive PyConcreteAttribute to bind custom
attributes.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D101063
Sven van Haastregt [Thu, 22 Apr 2021 14:08:36 +0000 (15:08 +0100)]
[OpenCL] Add missing C++ legacy atomics with generic
https://reviews.llvm.org/D62335 added some C++ for OpenCL specific
builtins to opencl-c.h, but these were not mirrored to the TableGen
builtin functions yet.
The TableGen builtins machinery does not have dedicated version
handling for C++ for OpenCL at the moment: all builtin versioning is
tied to `LangOpts.OpenCLVersion` (i.e., the OpenCL C version). As a
workaround, to add builtins that are only available in C++ for OpenCL,
we define a function extension guarded by the __cplusplus macro.
Differential Revision: https://reviews.llvm.org/D100935
Fixes PR50041.
Krzysztof Parzyszek [Thu, 22 Apr 2021 14:06:18 +0000 (09:06 -0500)]
Revert "[Hexagon] Masked and unmasked load to same base -> load and two selects"
This reverts commit
96dc8d7e7dee68592e56d69184b92fcb021cdb9c.
It breaks a few builds.
Tim Northover [Tue, 20 Apr 2021 14:05:11 +0000 (15:05 +0100)]
AArch64: support mixed-size fp <-> int conversions in GlobalISel.
Tim Northover [Tue, 20 Apr 2021 09:19:02 +0000 (10:19 +0100)]
AArch64: expand G_DIVREM operations in GlobalISel
We don't have a specific instruction for these, so they should be expanded to
whatever separate division & multiplication is needed.
David Zarzycki [Thu, 22 Apr 2021 13:36:49 +0000 (09:36 -0400)]
Revert "[libcxx][iterator] adds `std::indirectly_readable` and `std::indirectly_writable`"
This reverts commit
04733181b5136e2b3df2b37c6bdd9e25f8afecd0 which was
failing for multiple people.
Paula Toth [Thu, 22 Apr 2021 13:43:06 +0000 (06:43 -0700)]
Update shebang for clang-format-diff script to python3.
Different distributions have different strategies migrating the `python` symlink. Debian and its derivatives provide `python-is-python2` and `python-is-python3`. If neither is installed, the user gets no `/usr/bin/python`. The clang-format-diff script and consequently `arc diff` can thus fail with a python not found error. Since we require python greater than 3.6 as part of llvm prerequisites (https://llvm.org/docs/GettingStarted.html#software), let's go ahead and update this shebang.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D100968
Coplin, Jared [Thu, 22 Apr 2021 13:44:01 +0000 (08:44 -0500)]
[Hexagon] Masked and unmasked load to same base -> load and two selects
Nico Weber [Thu, 22 Apr 2021 13:09:39 +0000 (09:09 -0400)]
[lld/mac] add a comment pointing to a test that took me a while to find
Simon Pilgrim [Thu, 22 Apr 2021 13:06:57 +0000 (14:06 +0100)]
[X86] Regenerate atomic-eflags-reuse.ll
Simon Pilgrim [Thu, 22 Apr 2021 10:40:54 +0000 (11:40 +0100)]
[LTO] Caching.h - remove unused <string> include. NFCI.
Dawid Jurczak [Thu, 22 Apr 2021 13:06:20 +0000 (15:06 +0200)]
[InstCombine][NFC] Use --check-globals flag in tests.
This patch adds strings content checking to printf-2.ll via --check-globals flag.
Split off from D100724.
Reviewed By: xbolva00
Differential Revision: https://reviews.llvm.org/D101034
Dawid Jurczak [Thu, 22 Apr 2021 13:01:44 +0000 (15:01 +0200)]
[SimplifyLibCalls][NFC] Use StringRef::back instead explicit indexing.
Split off from D100724.
Reviewed By: xbolva00
Differential Revision: https://reviews.llvm.org/D101032
Jun Ma [Mon, 19 Apr 2021 09:16:08 +0000 (17:16 +0800)]
[DAGCombiner] Allow operand of step_vector to be negative.
It is proper to relax non-negative limitation of step_vector.
Also this patch adds more combines for step_vector:
(sub X, step_vector(C)) -> (add X, step_vector(-C))
Differential Revision: https://reviews.llvm.org/D100812
Alexander Belyaev [Thu, 22 Apr 2021 12:50:13 +0000 (14:50 +0200)]
[mlir] Add `tensor.reshape`.
This operation a counterpart of `memref.reshape`.
RFC [Reshape Ops Restructuring](https://llvm.discourse.group/t/rfc-reshape-ops-restructuring/3310)
Differential Revision: https://reviews.llvm.org/D100971
Wang, Pengfei [Thu, 22 Apr 2021 09:26:36 +0000 (17:26 +0800)]
[X86][AMX][NFC] Remove assert for comparison between different BBs.
SmallSet may use operator `<` when we insert MIRef elements, so we
cannot limit the comparison between different BBs.
We allow MIRef() to be less that any initialized MIRef object, otherwise,
we always reture false when compare between different BBs.
Differential Revision: https://reviews.llvm.org/D101039
Nico Weber [Thu, 22 Apr 2021 12:40:48 +0000 (08:40 -0400)]
[gn build] (manually) port
aee6c86c4d better
"EmptyNodeIntrospection.inc.in" needs to be a source of the action,
so that ninja knows to rerun this action if that input changes.
Stephen Kelly [Thu, 22 Apr 2021 12:40:01 +0000 (13:40 +0100)]
[AST] Make comment a bit more specific
Nico Weber [Thu, 22 Apr 2021 12:36:19 +0000 (08:36 -0400)]
[gn build] (manually) port
aee6c86c4d
Pavel Labath [Thu, 22 Apr 2021 12:13:27 +0000 (14:13 +0200)]
[lldb/elf] Avoid side effects in function calls ParseUnwindSymbols
This addresses post-commit feedback to cd64273.
Nathan Sidwell [Wed, 14 Apr 2021 11:18:23 +0000 (04:18 -0700)]
clang: libstdc++ LWM is 4.8.3
Document oldest libstdc++ as 4.8.3, remove a hack for a 4.6 issue.
Differential Revision: https://reviews.llvm.org/D100465
Sander de Smalen [Wed, 7 Apr 2021 16:06:22 +0000 (17:06 +0100)]
[AArch64][SVE] Regression test all ACLE tests with C++
We found issues with a number of intrinsics when building them with
C++, so it makes sense to guard these tests with some extra RUN lines
to build the tests in C++ mode.
Valeriy Savchenko [Wed, 21 Apr 2021 13:49:06 +0000 (16:49 +0300)]
[-Wcalled-once] Do not run analysis on Obj-C++
Objective-C++ is not yet suppoerted.
rdar://
76729552
Differential Revision: https://reviews.llvm.org/D100955
Frederik Gossen [Thu, 22 Apr 2021 12:09:14 +0000 (14:09 +0200)]
[MLIR][Shape] Add canonicalizations for `shape.broadcast`
Eliminate empty shapes from the operands, partially fold all constant shape
operands, and fix normal folding.
Differential Revision: https://reviews.llvm.org/D100634
Raphael Isemann [Thu, 22 Apr 2021 10:29:08 +0000 (12:29 +0200)]
[lldb] Don't leak LineSequence in PDB parsers
`InsertSequence` doesn't take ownership of the pointer so releasing this pointer
is just leaking memory.
Follow up to D100806 that was fixing other leak sanitizer test failures
Reviewed By: JDevlieghere
Differential Revision: https://reviews.llvm.org/D100846
Jan Svoboda [Thu, 22 Apr 2021 11:55:23 +0000 (13:55 +0200)]
[clang][deps] Check extra args in tests
These flags are being generated by `clang-scan-deps` and it makes sense to ensure it keeps doing so.
Stephen Kelly [Thu, 22 Apr 2021 11:51:25 +0000 (12:51 +0100)]
[AST] Add clarification comment
Raphael Isemann [Thu, 22 Apr 2021 11:45:15 +0000 (13:45 +0200)]
[lldb] XFAIL TestStoppedInStaticMemberFunction on Windows
It seems we can't find the symbols of static members on Windows? The bug is not
relevant to what this test is actually testing so let's just XFAIL it.
Jay Foad [Thu, 22 Apr 2021 11:29:49 +0000 (12:29 +0100)]
Fix typo "beneficiates" in comments
Stephen Kelly [Wed, 17 Mar 2021 01:48:50 +0000 (01:48 +0000)]
[AST] De-duplicate empty node introspection
This way we can add support for other nodes without duplication.
Differential Revision: https://reviews.llvm.org/D98774
Benjamin Kramer [Thu, 22 Apr 2021 11:01:16 +0000 (13:01 +0200)]
[lldb-vscode] Use a DenseMap to pacify overly aggressive linters
Some linters get rather upset upon seeing
`std::unordered_map<const char*`, because it looks like a map of
strings but isn't. lldb uses interned strings so this is not a problem.
DenseMap is a better data structure for this anyways, so use that
instead.
Stephen Tozer [Wed, 21 Apr 2021 15:56:38 +0000 (16:56 +0100)]
[Bitcode] Ensure DIArgList in bitcode has no null or forward metadata refs
This patch fixes an issue in which ConstantAsMetadata arguments to a
DIArglist, as well as the Constant values referenced by that metadata,
would not be always be emitted correctly into bitcode. This patch fixes
this issue firstly by searching for ConstantAsMetadata in DIArgLists
(previously we would only search for them when directly wrapped in
MetadataAsValue), and secondly by enumerating all of a DIArgList's
arguments directly prior to enumerating the DIArgList itself.
This patch also adds a number of asserts, and no longer treats the
arguments to a DIArgList as optional fields when reading/writing to
bitcode.
Differential Revision: https://reviews.llvm.org/D100572
Hamza Mahfooz [Thu, 22 Apr 2021 08:15:48 +0000 (09:15 +0100)]
[Matrix] Support #pragma clang fp
From https://bugs.llvm.org/show_bug.cgi?id=49739:
Currently, `#pragma clang fp` are ignored for matrix types.
For the code below, the `contract` fast-math flag should be added to the generated call to `llvm.matrix.multiply` and `fadd`
```
typedef float fx2x2_t __attribute__((matrix_type(2, 2)));
void foo(fx2x2_t &A, fx2x2_t &C, fx2x2_t &B) {
#pragma clang fp contract(fast)
C = A*B + C;
}
```
Reviewed By: fhahn, mibintc
Differential Revision: https://reviews.llvm.org/D100834
Simon Pilgrim [Thu, 22 Apr 2021 10:11:09 +0000 (11:11 +0100)]
MipsSEFrameLowering.h - remove unused headers. NFCI.
Simon Pilgrim [Thu, 22 Apr 2021 09:57:19 +0000 (10:57 +0100)]
[X86][AVX] Add PR49971 test case
This is a llvm12 only bug, and is already avoided in trunk, but we should keep track of it.
Nemanja Ivanovic [Thu, 22 Apr 2021 10:30:50 +0000 (05:30 -0500)]
[PowerPC] Add vec_roundc as alias for vec_rint in altivec.h
For compatibility with XLC, add these overloads.
Stephen Kelly [Thu, 15 Apr 2021 20:02:10 +0000 (21:02 +0100)]
[AST] Add NestedNameSpecifierLoc accessors to node introspection
Differential Revision: https://reviews.llvm.org/D100712
Raphael Isemann [Thu, 22 Apr 2021 10:19:15 +0000 (12:19 +0200)]
[lldb][NFC] Fix unsigned/signed cmp warning in MainLoopTest
The gtest checks compare all against unsigned int constants so this also needs
to be unsigned.
Raphael Isemann [Mon, 19 Apr 2021 13:50:10 +0000 (15:50 +0200)]
[lldb] Add support for evaluating expressions in static member functions
At the moment the expression parser doesn't support evaluating expressions in
static member functions and just pretends the expression is evaluated within a
non-member function. This causes that all static members are inaccessible when
doing unqualified name lookup.
This patch adds support for evaluating in static member functions. It
essentially just does the same setup as what LLDB is already doing for
non-static member functions (i.e., wrapping the expression in a fake member
function) with the difference that we now mark the wrapping function as static
(to prevent access to non-static members).
Reviewed By: shafik, jarin
Differential Revision: https://reviews.llvm.org/D81550
Nemanja Ivanovic [Thu, 22 Apr 2021 03:16:35 +0000 (22:16 -0500)]
[PowerPC] Improve codegen for vector fp to int widening conversions
We currently do not utilize instructions that convert single
precision vectors to doubleword integer vectors. These conversions
come up in code occasionally and this improvement allows us to
open code some functions that need to be added to altivec.h.
Thomas Schmeyer [Fri, 16 Apr 2021 15:33:06 +0000 (17:33 +0200)]
[mlir] Move memref-tests from standard to memref folder.
Split memref-test from standard test and move them to the folder MemRef.
Differential Revision: https://reviews.llvm.org/D100950
Martin Storsjö [Tue, 20 Apr 2021 21:05:01 +0000 (00:05 +0300)]
[AArch64] Fix calling windows varargs with floats in fixed args from non-windows functions
When inspecting the calling convention, for calling windows functions
from a non-windows function, inspect the calling convention of
the called function, not the caller.
Also remove an unnecessary parameter to AArch64CallLowering
OutgoingArgHandler.
Differential Revision: https://reviews.llvm.org/D100890
Jan Svoboda [Wed, 21 Apr 2021 11:25:31 +0000 (13:25 +0200)]
[clang][deps] Include "-cc1" in the arguments
To simplify tools consuming dependency scanning results, prepend the "-cc1" argument by default.
Reviewed By: Bigcheese
Differential Revision: https://reviews.llvm.org/D100942
Tobias Gysi [Thu, 22 Apr 2021 08:22:37 +0000 (08:22 +0000)]
[mlir][linalg] remove interchange option on linalg to loop lowering.
The interchange option attached to the linalg to loop lowering affects only the loops and does not update the memory accesses generated in to body of the operation. Instead of performing the interchange during the loop lowering use the interchange pattern.
Differential Revision: https://reviews.llvm.org/D100758
Martin Probst [Thu, 22 Apr 2021 05:54:11 +0000 (07:54 +0200)]
clang-format: [JS] do not merge side-effect imports.
The if condition was testing the current element, but
forgot to check the previous element (doh), so it
would fail depending on sort order of the imports.
Differential Revision: https://reviews.llvm.org/D101020
Jay Foad [Wed, 21 Apr 2021 16:38:32 +0000 (17:38 +0100)]
[AMDGPU] SIWholeQuadMode: don't add duplicate implicit $exec operands
STRICT_WWM and STRICT_WQM are already defined with Uses = [EXEC], so
there is no need to add another implicit use of $exec when lowering them
to V_MOV_B32 instructions.
Differential Revision: https://reviews.llvm.org/D100969
Serge Pavlov [Tue, 10 Nov 2020 16:51:34 +0000 (23:51 +0700)]
[RISCV] Custom lowering of SET_ROUNDING
Differential Revision: https://reviews.llvm.org/D91242
David Sherwood [Mon, 19 Apr 2021 13:56:35 +0000 (14:56 +0100)]
[LoopVectorize] Don't create unnecessary vscale intrinsic calls
In quite a few cases in LoopVectorize.cpp we call createStepForVF
with a step value of 0, which leads to unnecessary generation of
llvm.vscale intrinsic calls. I've optimised IRBuilder::CreateVScale
and createStepForVF to return 0 when attempting to multiply
vscale by 0.
Differential Revision: https://reviews.llvm.org/D100763
Wenlei He [Thu, 15 Apr 2021 05:53:40 +0000 (22:53 -0700)]
[CSSPGO][llvm-profdata] Support trimming cold context when merging profiles
The change adds support for triming and merging cold context when mergine CSSPGO profiles using llvm-profdata. This is similar to the context profile trimming in llvm-profgen, however the flexibility to trim cold context after profile is generated can be useful.
Differential Revision: https://reviews.llvm.org/D100528
Martin Storsjö [Tue, 23 Mar 2021 08:55:26 +0000 (10:55 +0200)]
[libcxx] [test] Fix testing on windows with c++experimental enabled
The straightforward `AddLinkFlag('-lc++experimental')` approach doesn't
work on e.g. MSVC. For linking to libc++ itself, a more convoluted logic
is used (see configure_link_flags_cxx_library).
Differential Revision: https://reviews.llvm.org/D99177
Georgy Komarov [Tue, 6 Apr 2021 04:57:47 +0000 (07:57 +0300)]
[clang-tidy] Avoid bugprone-macro-parentheses warnings after goto argument
clang-tidy should not generate warnings for the goto argument without
parentheses, because it would be a syntax error.
The only valid case where an argument can be enclosed in parentheses is
"Labels as Values" gcc extension: https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html.
This commit adds support for the label-as-values extension as implemented in clang.
Fixes bugzilla issue 49634.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D99924
Arthur Eubanks [Thu, 22 Apr 2021 06:51:51 +0000 (23:51 -0700)]
[NewPM] Mark some more wrapper passes as ignored
We shouldn't print IR when seeing these passes.
Craig Topper [Thu, 22 Apr 2021 06:05:26 +0000 (23:05 -0700)]
[RISCV] Use TargetConstant for condition code of RISCVISD::SELECT_CC.
The value is always an immediate and can never be in a register.
This the kind of thing TargetConstant is for.
Saves a step GenDAGISel to convert a Constant to a TargetConstant.
Max Kazantsev [Thu, 22 Apr 2021 05:50:38 +0000 (12:50 +0700)]
[GVN] Introduce loop load PRE
This patch allows PRE of the following type of loads:
```
preheader:
br label %loop
loop:
br i1 ..., label %merge, label %clobber
clobber:
call foo() // Clobbers %p
br label %merge
merge:
...
br i1 ..., label %loop, label %exit
```
Into
```
preheader:
%x0 = load %p
br label %loop
loop:
%x.pre = phi(x0, x2)
br i1 ..., label %merge, label %clobber
clobber:
call foo() // Clobbers %p
%x1 = load %p
br label %merge
merge:
x2 = phi(x.pre, x1)
...
br i1 ..., label %loop, label %exit
```
So instead of loading from %p on every iteration, we load only when the actual clobber happens.
The typical pattern which it is trying to address is: hot loop, with all code inlined and
provably having no side effects, and some side-effecting calls on cold path.
The worst overhead from it is, if we always take clobber block, we make 1 more load
overall (in preheader). It only matters if loop has very few iteration. If clobber block is not taken
at least once, the transform is neutral or profitable.
There are several improvements prospect open up:
- We can sometimes be smarter in loop-exiting blocks via split of critical edges;
- If we have block frequency info, we can handle multiple clobbers. The only obstacle now is that
we don't know if their sum is colder than the header.
Differential Revision: https://reviews.llvm.org/D99926
Reviewed By: reames
Pushpinder Singh [Wed, 21 Apr 2021 14:04:44 +0000 (14:04 +0000)]
[AMDGPU][OpenMP] Add amdgpu-arch tool to list AMD GPUs installed
This patch adds new clang tool named amdgpu-arch which uses
HSA to detect installed AMDGPU and report back latter's march.
This tool is built only if system has HSA installed.
The value printed by amdgpu-arch is used to fill -march when
latter is not explicitly provided in -Xopenmp-target.
Reviewed By: JonChesterfield, gregrodgers
Differential Revision: https://reviews.llvm.org/D99949
Snehasish Kumar [Wed, 21 Apr 2021 21:41:12 +0000 (14:41 -0700)]
[CodeGen] Do not split functions with attr "implicit-section-name".
The #pragma clang section can be used at a coarse granularity to specify
the section used for bss/data/text/rodata for global objects. When split
functions is enabled, the function may be split into two parts violating
user expectations.
Reference:
https://clang.llvm.org/docs/LanguageExtensions.html#specifying-section-names-for-global-objects-pragma-clang-section
Differential Revision: https://reviews.llvm.org/D101004
Peter Collingbourne [Thu, 22 Apr 2021 02:13:36 +0000 (19:13 -0700)]
scudo: Obtain tag from pointer instead of loading it from memory. NFCI.
Since we already have a tagged pointer available to us, we can just
extract the tag from it and avoid an LDG instruction.
Differential Revision: https://reviews.llvm.org/D101014
Chen Zheng [Tue, 20 Apr 2021 02:03:44 +0000 (22:03 -0400)]
[Debug-Info] implement -gstrict-dwarf
This patch implements -gstrict-dwarf option in clang FE.
Reviewed By: dblaikie, probinson, aprantl
Differential Revision: https://reviews.llvm.org/D100809
Serge Pavlov [Thu, 5 Nov 2020 06:59:52 +0000 (13:59 +0700)]
[RISCV] Custom lowering of FLT_ROUNDS_
Differential Revision: https://reviews.llvm.org/D90854
thomasraoux [Fri, 16 Apr 2021 20:38:15 +0000 (13:38 -0700)]
[mlir][linalg] Add pattern to push reshape after elementwise operation
This help expose more fusion opportunities.
Differential Revision: https://reviews.llvm.org/D100685
Craig Topper [Thu, 22 Apr 2021 03:15:39 +0000 (20:15 -0700)]
[RISCV] Teach lowerSPLAT_VECTOR_PARTS to detect cases where Hi is sign extended from Lo.
This recognizes the case when Hi is (sra Lo, 31). We can use
SPLAT_VECTOR_I64 rather than splatting the high bits and
combining them in the vector register.
Chuanqi Xu [Thu, 22 Apr 2021 03:20:20 +0000 (11:20 +0800)]
[Coroutine] Collect CoroBegin if all of terminators are dominated by one coro.destroy
Summary: The original logic seems to be we could collecting a CoroBegin
if one of the terminators could be dominated by one of coro.destroy,
which doesn't make sense.
This patch rewrites the logics to collect CoroBegin if all of
terminators are dominated by one coro.destroy. If there is no such
coro.destroy, we would call hasEscapePath to evaluate if we should
collect it.
Test Plan: check-llvm
Reviewed by: lxfind
Differential Revision: https://reviews.llvm.org/D100614
Evgeniy Brevnov [Thu, 22 Apr 2021 03:04:49 +0000 (10:04 +0700)]
Wordsmith the semantics of invariant.load
Don't phrase the semantics in terms of the optimizer. Instead have a
more straightforward execution based semantic.
Reviewed By: ebrevnov
Differential Revision: https://reviews.llvm.org/D63439
Jonas Devlieghere [Thu, 22 Apr 2021 02:56:38 +0000 (19:56 -0700)]
[lldb] Disable TestSimulatorPlatform.py because it's causing a SIGHUP
Ever since Dave Zarzycki's patch to sort test start times based on prior
test timing data (https://reviews.llvm.org/D98179) the test suite aborts
with a SIGHUP. I don't believe his patch is to blame, but rather
uncovers an preexisting issue by making test runs more deterministic.
I was able to narrow down the issue to TestSimulatorPlatform.py. The
issue also manifests itself on the standalone bot on GreenDragon [1].
This patch disables the test until we can figure this out.
[1] http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake-standalone/
rdar://
76995109
Rob Suderman [Mon, 19 Apr 2021 20:40:33 +0000 (13:40 -0700)]
[mlir][tosa] Add tosa.avg_pool2d lowering
Added the float lowerings for avg pool with corresponding tests.
Differential Revision: https://reviews.llvm.org/D100793
Matt Arsenault [Tue, 20 Apr 2021 19:30:18 +0000 (15:30 -0400)]
AMDGPU: Fix assert when trying to fold reg_sequence of physreg copies
Giorgis Georgakoudis [Wed, 21 Apr 2021 18:41:31 +0000 (11:41 -0700)]
[OpenMP] Simplify offloading parallel call codegen
This revision simplifies Clang codegen for parallel regions in OpenMP GPU target offloading and corresponding changes in libomptarget: SPMD/non-SPMD parallel calls are unified under a single `kmpc_parallel_51` runtime entry point for parallel regions (which will be commonized between target, host-side parallel regions), data sharing is internalized to the runtime. Tests have been auto-generated using `update_cc_test_checks.py`. Also, the revision contains changes to OpenMPOpt for remark creation on target offloading regions.
Reviewed By: jdoerfert, Meinersbur
Differential Revision: https://reviews.llvm.org/D95976
Fangrui Song [Thu, 22 Apr 2021 01:44:12 +0000 (18:44 -0700)]
Delete le32/le64 targets
They are unused now.
Note: NaCl is still used and is currently expected to be needed until 2022-06
(https://blog.chromium.org/2020/08/changes-to-chrome-app-support-timeline.html).
Differential Revision: https://reviews.llvm.org/D100981
Jessica Paquette [Tue, 20 Apr 2021 20:10:30 +0000 (13:10 -0700)]
[AArch64][GlobalISel] Fix regbankselect for G_FCMP with vector destinations
These should always go to a FPR, since they always use the vector registers.
Differential Revision: https://reviews.llvm.org/D100885
Jessica Paquette [Wed, 21 Apr 2021 00:48:17 +0000 (17:48 -0700)]
[AArch64][GlobalISel] Mark some vector G_ABS cases as legal
Each of the cases marked as legal here have an imported pattern in
AArch64GenGlobalISel.inc. So, if we mark them as legal, we get selection for
free.
Technically this is only supposed to happen if we have NEON support. But, we
fall back if we don't have that in the legalizer right now. I suppose it'd be
better to have a FIXME so we can write the testcase when the time comes.
(Plus, it'd just fall back in selection if NEON isn't available, so it's not
*wrong*, I guess?)
This fixes some fallbacks in the test suite.
(Also use `isScalar` from LegalityPredicates.cpp while we're here just to tidy
things a little bit.)
Differential Revision: https://reviews.llvm.org/D100916
Hongtao Yu [Tue, 20 Apr 2021 01:04:43 +0000 (18:04 -0700)]
[CSSPGO][llvm-profgen] Always report dangling probes for frames with real samples.
Report dangling probes for frames that have real samples collected. Dangling probes are the probes associated to an empty block. When reported, sample count on a dangling probe will not be trusted by the compiler and we will rely on the counts inference algorithm to get the probe a reasonable count. This actually fixes a bug where previously only those dangling probes with samples collected were reported.
This patch also fixes two existing issues. Pseudo probes are stored in `Address2ProbesMap` and their pointers are used in `PseudoProbeInlineTree`. Previously `std::vector` was used to store probes and the pointers to probes may get obsolete as the vector grows. I'm changing `std::vector` to `std::list` instead.
The other issue is that all outlined functions shared the same inline frame previously due to the unchanged `Index` value as the dummy inlineSite identifier.
Good results seen for SPEC2017 in general regarding profile quality.
Reviewed By: wenlei, wlei
Differential Revision: https://reviews.llvm.org/D100235
Matt Morehouse [Thu, 22 Apr 2021 00:06:09 +0000 (17:06 -0700)]
[HWASan] Untag argument to __hwasan_tag_memory.
__hwasan_tag_memory expects untagged pointers, so make sure our pointer
is untagged.
Eugene Zhulenev [Wed, 21 Apr 2021 22:52:50 +0000 (15:52 -0700)]
[mlir] Linalg : do not forward memrefs to outputs when do bufferization
Example:
```
%0 = linalg.init_tensor : tensor<...>
%1 = linalg.generic ... outs(%0: tensor<...>)
%2 = linalg.generic ... outs(%0: tensor<...>)
```
Memref allocated as a result of `init_tensor` bufferization can be incorrectly overwritten by the second linalg.generic operation
Reviewed By: silvas
Differential Revision: https://reviews.llvm.org/D100921
Fangrui Song [Wed, 21 Apr 2021 23:20:50 +0000 (16:20 -0700)]
[IR] Add doc about Function::createWithDefaultAttr. NFC
Fangrui Song [Wed, 21 Apr 2021 22:58:20 +0000 (15:58 -0700)]
[IR][sanitizer] Set nounwind on module ctor/dtor, additionally set uwtable if -fasynchronous-unwind-tables
On ELF targets, if a function has uwtable or personality, or does not have
nounwind (`needsUnwindTableEntry`), it marks that `.eh_frame` is needed in the module.
Then, a function gets `.eh_frame` if `needsUnwindTableEntry` or `-g[123]` is specified.
(i.e. If -g[123], every function gets `.eh_frame`.
This behavior is strange but that is the status quo on GCC and Clang.)
Let's take asan as an example. Other sanitizers are similar.
`asan.module_[cd]tor` has no attribute. `needsUnwindTableEntry` returns true,
so every function gets `.eh_frame` if `-g[123]` is specified.
This is the root cause that
`-fno-exceptions -fno-asynchronous-unwind-tables -g` produces .debug_frame
while
`-fno-exceptions -fno-asynchronous-unwind-tables -g -fsanitize=address` produces .eh_frame.
This patch
* sets the nounwind attribute on sanitizer module ctor/dtor.
* let Clang emit a module flag metadata "uwtable" for -fasynchronous-unwind-tables. If "uwtable" is set, sanitizer module ctor/dtor additionally get the uwtable attribute.
The "uwtable" mechanism is generic: synthesized functions not cloned/specialized
from existing ones should consider `Function::createWithDefaultAttr` instead of
`Function::create` if they want to get some default attributes which
have more of module semantics.
Other candidates: "frame-pointer" (https://github.com/ClangBuiltLinux/linux/issues/955
https://github.com/ClangBuiltLinux/linux/issues/1238), dso_local, etc.
Differential Revision: https://reviews.llvm.org/D100251
Walter Erquinigo [Wed, 21 Apr 2021 22:46:02 +0000 (15:46 -0700)]
Fix VSCode/TestOptions.test
Found by https://lab.llvm.org/buildbot/#/builders/96/builds/6936
Petr Hosek [Sat, 17 Apr 2021 04:33:18 +0000 (21:33 -0700)]
[libcxx] Stop using use c++ subdirectory for libc++ library
The new layout more closely matches the layout used by other compilers.
This is only used when LLVM_ENABLE_PER_TARGET_RUNTIME_DIR is enabled.
Differential Revision: https://reviews.llvm.org/D100869
Michael Holman [Wed, 21 Apr 2021 22:29:19 +0000 (15:29 -0700)]
[CodeView] Add CodeView support for PGO debug information
This change adds debug information about whether PGO is being used or
not.
Microsoft performance tooling (e.g. xperf, WPA) uses this information to
show whether functions are optimized with PGO or not, as well as whether
PGO information is invalid.
This information is useful for validating whether training scenarios are
providing good coverage of real world scenarios, showing if profile data
is out of date, etc.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D99994
Walter Erquinigo [Wed, 21 Apr 2021 22:20:42 +0000 (15:20 -0700)]
Fix TestVSCode_runInTerminal
It failed in https://lab.llvm.org/buildbot/#/builders/68/builds/10912
And it was caused due to https://reviews.llvm.org/rG64f47c1e58a1
Walter Erquinigo [Wed, 21 Apr 2021 22:06:44 +0000 (15:06 -0700)]
[lldb-vscode] Distinguish shadowed variables in the scopes request
VSCode doesn't render multiple variables with the same name in the variables view. It only renders one of them. This is a situation that happens often when there are shadowed variables.
The nodejs debugger solves this by adding a number suffix to the variable, e.g. "x", "x2", "x3" are the different x variables in nested blocks.
In this patch I'm doing something similar, but the suffix is " @ <file_name:line>), e.g. "x @ main.cpp:17", "x @ main.cpp:21". The fallback would be an address if the source and line information is not present, which should be rare.
This fix is only needed for globals and locals. Children of variables don't suffer of this problem.
When there are shadowed variables
{
F16182150}
Without shadowed variables
{
F16182152}
Modifying these variables through the UI works
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D99989
Louis Dionne [Wed, 21 Apr 2021 21:56:58 +0000 (17:56 -0400)]
[libc++] Move the debug_level feature to the DSL
Craig Topper [Wed, 21 Apr 2021 15:51:00 +0000 (08:51 -0700)]
[RISCV] Cleanup up the spec version references around fmaxnum/fminnum.
This previously made references to 2.3-draft which was a short
lived version number in 2017. It was replaced by date based
versions leading up to ratification.
This patch uses the latest ratified version number and just says
what the behavior is. Nothing here is in flux.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D100878
Craig Topper [Wed, 21 Apr 2021 07:25:42 +0000 (00:25 -0700)]
[RISCV] Temporary in vmsge(u).vx pseudo instructions can't be V0.
This was checked in some asserts, but not enforced by the
instruction matching.
There's still a second bug that we don't check that vt and vd
are different registers, but that will require custom checking.
Differential Revision: https://reviews.llvm.org/D100928
Walter Erquinigo [Wed, 21 Apr 2021 21:20:17 +0000 (14:20 -0700)]
[lldb-vscode] redirect stderr/stdout to the IDE's console
In certain occasions times, like when LLDB is initializing and
evaluating the .lldbinit files, it tries to print to stderr and stdout
directly. This confuses the IDE with malformed data, as it talks to
lldb-vscode using stdin and stdout following the JSON RPC protocol. This
ends up terminating the debug session with the user unaware of what's
going on. There might be other situations in which this can happen, and
they will be harder to debug than the .lldbinit case.
After several discussions with @clayborg, @yinghuitan and @aadsm, we
realized that the best course of action is to simply redirect stdout and
stderr to the console, without modifying LLDB itself. This will prove to
be resilient to future bugs or features.
I made the simplest possible redirection logic I could come up with. It
only works for POSIX, and to make it work with Windows should be merely
changing pipe and dup2 for the windows equivalents like _pipe and _dup2.
Sadly I don't have a Windows machine, so I'll do it later once my office
reopens, or maybe someone else can do it.
I'm intentionally not adding a stop-redirecting logic, as I don't see it
useful for the lldb-vscode case (why would we want to do that, really?).
I added a test.
Note: this is a simpler version of D80659. I first tried to implement a
RIIA version of it, but it was problematic to manage the state of the
thread and reverting the redirection came with some non trivial
complexities, like what to do with unflushed data after the debug
session has finished on the IDE's side.
River Riddle [Wed, 21 Apr 2021 21:33:30 +0000 (14:33 -0700)]
[mlir][mlir-lsp-server] Add some initial documentation on the MLIR LSP server
This covers some of the basic documentation, but is still missing some documentation/examples of features provided by the server. Feature documentation will be added in a followup.
Differential Revision: https://reviews.llvm.org/D100690
River Riddle [Wed, 21 Apr 2021 21:33:18 +0000 (14:33 -0700)]
[mlir] Add a vscode language extension for MLIR
This utilizes the mlir-lsp server to provide language services for MLIR files opened in vscode. The extension currently supports syntax highlighting, as well as tracking definitions/uses/source locations for SSA values and blocks.
Differential Revision: https://reviews.llvm.org/D100607
River Riddle [Wed, 21 Apr 2021 21:33:04 +0000 (14:33 -0700)]
[mlir][mlir-lsp] Add a new C++ LSP server for MLIR named mlir-lsp-server
This commits adds a basic LSP server for MLIR that supports resolving references and definitions. Several components of the setup are simplified to keep the size of this commit down, and will be built out in later commits. A followup commit will add a vscode language client that communicates with this server, paving the way for better IDE experience when interfacing with MLIR files.
The structure of this tool is similar to mlir-opt and mlir-translate, i.e. the implementation is structured as a library that users can call into to implement entry points that contain the dialects/passes that they are interested in.
Note: This commit contains several files, namely those in `mlir-lsp-server/lsp`, that have been copied from the LSP code in clangd and adapted for use in MLIR. This copying was decided as the best initial path forward (discussed offline by several stake holders in MLIR and clangd) given the different needs of our MLIR server, and the one for clangd. If a strong desire/need for unification arises in the future, the existence of these files in mlir-lsp-server can be reconsidered.
Differential Revision: https://reviews.llvm.org/D100439
River Riddle [Wed, 21 Apr 2021 21:32:50 +0000 (14:32 -0700)]
Add a new AsmParserState class to capture detailed source information for .mlir files
This information isn't useful for general compilation, but is useful for building tools that process .mlir files. This class will be used in a followup to start building an LSP language server for MLIR.
Differential Revision: https://reviews.llvm.org/D100438
Petr Hosek [Tue, 20 Apr 2021 23:14:02 +0000 (16:14 -0700)]
[MC] Use COMDAT for LSDA only if IR comdat type is any
This fixed issue introduced in
16af97393346ad636298605930a8b503a55eb40a
and
796feb61637c407aefcc0d462f24a1cc41f350d8.
Differential Revision: https://reviews.llvm.org/D100909
Walter Erquinigo [Wed, 21 Apr 2021 21:33:02 +0000 (14:33 -0700)]
Fix TestVSCode_launch test
Broken in https://lab.llvm.org/buildbot/#/builders/96/builds/6933
We don't really need to run this test on arm, but would be worth fixing
it later.
Olle Fredriksson [Wed, 21 Apr 2021 20:48:28 +0000 (22:48 +0200)]
[MemCpyOpt] Allow variable lengths in memcpy optimizer
This makes the memcpy-memcpy and memcpy-memset optimizations work for
variable sizes as long as they are equal, relaxing the old restriction
that they are constant integers. If they're not equal, the old
requirement that they are constant integers with certain size
restrictions is used.
The implementation works by pushing the length tests further down in the
code, which reveals some places where it's enough that the lengths are
equal (but not necessarily constant).
Differential Revision: https://reviews.llvm.org/D100870
Jonas Devlieghere [Wed, 21 Apr 2021 20:59:54 +0000 (13:59 -0700)]
Re-land "[Driver] Support default libc++ library location on Darwin"
This reverts commit
05eeed9691aeb3e0316712195b998e9078cdceb0 and after
fixing the impacted lldb tests in
5d1c43f333c2327be61604dc90ea675f0d1e6913.
[Driver] Support default libc++ library location on Darwin
Darwin driver currently uses libc++ headers that are part of Clang
toolchain when available (by default ../include/c++/v1 relative to
executable), but it completely ignores the libc++ library itself
because it doesn't pass the location of libc++ library that's part
of Clang (by default ../lib relative to the exceutable) to the linker
always using the system copy of libc++.
This may lead to subtle issues when the compilation fails because the
headers that are part of Clang toolchain are incompatible with the
system library. Either the driver should ignore both headers as well as
the library, or it should always try to use both when available.
This patch changes the driver behavior to do the latter which seems more
reasonable, it makes it easy to test and use custom libc++ build on
Darwin while still allowing the use of system version. This also matches
the Clang driver behavior on other systems.
Differential Revision: https://reviews.llvm.org/D45639
Yaxun (Sam) Liu [Wed, 21 Apr 2021 18:34:37 +0000 (14:34 -0400)]
[HIP] Add option -fgpu-inline-threshold
Add option -fgpu-inline-threshold for inline threshold for device compilation only.
Reviewed by: Artem Belevich
Differential Revision: https://reviews.llvm.org/D99233
Louis Dionne [Wed, 21 Apr 2021 21:12:01 +0000 (17:12 -0400)]
[libc++] Move macOS testing out of the 2nd CI stage
It's too slow, which delays the posting of CI results to Phabricator
when another step in the same stage fails.