LLVM GN Syncbot [Mon, 21 Feb 2022 22:08:44 +0000 (22:08 +0000)]
[gn build] Port
68f4131c94d4
Nikolas Klauser [Mon, 21 Feb 2022 22:07:02 +0000 (23:07 +0100)]
[libc++][ranges] Add ranges::in_found_result
Reviewed By: Quuxplusone, #libc
Spies: libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D119763
Nikolas Klauser [Mon, 21 Feb 2022 21:56:14 +0000 (22:56 +0100)]
[libc++] Replace [[no_unique_addredd]] with _LIBCPP_NO_UNIQUE_ADDRESS in __algorithm/min_max_result.h
LLVM GN Syncbot [Mon, 21 Feb 2022 21:52:37 +0000 (21:52 +0000)]
[gn build] Port
807766be3a89
Nikolas Klauser [Mon, 21 Feb 2022 21:48:36 +0000 (22:48 +0100)]
[libc++][ranges] Add ranges::min_max_result
Reviewed By: Quuxplusone, #libc
Spies: libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D119751
Sanjay Patel [Mon, 21 Feb 2022 20:19:23 +0000 (15:19 -0500)]
[x86] add tests for rmw add with cmov; NFC
Petr Hosek [Mon, 21 Feb 2022 21:23:39 +0000 (13:23 -0800)]
[CMake][Fuchsia] Disable assertions and analyzer for stage 1
We don't need these in the first stage compiler and disabling these
helps a bit with the compile time and runtime performance.
Differential Revision: https://reviews.llvm.org/D120280
Groverkss [Mon, 21 Feb 2022 20:57:26 +0000 (02:27 +0530)]
[MLIR][Presburger] Add support for IntegerRelation
This patch adds a class to represent a relation in Presburger Library.
This patch only adds the skeleton class. Functionality from IntegerPolyhedron
will be moved to IntegerRelation in later patches to make it easier to review.
This patch is a part of a series of patches adding support for relations in
Presburger Library.
Reviewed By: arjunp
Differential Revision: https://reviews.llvm.org/D120156
Martin Storsjö [Thu, 13 Jan 2022 10:28:41 +0000 (10:28 +0000)]
[libcxx] [test] Fix the thousands_sep expectation for fr_FR locales on Windows
Windows uses U+00A0 NO-BREAK SPACE as thousands separator in the
fr_FR locale.
Differential Revision: https://reviews.llvm.org/D120090
Martin Storsjö [Tue, 18 Jan 2022 09:33:08 +0000 (09:33 +0000)]
[libcxx] [test] Fix moneypunct grouping tests on Windows
For grouping strings, "\3" and "\3\3" are equivalent.
Differential Revision: https://reviews.llvm.org/D120091
Arjun P [Mon, 21 Feb 2022 19:04:12 +0000 (19:04 +0000)]
[MLIR][Presburger] Support finding integer lexmin in IntegerPolyhedron
Note: this does not yet support PrebsurgerSets.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D120239
Paweł Bylica [Mon, 21 Feb 2022 19:27:47 +0000 (20:27 +0100)]
[NFC][DAGCombine] Use isOperandOf() in combineCarryDiamond
Pre-commit for https://reviews.llvm.org/D118362.
George Koehler [Mon, 21 Feb 2022 20:15:53 +0000 (15:15 -0500)]
[libunwind] Further fix for 32-bit PowerPC processors without AltiVec
https://reviews.llvm.org/D91906 did most of the work necessary to fix libunwind on
32-bit PowerPC processors without AltiVec, but there was one more piece necessary.
Reviewed By: luporl
Differential Revision: https://reviews.llvm.org/D120197
Alexey Bataev [Fri, 26 Mar 2021 19:43:25 +0000 (12:43 -0700)]
[OPENMP]Fix PR49366: crash on VLAs in task untied regions.
We need to capture the local variables into a record in task untied
regions but clang does not support record with VLA data members.
Differential Revision: https://reviews.llvm.org/D99436
Craig Topper [Mon, 21 Feb 2022 19:52:57 +0000 (11:52 -0800)]
[RISCV] Teach shouldSinkOperands to sink splat operands of vp.fma intrinsics.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D120167
Kristof Beyls [Wed, 16 Feb 2022 13:53:18 +0000 (14:53 +0100)]
Create office hours documentation.
Differential Revision: https://reviews.llvm.org/D120036
Shilei Tian [Mon, 21 Feb 2022 16:47:02 +0000 (11:47 -0500)]
[Clang][OpenMP] Add Sema support for atomic compare capture
This patch adds Sema support for `atomic compare capture`.
Reviewed By: ABataev
Differential Revision: https://reviews.llvm.org/D120200
Casey Carter [Wed, 29 Dec 2021 22:26:30 +0000 (14:26 -0800)]
[libcxx][test] array and basic_string_view iterators are not portably pointers
Fixup tests that believe them to be so. Most notably including some heavy refactoring in `std/iterators/iterator.primitives/iterator.traits/cxx20_iterator_traits.compile.pass.cpp`, which now detects pointers and validates that `iterator_concept` is present only for pointers.
Differential Revision: https://reviews.llvm.org/D117368
Nico Weber [Mon, 21 Feb 2022 18:29:37 +0000 (13:29 -0500)]
Revert "[ArgPromotion] Regenerate test checks for crash.ll - removed ALL_NEWPM prefix."
This reverts commit
52577cd26f26f6428c72395e7337af3fc84bc6f6.
Breaks check-llvm, see comments on https://reviews.llvm.org/D120207
Benjamin Kramer [Mon, 21 Feb 2022 17:37:19 +0000 (18:37 +0100)]
[MLIR][PDL] Fix C++20 build. concept is a new keyword. NFC.
Florian Hahn [Mon, 21 Feb 2022 16:54:02 +0000 (16:54 +0000)]
[MemCpyOpt] Check all access for MemoryUses in writtenBetween.
Currently writtenBetween can miss clobbers of Loc between End and Start,
if End is a MemoryUse.
To guarantee we see all write clobbers of Loc between Start and End
for MemoryUses, restrict to Start and End being in the same block
and check all accesses between them.
This fixes 2 mis-compiles illustrated in
llvm/test/Transforms/MemCpyOpt/memcpy-byval-forwarding-clobbers.ll
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D119929
Shilei Tian [Mon, 21 Feb 2022 16:40:01 +0000 (11:40 -0500)]
[Clang][OpenMP] Fix wrong form of 'cond-update-stmt' in atomic_ast_print.cpp
In `clang/test/OpenMP/atomic_ast_print.cpp` for `atomic compare capture`,
it was using 'cond-expr-stmt' instead of 'cond-update-stmt'. The spec only supports
'cond-update-stmt'.
Reviewed By: ABataev
Differential Revision: https://reviews.llvm.org/D120252
David Green [Mon, 21 Feb 2022 16:24:58 +0000 (16:24 +0000)]
[ARM] Addition SSAT/USAT tests for min/max patterns. NFC
Valery Pykhtin [Sun, 20 Feb 2022 12:15:31 +0000 (15:15 +0300)]
[ArgPromotion] Regenerate test checks for crash.ll - removed ALL_NEWPM prefix.
Rename %tmp => %temp IR values to avoid update warning.
Reviewed by Nikita Popov
Differential revision: https://reviews.llvm.org/D120207
fuzzypixelz [Mon, 21 Feb 2022 15:53:27 +0000 (07:53 -0800)]
[MLIR] replace C++ function type defintion in the C API's Interfaces.h
Clearly this something of a typo, and it obviously doesn't even compile.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D120247
David Green [Mon, 21 Feb 2022 15:44:30 +0000 (15:44 +0000)]
[AArch64] Alter mull shuffle(ext(..)) combine to work on buildvectors
We have a combine for converting mul(dup(ext(..)), ...) into
mul(ext(dup(..)), ..), for allowing more uses of smull and umull
instructions. Currently it looks for vector insert and shuffle vectors
to detect the element that we can convert to a vector extend. Not all
cases will have a shufflevector/insert element though.
This started by extending the recognition to buildvectors (with elements
that may be individually extended). The new method seems to cover all
the cases that the old method captured though, as the shuffle will
eventually be lowered to buildvectors, so the old method has been
removed to keep the code a little simpler. The new code detects legal
build_vector(ext(a), ext(b), ..), converting them to ext(build_vector(a,
b, ..)) providing all the extends/types match up.
Differential Revision: https://reviews.llvm.org/D120018
Matt Arsenault [Fri, 18 Feb 2022 21:22:20 +0000 (16:22 -0500)]
MIR: Start diagnosing too many operands on an instruction
Previously this would just assert which was annoying and didn't point
to the specific instruction/operand.
Sanjay Patel [Mon, 21 Feb 2022 14:26:07 +0000 (09:26 -0500)]
[InstSimplify] add tests for funnel shift with redundant shift; NFC
Sanjay Patel [Mon, 21 Feb 2022 14:07:59 +0000 (09:07 -0500)]
[AArch64][RISCV][x86] add tests for funnel shift with shift logic; NFC
Sven van Haastregt [Mon, 21 Feb 2022 13:55:29 +0000 (13:55 +0000)]
Fix llvm-objcopy shared lib build
Fix after
ddf528b7a092 ("[llvm-objcopy][COFF] Fix section name
encoding", 2022-02-21) caused "undefined reference to
`llvm::COFF::encodeSectionName" failures.
Simon Pilgrim [Mon, 21 Feb 2022 13:44:36 +0000 (13:44 +0000)]
[X86] use-cr-result-of-dom-icmp-st.ll - add checks without -cgp-icmp-eq2icmp-st flag
Shilei Tian [Mon, 21 Feb 2022 13:20:26 +0000 (08:20 -0500)]
[Clang][Sema] Check unexpected else statement in cond-update-stmt
In 'cond-update-stmt', `else` statement is not expected. This patch adds
the check in Sema.
Reviewed By: ABataev
Differential Revision: https://reviews.llvm.org/D120225
Max Kazantsev [Mon, 21 Feb 2022 13:10:42 +0000 (20:10 +0700)]
[SCEV][NFC] Replace contains+insert check with insert.second
Simon Pilgrim [Mon, 21 Feb 2022 13:07:51 +0000 (13:07 +0000)]
[DAG] visitBSWAP - pull out repeated SDLoc. NFC
Cleanup for D120192
Kito Cheng [Mon, 21 Feb 2022 12:43:40 +0000 (20:43 +0800)]
[NFC][RISCV] Fix path checking issue if default sysroot is given
Sam McCall [Fri, 11 Feb 2022 11:09:57 +0000 (12:09 +0100)]
[clangd] Treat 'auto' params as deduced if there's a single instantiation.
This makes hover/go-to-definition/expand-auto etc work for auto params in many
common cases.
This includes when a generic lambda is passed to a function accepting
std::function. (The tests don't use this case, it requires a lot of setup).
Note that this doesn't affect the AST of the function body itself, cause its
nodes not to be dependent, improve code completion etc.
(These sort of improvements seem possible, in a similar "if there's a single
instantiation, traverse it instead of the primary template" way).
Fixes https://github.com/clangd/clangd/issues/493
Fixes https://github.com/clangd/clangd/issues/1015
Differential Revision: https://reviews.llvm.org/D119537
Tom Stellard [Mon, 21 Feb 2022 12:02:55 +0000 (04:02 -0800)]
issue-subscriber: Fix handling of labels with spaces
Fixes #53288
Reviewed By: mehdi_amini, asl, Quuxplusone
Differential Revision: https://reviews.llvm.org/D117745
Alex Zinenko [Wed, 19 Jan 2022 12:43:24 +0000 (13:43 +0100)]
[mlir] Annotate methods on a correct class in PybindAdaptors.h
The `.def` and `.def_property_readonly` functions in PybindAdaptors.h should
construct the functions as method of the current class rather than as method of
pybind11:none(), which is an object and not even a class.
Depends On D117658
Reviewed By: gysit
Differential Revision: https://reviews.llvm.org/D117659
LLVM GN Syncbot [Mon, 21 Feb 2022 11:51:36 +0000 (11:51 +0000)]
[gn build] Port
85f4023e731c
Nicolas Miller [Sat, 19 Feb 2022 18:28:38 +0000 (20:28 +0200)]
[llvm-objcopy][COFF] Fix section name encoding
The section name encoding for `llvm-objcopy` had two main issues, the
first is that the size used for the `snprintf` in the original code is
incorrect because `snprintf` adds a null byte, so this code was only
able to encode offsets of 6 digits - `/`, `\0` and 6 digits of the
offset - rather than the 7 digits it should support.
And the second part is that it didn't support the base64 encoding for
offsets larger than 7 digits.
This issue specifically showed up when using the `clang-offload-bundler`
with a binary containing a lot of symbols/sections, since it uses
`llvm-objcopy` to add the sections containing the offload code.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D118692
Nicolas Miller [Sat, 19 Feb 2022 18:29:08 +0000 (20:29 +0200)]
[COFF] Move section name encoding into BinaryFormat
Large COFF section names are moved into the string table and the
section header field is the offset into the string table encoded in
ASCII for offset smaller than 7 digits and in base64 for larger
offsets.
The operation of taking the string table offsets is done in a few
places in the codebase, so it is helpful to move this operation into
`BinaryFormat` so that it can be shared everywhere it's done.
So this patch takes the implementation of this operation from
`llvm/lib/MC/WinCOFFObjectWriter.cpp` and moves it into `BinaryFormat`.
Reviewed By: jhenderson, rnk
Differential Revision: https://reviews.llvm.org/D118793
Max Kazantsev [Mon, 21 Feb 2022 11:39:04 +0000 (18:39 +0700)]
[Test] Move test for PR53969 to LoopDeletion folder where it truly belongs
Sven van Haastregt [Mon, 21 Feb 2022 11:29:10 +0000 (11:29 +0000)]
[OpenCL] opencl-c.h: remove arg names from atomics; NFC
This simplifies completeness comparisons against OpenCLBuiltins.td and
also makes the header no longer "claim" the identifiers "success",
"failure", "desired", "value".
Differential Revision: https://reviews.llvm.org/D119560
Florian Hahn [Mon, 21 Feb 2022 10:52:09 +0000 (10:52 +0000)]
Revert "[AArch64][GlobalISel] Optimize conjunctions of compares to conditional compares."
This reverts commit
2a46450849de6904fc64f9a65303b20ca7fc9dbd.
This triggers the following assertion in an internal project:
Assertion failed: (VRegInfo[Reg.id()].first.is<const TargetRegisterClass
*>() && "Register class not set, wrong accessor"), function getRegClass,
file MachineRegisterInfo.h, line 646.
I'll work with the author directly to get a reproducer.
Jay Foad [Fri, 28 Jan 2022 13:49:12 +0000 (13:49 +0000)]
[AMDGPU] SILoadStoreOptimizer: avoid unbounded register pressure increases
Previously when combining two loads this pass would sink the
first one down to the second one, putting the combined load
where the second one was. It would also sink any intervening
instructions which depended on the first load down to just
after the combined load.
For example, if we started with this sequence of
instructions (code flowing from left to right):
X A B C D E F Y
After combining loads X and Y into XY we might end up with:
A B C D E F XY
But if B D and F depended on X, we would get:
A C E XY B D F
Now if the original code had some short disjoint live ranges
from A to B, C to D and E to F, in the transformed code
these live ranges will be long and overlapping. In this way
a single merge of two loads could cause an unbounded
increase in register pressure.
To fix this, change the way the way that loads are moved in
order to merge them so that:
- The second load is moved up to the first one. (But when
merging stores, we still move the first store down to the
second one.)
- Intervening instructions are never moved.
- Instead, if we find an intervening instruction that would
need to be moved, give up on the merge. But this case
should now be pretty rare because normal stores have no
outputs, and normal loads only have address register
inputs, but these will be identical for any pair of loads
that we try to merge.
As well as fixing the unbounded register pressure increase
problem, moving loads up and stores down seems like it
should usually be a win for memory latency reasons.
Differential Revision: https://reviews.llvm.org/D119006
Max Kazantsev [Mon, 21 Feb 2022 10:48:08 +0000 (17:48 +0700)]
[Test] Add failing test for PR53969
Benjamin Kramer [Mon, 21 Feb 2022 10:43:40 +0000 (11:43 +0100)]
Increase the limit on parser diagnostics
We're really close to the limit
$ grep -c DIAG tools/clang/include/clang/Basic/DiagnosticParseKinds.inc
598
Jay Foad [Fri, 18 Feb 2022 11:55:09 +0000 (11:55 +0000)]
[StableHashing] Hash vregs with multiple defs
This allows stableHashValue to be used on Machine IR that is
not in SSA form.
Differential Revision: https://reviews.llvm.org/D120121
Rainer Orth [Mon, 21 Feb 2022 10:23:15 +0000 (11:23 +0100)]
[DebugInfo][test] XFAIL DebugInfo/Generic/no-empty-child-vars.ll on SPARC
`DebugInfo/Generic/no-empty-child-vars.ll` `FAIL`s on SPARC. As discussed
in D95617 <https://reviews.llvm.org/D95617>, this is yet another instance
of Issue #46473.
As was done for other failures due to this bug, this patch `XFAIL`s the test.
Tested on `sparcv9-sun-solaris2.11`.
Differential Revision: https://reviews.llvm.org/D120238
Lian Wang [Mon, 21 Feb 2022 09:58:55 +0000 (09:58 +0000)]
[RISCV] Add tests for SHFLI and UNSHFLI aliases in Zbp extension
Supplement tests alias of SHFLI and UNSHFLI instructions.
RV32: zip8/zip4/zip2/unzip8/unzip4/unzip2
RV64: zip8.w/zip4.w/zip2.w/zip.w/zip8/zip4/zip2/zip/
unzip8.w/unzip4.w/unzip2.w/unzip.w/unzip8/unzip4/unzip2/unzip
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D120015
Simon Moll [Mon, 21 Feb 2022 09:37:47 +0000 (10:37 +0100)]
[VE] v512i1 mask arithmetic isel
Packed vector and mask registers (v512) are composed of two v256
subregisters that occupy the even and odd element positions. We add
packing support SDNodes (vec_unpack_lo|hi and vec_pack) and splitting of
v512i1 mask arithmetic ops with those.
Reviewed By: kaz7
Differential Revision: https://reviews.llvm.org/D120053
Iain Sandoe [Thu, 11 Feb 2021 00:15:56 +0000 (00:15 +0000)]
[C++20][Modules][1/8] Track valid import state.
In C++20 modules imports must be together and at the start of the module.
Rather than growing more ad-hoc flags to test state, this keeps track of the
phase of of a valid module TU (first decl, global module frag, module,
private module frag). If the phasing is broken (with some diagnostic) the
pattern does not conform to a valid C++20 module, and we set the state
accordingly.
We can thus issue diagnostics when imports appear in the wrong places and
decouple the C++20 modules state from other module variants (modules-ts and
clang modules). Additionally, we attempt to diagnose wrong imports before
trying to find the module where possible (the latter will generally emit an
unhelpful diagnostic about the module not being available).
Although this generally simplifies the handling of C++20 module import
diagnostics, the motivation was that, in particular, it allows detecting
invalid imports like:
import module A;
int some_decl();
import module B;
where being in a module purview is insufficient to identify them.
Differential Revision: https://reviews.llvm.org/D118893
Fangrui Song [Mon, 21 Feb 2022 08:39:26 +0000 (00:39 -0800)]
[ELF] Replace uncompressed InputSectionBase::data() with rawData. NFC
In many call sites we know uncompression cannot happen (non-SHF_ALLOC, or the
data (even if compressed) must have been uncompressed by a previous pass).
Prefer rawData in these cases. data() increases code size and prevents
optimization on rawData.
Matthias Springer [Mon, 21 Feb 2022 08:13:13 +0000 (17:13 +0900)]
[mlir][linalg][bufferize][NFC] Move interface impl to Linalg Transforms
This is for consistency with other dialects.
Differential Revision: https://reviews.llvm.org/D120190
Prateek Gupta [Thu, 3 Feb 2022 15:55:30 +0000 (15:55 +0000)]
[MLIR][LINALG] Add canonicalization pattern in `linalg.generic` op for static shape inference.
This commit adds canonicalization pattern in `linalg.generic` op
for static shape inference. If any of the inputs or outputs have
static shape or is casted from a tensor of static shape, then
shapes of all the inputs and outputs can be inferred by using the
affine map of the static shape input/output.
Signed-Off-By: Prateek Gupta <prateek@nod-labs.com>
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D118929
Shraiysh Vaishay [Mon, 21 Feb 2022 07:20:58 +0000 (12:50 +0530)]
[mlir][OpenMP] Added assemblyFormat for SectionsOp
This patch adds assemblyFormat for omp.sections operation.
Some existing functions have been altered to fit the custom directive
in assemblyFormat. This has led to their callsites to get modified too,
but those will be removed in later patches, when other operations get
their assemblyFormat. All operations were not changed in one patch for
ease of review.
Reviewed By: Mogball
Differential Revision: https://reviews.llvm.org/D120176
Kito Cheng [Mon, 21 Feb 2022 06:06:19 +0000 (14:06 +0800)]
[RISCV] Fix the include search path order between sysroot and resource folder (Recommit again)
Resource folder[1] should include before sysroot[2] in general (Linux clang
toolchain, BareMetal clang toolchain, and GCC using that order), and that
prevent sysroot's header file override resource folder's one, this change is
reference from BareMetal::AddClangSystemIncludeArgs@BareMetal.cpp[3].
And also fix the behavior of `-nobuiltininc`.
[1] Include path from resource folder is something like this: `<toolchain-path>/lib/clang/13.0.0/include/`
[2] Include path from sysroot is something like this: `<toolchain-path>/riscv32-unknown-elf/include`
[3] https://github.com/llvm/llvm-project/blob/llvmorg-13.0.1/clang/lib/Driver/ToolChains/BareMetal.cpp#L193
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D119837
The recommit fixes the Windows build failure due to path issue.
Kito Cheng [Mon, 21 Feb 2022 06:56:50 +0000 (14:56 +0800)]
Revert "[RISCV] Fix the include search path order between sysroot and resource folder (Recommit)"
This reverts commit
47b1fa5fc48821eefefd157ed4af2f2cf3bacef4.
Craig Topper [Mon, 21 Feb 2022 06:35:30 +0000 (22:35 -0800)]
[ARM] Remove unused lowerABS function. NFC
This function was added in D49837, but no setOperationAction call
was added with it. The code is equivalent to what is done by the
default ExpandIntRes_ABS implementation when ADDCARRY is supported.
Test case added to verify this. There was some existing coverage
from Thumb2 MVE tests, but they started from vectors.
Kito Cheng [Mon, 21 Feb 2022 06:06:19 +0000 (14:06 +0800)]
[RISCV] Fix the include search path order between sysroot and resource folder (Recommit)
Resource folder[1] should include before sysroot[2] in general (Linux clang
toolchain, BareMetal clang toolchain, and GCC using that order), and that
prevent sysroot's header file override resource folder's one, this change is
reference from BareMetal::AddClangSystemIncludeArgs@BareMetal.cpp[3].
And also fix the behavior of `-nobuiltininc`.
[1] Include path from resource folder is something like this: `<toolchain-path>/lib/clang/13.0.0/include/`
[2] Include path from sysroot is something like this: `<toolchain-path>/riscv32-unknown-elf/include`
[3] https://github.com/llvm/llvm-project/blob/llvmorg-13.0.1/clang/lib/Driver/ToolChains/BareMetal.cpp#L193
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D119837
The recommit fixes the Windows build failure due to path issue.
Kito Cheng [Mon, 21 Feb 2022 06:25:49 +0000 (14:25 +0800)]
Revert "[RISCV] Fix the include search path order between sysroot and resource folder"
This reverts commit
079d13668bf1b7f929f1897af90f64caae41c81d.
Kito Cheng [Mon, 21 Feb 2022 06:06:19 +0000 (14:06 +0800)]
[RISCV] Fix the include search path order between sysroot and resource folder
Resource folder[1] should include before sysroot[2] in general (Linux clang
toolchain, BareMetal clang toolchain, and GCC using that order), and that
prevent sysroot's header file override resource folder's one, this change is
reference from BareMetal::AddClangSystemIncludeArgs@BareMetal.cpp[3].
And also fix the behavior of `-nobuiltininc`.
[1] Include path from resource folder is something like this: `<toolchain-path>/lib/clang/13.0.0/include/`
[2] Include path from sysroot is something like this: `<toolchain-path>/riscv32-unknown-elf/include`
[3] https://github.com/llvm/llvm-project/blob/llvmorg-13.0.1/clang/lib/Driver/ToolChains/BareMetal.cpp#L193
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D119837
Craig Topper [Mon, 21 Feb 2022 05:11:21 +0000 (21:11 -0800)]
[SelectionDAG][RISCV][ARM][PowerPC][X86][WebAssembly] Change default abs expansion to use sra (X, size(X)-1); sub (xor (X, Y), Y).
Previous we used sra (X, size(X)-1); xor (add (X, Y), Y).
By placing sub at the end, we allow RISCV to combine sign_extend_inreg
with it to form subw.
Some X86 tests for Z - abs(X) seem to have improved as well.
Other targets look to be a wash.
I had to modify ARM's abs matching code to match from sub instead of
xor. Maybe instead ISD::ABS should be made legal. I'll try that in
parallel to this patch.
This is an alternative to D119099 which was focused on RISCV only.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D119171
Serguei Katkov [Fri, 18 Feb 2022 11:10:14 +0000 (18:10 +0700)]
[STATEPOINT] Mark LR is early-clobber implicit def.
LR is modified at the moment of the call and before any use is read.
Reviewers: reames
Reviewed By: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D120114
esmeyi [Mon, 21 Feb 2022 02:51:10 +0000 (21:51 -0500)]
Reland [XCOFF][llvm-objdump] change the priority of symbols with the same address by symbol types.
Fix the Buildbot failure #19373.
Differential Revision: https://reviews.llvm.org/D117642
Chen Zheng [Thu, 17 Feb 2022 13:57:53 +0000 (08:57 -0500)]
[ISEL] remove unnecessary getNode(); NFC
Reviewed By: RKSimon, craig.topper
Differential Revision: https://reviews.llvm.org/D120049
Lian Wang [Mon, 21 Feb 2022 01:58:08 +0000 (09:58 +0800)]
[RISCV][NFC] Add sched for some instructions in Zb extension
Add sched to brev8, zip and unzip instruction.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D120009
Luo, Yuanke [Fri, 18 Feb 2022 13:04:08 +0000 (21:04 +0800)]
[SDAG] enable binop identity constant folds for sub
This patch extract the sub folding from D119654 and leave only add
folding in that patch.
Differential Revision: https://reviews.llvm.org/D120116
Amir Ayupov [Mon, 21 Feb 2022 01:23:40 +0000 (17:23 -0800)]
[BOLT] Added fuzzer target (llvm-bolt-fuzzer)
This adds a target that would consume random binary as an
input ELF file.
TBD: add structured input support (ELF).
Build:
```
cmake /path/to/llvm-project/llvm -GNinja \
-DLLVM_TARGETS_TO_BUILD="X86;AArch64" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=1 \
-DCMAKE_C_COMPILER=<sanitizer-capable clang> \
-DCMAKE_CXX_COMPILER=<sanitizer-capable clang++> \
-DLLVM_ENABLE_PROJECTS="bolt" \
-DLLVM_USE_SANITIZER=Address \
-DLLVM_USE_SANITIZE_COVERAGE=On
ninja llvm-bolt-fuzzer
```
Test Plan: ninja llvm-bolt-fuzzer
Reviewed By: maksfb
Differential Revision: https://reviews.llvm.org/D120016
Amir Ayupov [Sun, 20 Feb 2022 22:44:09 +0000 (14:44 -0800)]
[BOLT][NFC] Fix data race in ShrinkWrapping stats
Fix data race reported by ThreadSanitizer in clang.test:
```
ThreadSanitizer: data race /data/llvm-project/bolt/lib/Passes/ShrinkWrapping.cpp:1359:28
in llvm::bolt::ShrinkWrapping::moveSaveRestores()
```
The issue is with incrementing global counters from multiple threads.
Reviewed By: yota9
Differential Revision: https://reviews.llvm.org/D120218
Krystian Kuzniarek [Mon, 21 Feb 2022 01:16:06 +0000 (17:16 -0800)]
[clang-format][NFC] Fix typos and inconsistencies
Differential Revision: https://reviews.llvm.org/D120220
David Blaikie [Sun, 20 Feb 2022 22:52:33 +0000 (14:52 -0800)]
DebugInfo: Add an assert about cross-unit references in dwo units
This is helping me debug some issues with simplified template names
Kesavan Yogeswaran [Sun, 20 Feb 2022 22:00:23 +0000 (22:00 +0000)]
[clang-tidy] Provide fine control of color in run-clang-tidy
D90110 modified the behavior of `run-clang-tidy` to always pass the
`--use-color` option to clang-tidy, which enabled colored diagnostics
output regardless of TTY status or .clang-tidy settings. This left the
user with no option to disable the colored output.
This presents an issue when trying to parse the output of run-clang-tidy
programmaticall, as the output is polluted with ANSI escape characters.
This PR fixes this issue in two ways:
1. It restores the default behavior of `run-clang-tidy` to let
`clang-tidy` decide whether to color output. This allows the user to
configure color via the `UseColor` option in a .clang-tidy file.
2. It adds mutually exclusive, optional `-use-color` and `-no-use-color`
argument flags that let the user explicitly set the color option via
the invocation.
After this change the default behavior of `run-clang-tidy` when no
.clang-tidy file is available is now to show no color, presumably
because `clang-tidy` detects that the output is being piped and defaults
to not showing colored output. This seems like an acceptable tradeoff
to respect .clang-tidy configurations, as users can still use the
`-use-color` option to explicitly enable color.
Fixes #49441 (50097 in Bugzilla)
Reviewed By: njames93
Differential Revision: https://reviews.llvm.org/D119562
Krystian Kuzniarek [Sun, 20 Feb 2022 20:07:53 +0000 (21:07 +0100)]
[clang-format][docs] Fix incorrect 'clang-format 13' configuration ...
...options markers
Note: Option 'IndentRequiresClause' was previously known as
'IndentRequires' but the version marker should still indicate
'clang-format 15' as this option most recent name wasn't accessible
earlier and it would produce:
error: unknown key 'IndentRequiresClause'
Differential Revision: https://reviews.llvm.org/D119682
Björn Schäpers [Sun, 2 Jan 2022 20:42:08 +0000 (21:42 +0100)]
[clang-format][NFC] Return early in ContinuationIndenter::mustBreak
We can return as early as possible and only calculate IsComparison if we
really need to. Also cache getPrecedence() instead of querying it at
most 4 times.
Differential Revision: https://reviews.llvm.org/D119923
Björn Schäpers [Tue, 15 Feb 2022 21:59:23 +0000 (22:59 +0100)]
[clang-format] Fixed handling of requires clauses followed by attributes
Fixes https://github.com/llvm/llvm-project/issues/53820.
Differential Revision: https://reviews.llvm.org/D119893
Marek Kurdej [Sun, 20 Feb 2022 21:18:16 +0000 (22:18 +0100)]
Revert "[clang-format] Avoid inserting space after C++ casts."
This reverts commit
e021987273bece6e94bc6f43b6b5232de10637c8.
This commit provokes failures in formatting tests of polly.
Cf. https://lab.llvm.org/buildbot/#/builders/205/builds/3320.
That's probably because of `)` being annotated as `CastRParen` instead of `Unknown` before, hence being kept on the same line with the next token.
Marek Kurdej [Fri, 18 Feb 2022 17:24:14 +0000 (18:24 +0100)]
[clang-format] Avoid inserting space after C++ casts.
Fixes https://github.com/llvm/llvm-project/issues/53876.
This is a solution for standard C++ casts: const_cast, dynamic_cast, reinterpret_cast, static_cast.
A general approach handling all possible casts is not possible without semantic information.
Consider the code:
```
static_cast<T>(*function_pointer_variable)(arguments);
```
vs.
```
some_return_type<T> (*function_pointer_variable)(parameters);
// Later used as:
function_pointer_variable = &some_function;
return function_pointer_variable(args);
```
In the latter case, it's not a cast but a variable declaration of a pointer to function.
Without knowing what `some_return_type<T>` is (and clang-format does not know it), it's hard to distinguish between the two cases. Theoretically, one could check whether "parameters" are types (not a cast) and "arguments" are value/expressions (a cast), but that might be inefficient (needs lots of lookahead).
Reviewed By: MyDeveloperDay, HazardyKnusperkeks, owenpan
Differential Revision: https://reviews.llvm.org/D120140
Luis Penagos [Sun, 20 Feb 2022 20:35:47 +0000 (21:35 +0100)]
Fix extraneous whitespace addition in line comments on clang-format directives
Fixes https://github.com/llvm/llvm-project/issues/53844.
I believe this regression was caused by not accounting for clang-format directives in https://reviews.llvm.org/D92257.
Reviewed By: HazardyKnusperkeks, curdeius
Differential Revision: https://reviews.llvm.org/D120188
Simon Pilgrim [Sun, 20 Feb 2022 20:42:31 +0000 (20:42 +0000)]
[X86] Regenerate switch-default-only.ll
Yannic Bonenberger [Sun, 20 Feb 2022 20:32:38 +0000 (12:32 -0800)]
[llvm] Add missind dep on Symbolize to Debuginfod
`llvm/Debuginfod/DIFetcher.h` imports `llvm/DebugInfo/Symbolize/DIFetcher.h`,
so there should be a dependency on Symbolize.
Reviewed By: #debug-info, dblaikie, phosek
Differential Revision: https://reviews.llvm.org/D119626
Sanjay Patel [Fri, 18 Feb 2022 22:01:37 +0000 (17:01 -0500)]
[AArch64][RISCV][x86] add tests for mul-add demanded bits; NFC
See #53829
Alex Bradbury [Sun, 20 Feb 2022 19:42:07 +0000 (19:42 +0000)]
[docs] Update ReleaseNotes template
This change makes several updates to the ReleaseNotes template:
* Orders the backend/target updates alphabetically
* Adds RISC-V to the list
* Uses "Backend" rather than a mix of "Target" and "Backend" (I don't
have a strong view on which term is used, but we should be
consistent!)
* Uses * ... as the placeholder text, as this matches the format
actually used for most updates in recent releases
Differential Revision: https://reviews.llvm.org/D120043
Casey Carter [Sun, 20 Feb 2022 19:34:48 +0000 (11:34 -0800)]
[libcxx][test] Update msvc_stdlib_force_include.h for C++23
Make distinct `TEST_STD_VER` values for C++20 and C++23; add C++23 deprecation suppression.
Fixes #53597
Arthur Eubanks [Sun, 20 Feb 2022 19:29:54 +0000 (11:29 -0800)]
[SimplifyCFG][OpaquePtr] Check store type when merging conditional store
Simon Pilgrim [Sun, 20 Feb 2022 18:50:28 +0000 (18:50 +0000)]
[X86] combineX86ShufflesRecursively - attempt to fold ISD::EXTRACT_SUBVECTOR into a shuffle chain
Peek through if we're extracting a non-zero'th subvector in an attempt to fold the extract into a lane-crossing shuffle
This also exposes a failure to fold extract_subvector(movddup(x),c) -> movddup(extract_subvector(x,c))
Nuno Lopes [Sun, 20 Feb 2022 18:43:30 +0000 (18:43 +0000)]
[docs] fix typo
Michel Weber [Sun, 20 Feb 2022 17:49:09 +0000 (23:19 +0530)]
[MLIR][Presburger] Inequality Typing in coalesce
This patch adds typing of inequalities to the simplex. This is a cental part of the coalesce algorithm and will be heavily used in later coalesce patches. Currently, only the three most basic types are supported with more to be introduced when they are needed.
Reviewed By: arjunp
Differential Revision: https://reviews.llvm.org/D119925
Qiu Chaofan [Sun, 20 Feb 2022 17:39:35 +0000 (01:39 +0800)]
[PowerPC] Add option to disable perfect shuffle
Perfect shuffle was introduced into PowerPC backend years ago, and only
available in big-endian subtargets. This optimization has good effects
in simple cases, but brings serious negative impact in large programs
with many shuffle instructions sharing the same mask.
Here introduces a temporary backend hidden option to control it until we
implemented better way to fix the gap in vectorshuffle decomposition.
Reviewed By: jsji
Differential Revision: https://reviews.llvm.org/D120072
Simon Pilgrim [Sun, 20 Feb 2022 15:59:23 +0000 (15:59 +0000)]
[X86] combineX86ShufflesRecursively - add TODO not to generate temporary nodes
Extension to PR45974, unless we actual combine the target shuffles we shouldn't be generating temporary nodes as they may interfere with the one use checks in the shuffle recursions
Florian Hahn [Sun, 20 Feb 2022 15:05:20 +0000 (15:05 +0000)]
[LV] Add store to test to make sure the loop is not dead.
Add an extra store to the test, to make sure the operations in the loop
cannot be optimized away after D118051.
Benjamin Kramer [Sun, 20 Feb 2022 14:42:20 +0000 (15:42 +0100)]
Put back err_drv_negative_columns/err_drv_small_columns for flang
These are unused by Clang, but Flang references them.
Benjamin Kramer [Sun, 20 Feb 2022 13:44:47 +0000 (14:44 +0100)]
[clangd] Remove uuidof warning. Clang never emits this one.
David Green [Sun, 20 Feb 2022 13:20:34 +0000 (13:20 +0000)]
[AArch64] Extra tests for larger umull/smull generation. NFC
Benjamin Kramer [Sun, 20 Feb 2022 13:06:58 +0000 (14:06 +0100)]
Prune unused diagnostics. NFC.
Nuno Lopes [Sun, 20 Feb 2022 11:58:46 +0000 (11:58 +0000)]
[docs] Frotend perf tips: mention poison vs undef and noundef attribute
Valery Pykhtin [Sun, 20 Feb 2022 11:57:06 +0000 (14:57 +0300)]
[ArgPromotion] Regenerate test checks for dead-gep-no-promotion.ll
with --function-signature option (otherwise filecheck gets confused).
Nuno Lopes [Sun, 20 Feb 2022 11:41:49 +0000 (11:41 +0000)]
[docs] Simplify the description of poison values
Nuno Lopes [Sun, 20 Feb 2022 11:33:47 +0000 (11:33 +0000)]
[docs] Add a note saying that the use of poison is preferred to the use of undef
Plus fix a few wrong examples with undef
Benjamin Kramer [Sun, 20 Feb 2022 11:12:39 +0000 (12:12 +0100)]
Unionize clang::DynTypedNodeList. NFC.