Philip Reames [Mon, 4 Apr 2022 03:09:03 +0000 (20:09 -0700)]
[LV] Handle non-integral types when considering interleave widening legality
In general, anywhere we might need to insert a blind bitcast, we need to make sure the types are losslessly convertible.
This fixes pr54634.
Philip Reames [Tue, 29 Mar 2022 03:29:41 +0000 (20:29 -0700)]
[memcpyopt] Restructure store(load src, dest) form of callslotopt for compile time
The search for the clobbering call is fairly expensive if uses are not optimized at construction. Defer the clobber walk to the point in the implementation we need it; there are a bunch of bailouts before that point. (e.g. If the source pointer is not an alloca, we can't do callslotopt.)
On a test case which involves a bunch of copies from argument pointers, this switches memcpyopt from > 1/2 second to < 10ms.
Yuanfang Chen [Mon, 4 Apr 2022 03:04:55 +0000 (20:04 -0700)]
Revert "[lit] Use sharding for GoogleTest format"
This reverts commit
a87ba5c86d5d72defdbcdb278baad6515ec99463.
Breaks bots:
https://lab.llvm.org/buildbot/#/builders/196/builds/10454
Yuanfang Chen [Sat, 2 Apr 2022 19:28:23 +0000 (12:28 -0700)]
[lit] Use sharding for GoogleTest format
This helps lit unit test performance by a lot, especially on windows. The performance gain comes from launching one gtest executable for many subtests instead of one (this is the current situation).
The shards are executed by the test runner and the results are stored in the
json format supported by the GoogleTest. Later in the test reporting stage,
all test results in the json file are retrieved to continue the test results
summary etc.
On my Win10 desktop, before this patch: `check-clang-unit`: 177s, `check-llvm-unit`: 38s; after this patch: `check-clang-unit`: 37s, `check-llvm-unit`: 11s.
On my Linux machine, before this patch: `check-clang-unit`: 46s, `check-llvm-unit`: 8s; after this patch: `check-clang-unit`: 7s, `check-llvm-unit`: 4s.
Reviewed By: yln, rnk
Differential Revision: https://reviews.llvm.org/D122251
Xiang1 Zhang [Mon, 4 Apr 2022 00:27:28 +0000 (08:27 +0800)]
Correct spelling error in TLS-Load-Hoist
Dávid Bolvanský [Sun, 3 Apr 2022 23:14:34 +0000 (01:14 +0200)]
Revert "[NFCI] Regenerate SROA/LoopVectorize test checks"
This reverts commit
14e3450fb57305aa9ff3e9e60687b458e43835c9.
Dávid Bolvanský [Sun, 3 Apr 2022 22:55:54 +0000 (00:55 +0200)]
[NFCI] Regenerate SROA test checks
Dávid Bolvanský [Sun, 3 Apr 2022 22:28:57 +0000 (00:28 +0200)]
[NFCI] Regenerate PhaseOrdering test checks
Dávid Bolvanský [Sun, 3 Apr 2022 22:21:00 +0000 (00:21 +0200)]
[NFCI] Regenerate LoopIdiomRecognize test checks
Nico Weber [Sun, 3 Apr 2022 21:21:06 +0000 (17:21 -0400)]
Revert "[GH54588]Fix ItaniumMangler for NTTP unnamed unions w/ unnamed structs"
This reverts commit
4cf98f973a13c5049322abff43f0dff3c214311b.
The test fails on mac bots, see comments on https://reviews.llvm.org/D122820
Also reverts follow-ups
eb920989865d992093993143ba3c6e71126cbb89 and
861c189d2a5203ba8c8e983e8d2e109c0de153a5.
David Green [Sun, 3 Apr 2022 21:16:39 +0000 (22:16 +0100)]
[AArch64] Remove unsued WideningBaseCost. NFC
The WideningBaseCost is always 0. This removes it to clean up the code.
Louis Dionne [Sun, 3 Apr 2022 16:40:39 +0000 (12:40 -0400)]
[libc++] Remove unused <iosfwd> include from <__debug>
Differential Revision: https://reviews.llvm.org/D122999
Dávid Bolvanský [Sun, 3 Apr 2022 19:55:58 +0000 (21:55 +0200)]
[NFCI] Regenerate LoopVectorize test checks
Kazu Hirata [Sun, 3 Apr 2022 19:54:54 +0000 (12:54 -0700)]
[IR] Remove unused forward declarations (NFC)
Dávid Bolvanský [Sun, 3 Apr 2022 18:54:13 +0000 (20:54 +0200)]
[NFCI] Regenerate instsimplify test checks
Louis Dionne [Sun, 3 Apr 2022 16:47:21 +0000 (12:47 -0400)]
[libc++][NFC] Fix weird indentation in test
Vladislav Khmelevsky [Sun, 20 Mar 2022 14:15:56 +0000 (17:15 +0300)]
[BOLT] AArch64: Read all static relocations
Read static relocs on the same address, as dynamic in order to update
constant island data address properly.
Differential Revision: https://reviews.llvm.org/D122100
Kiran Chandramohan [Sun, 3 Apr 2022 15:23:54 +0000 (15:23 +0000)]
Revert "[Flang][OpenMP] Add semantic check for OpenMP Private, Firstprivate and Lastprivate clauses."
This reverts commit
a2ca6bbda6160c1b474fffd6204bcac9456c7eb1.
D93213 performs some checks to ensure that variables that appear in
statement functions are not in privatisation clauses. The point at
which this check is currently performed, there can be misparses that
cause more constructs to be identified as statement functions. This
can lead to various kinds of errors, hence reverting.
This revert hopefully fixes:
https://github.com/llvm/llvm-project/issues/54477
https://github.com/llvm/llvm-project/issues/54161
https://github.com/llvm/llvm-project/issues/54163
Reviewed By: shraiysh
Differential Revision: https://reviews.llvm.org/D122650
Luboš Luňák [Sun, 3 Apr 2022 15:32:11 +0000 (17:32 +0200)]
[lldb][gui] underline the current token
Just like the non-gui listing already does.
Luboš Luňák [Sun, 3 Apr 2022 15:01:54 +0000 (17:01 +0200)]
[lldb][gui] use symbolic names rather than hardcoded values
Luboš Luňák [Sun, 3 Apr 2022 14:29:44 +0000 (16:29 +0200)]
[lldb][gui] fix background of syntax-highlighted non-selected PC line
It is the PC line, selected or not, that gets the blue-background
highlight. Without this, a keyword like 'bool' got black background
if the line wasn't selected.
And the blue-background highlight is handled by OutputColoredStringTruncated(),
so no point in setting it explicitly in the calling code.
Luboš Luňák [Sun, 3 Apr 2022 14:08:02 +0000 (16:08 +0200)]
[lldb][gui] draw highlight for selected line even if empty
Kazu Hirata [Sun, 3 Apr 2022 15:14:11 +0000 (08:14 -0700)]
Revert "Apply clang-tidy fixes for readability-redundant-declaration in Debug.cpp (NFC)"
This reverts commit
0fe01a9346658c0955b68b123f2b470b018114b1.
The commit caused build failures like:
llvm/lib/Support/Debug.cpp:65:3: error: ‘setCurrentDebugTypes’ was
not declared in this scope; did you mean ‘setCurrentDebugType’?
LLVM GN Syncbot [Sun, 3 Apr 2022 15:09:33 +0000 (15:09 +0000)]
[gn build] Port
e476df5629ee
Nikolas Klauser [Sun, 3 Apr 2022 07:17:01 +0000 (09:17 +0200)]
[libc++][ranges] Implement ranges::max
Reviewed By: Mordante, var-const, #libc
Spies: sstefan1, libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D122002
Kazu Hirata [Sun, 3 Apr 2022 15:04:12 +0000 (08:04 -0700)]
Apply clang-tidy fixes for readability-redundant-declaration in Debug.cpp (NFC)
Kazu Hirata [Sun, 3 Apr 2022 15:04:11 +0000 (08:04 -0700)]
Apply clang-tidy fixes for readability-redundant-member-init in YAMLParser.cpp (NFC)
Danny Mösch [Sun, 3 Apr 2022 13:48:39 +0000 (15:48 +0200)]
[clang-tidy] Add release notes for changes made in
2b21fc5520b39fba555f4e5f2480a5651056be84
Valentin Clement [Sun, 3 Apr 2022 13:25:36 +0000 (15:25 +0200)]
[flang][NFC] Add tests for fir.array_modify in array-value-copy pass
This patch adds some test for the `fir.array_modify` operation
in the array-value-copy pass
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D122809
Co-authored-by: V Donaldson <vdonaldson@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Valentin Clement [Sun, 3 Apr 2022 13:24:20 +0000 (15:24 +0200)]
[flang][NFC] Add more test cases for the array-value-copy pass
This patch adds some test cases for the array-value-copy pass with slices.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D122807
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Valentin Clement [Sun, 3 Apr 2022 13:21:42 +0000 (15:21 +0200)]
[flang][NFC] Add tests for fir.is_present
This patch adds tests for the `fir.is_present`
translation.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D122813
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Valentin Clement [Sun, 3 Apr 2022 13:19:38 +0000 (15:19 +0200)]
[flang] Add global and global box initialization tests
This patch addes some global initialization and global
box initialization tests.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: schweitz
Differential Revision: https://reviews.llvm.org/D122881
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Valentin Clement [Sun, 3 Apr 2022 13:17:21 +0000 (15:17 +0200)]
[flang][NFC] Add tests for select constructs
Add tests for fir.select_rank and
fir.select_case.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: schweitz
Differential Revision: https://reviews.llvm.org/D122888
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Hirochika Matsumoto [Sun, 3 Apr 2022 13:05:18 +0000 (22:05 +0900)]
Reapply "[InstSimplify][NFC] Add baseline tests for folds of icmp with ctpop"
This change was previously reverted because I forgot rerunning
update_test_checks.py and tests were not actually baseline.
Extracted from: https://reviews.llvm.org/D122757
Louis Dionne [Sun, 3 Apr 2022 12:55:57 +0000 (08:55 -0400)]
[libunwind] Add missing licenses in test files
Dávid Bolvanský [Sun, 3 Apr 2022 12:42:35 +0000 (14:42 +0200)]
[NFCI] Fixed missing colon in CHECK directives - part 2
Iain Sandoe [Sun, 3 Apr 2022 08:50:20 +0000 (09:50 +0100)]
[C++20][Modules] Fix a testcase warning on Windows [NFC].
As reported, using "-DTDIR=%t" with a path name of 'C:\Users\...' causes
a warning to be emitted about the use of \U without following hex digits.
Since the value is only required for the FileCheck cases resolve this by
omitting the -D from the compile lines.
Dávid Bolvanský [Sun, 3 Apr 2022 09:51:33 +0000 (11:51 +0200)]
[NFCI] Fixed missing colon in CHECK directives
Simon Pilgrim [Sun, 3 Apr 2022 09:05:10 +0000 (10:05 +0100)]
[X86] lowerShuffleAsRepeatedMaskAndLanePermute - allow v16i32 sub-lane permutes for v64i8 shuffles
Without VBMI, we are better off permuting v16i32 sub-lanes, even though its a variable shuffle, if it allows us to then shuffle v64i8 inlane repeated masks (PSHUFB etc.)
Fixes #54658
Alexander Shaposhnikov [Sun, 3 Apr 2022 03:57:05 +0000 (03:57 +0000)]
[InstCombine] Fold srem(X, PowerOf2) == C into (X & Mask) == C for positive C
This diff extends InstCombinerImpl::foldICmpSRemConstant to handle the cases
srem(X, PowerOf2) == C and
srem(X, PowerOf2) != C
for positive C.
This addresses the issue https://github.com/llvm/llvm-project/issues/54650
Differential revision: https://reviews.llvm.org/D122942
Test plan: make check-all
Alexander Shaposhnikov [Sun, 3 Apr 2022 03:26:47 +0000 (03:26 +0000)]
[InstCombine][NFC] Add baseline tests for folds of srem(X, PowerOf2) == C
Extracted from: https://reviews.llvm.org/D122942
Test plan: make check-all
Sanjay Patel [Sat, 2 Apr 2022 23:23:42 +0000 (19:23 -0400)]
[InstCombine] limit icmp fold with sub if other sub user is a phi
This is a hacky fix for:
https://github.com/llvm/llvm-project/issues/54558
As discussed there, codegen regressed when we opened up this transform
to allow extra uses (
61580d0949fd3465 ), and it's not clear how to
undo the transforms at the later stage of compilation.
As noted in the code comments, there's a set of remaining folds that
are still limited to one-use, so we can try harder to refine and
expand the limitations on these folds, but it's likely to be an
up-and-down battle as we find and overcome similar regressions.
Differential Revision: https://reviews.llvm.org/D122909
Sanjay Patel [Sat, 2 Apr 2022 22:52:18 +0000 (18:52 -0400)]
[InstCombine] fold fcmp with lossy casted constant (2nd try)
This is a retry of
9397bdc67eb2 - that was reverted until
we had a clang warning in place to alert users about a
possible mistake in source. The warning was added with
ab982eace6e4.
This is noted as a missing clang warning in #54222,
but it is also a missing optimization opportunity.
Alive2 proofs:
https://alive2.llvm.org/ce/z/Q8drDq
https://alive2.llvm.org/ce/z/pE6LRt
I don't see a single conversion for all predicates
using "getFCmpCode" logic, so other predicates are
left as a TODO item.
Groverkss [Sat, 2 Apr 2022 22:36:11 +0000 (04:06 +0530)]
[MLIR][Presburger] Use PresburgerSpace in SetCoalescer
This patch changes the implementation of SetCoalescer to use PresburgerSpace
instead of reimplementing parts of PresburgerSpace.
Reviewed By: arjunp
Differential Revision: https://reviews.llvm.org/D122984
Roman Lebedev [Sat, 2 Apr 2022 20:54:33 +0000 (23:54 +0300)]
[InstCombine] Fold `(X | C2) ^ C1 --> (X & ~C2) ^ (C1^C2)`
These two are equivalent,
and i *think* the `and` form is more-ish canonical.
General proof: https://alive2.llvm.org/ce/z/RrF5s6
If constant on the (outer) `xor` is an `undef`,
the whole lane is dead: https://alive2.llvm.org/ce/z/mu4Sh2
However, if the constant on the (inner) `or` is an `undef`,
we must sanitize it first: https://alive2.llvm.org/ce/z/MHYJL7
I guess, producing a zero `and`-mask is optimal in that case.
alive-tv is happy about the entirety of `xor-of-or.ll`.
Roman Lebedev [Sat, 2 Apr 2022 21:03:15 +0000 (00:03 +0300)]
[NFC][InstCombine] Autogenerate check lines in a test affected by the future change
Roman Lebedev [Sat, 2 Apr 2022 20:04:44 +0000 (23:04 +0300)]
[NFC][InstCombine] Add some tests for `(X | C2) ^ C1` pattern
Martin Storsjö [Fri, 1 Apr 2022 08:50:25 +0000 (11:50 +0300)]
[Support] [BLAKE3] Fix compilation with CMAKE_OSX_ARCHITECTURES
With CMake, one can build for multiple macOS architectures
at the same time by setting CMAKE_OSX_ARCHITECTURES to multiple
architectures (avoiding needing to do two separate builds and
gluing the binaries together after the build).
In this case, while targeting x86_64 and arm64, neither IS_X64
nor IS_ARM64 is set, while compilation of the individual source
files will hit those cases (in either architecture mode).
Therefore, if we on the CMake level decide not to include the
architecture specific SIMD implementation files, also tell the
source this explicitly by passing the defines indicating that we
don't expect to use them.
Such a build clearly is less ideal than explicitly targeting one
architecture at a time if it won't include all the SIMD optimizations,
but that's a tradeoff that is up to the one deciding to do such an
universal build.
This also fixes builds for i386. The blake3 source code automatically
enables the SIMD implementations when building for i386, but we don't
provide the sources for that build configuration.
Differential Revision: https://reviews.llvm.org/D122884
Martin Storsjö [Fri, 1 Apr 2022 11:29:54 +0000 (14:29 +0300)]
[Support] [BLAKE3] Remove .hidden directives from windows-gnu assembly sources
COFF symbols don't have anything corresponding to a `.hidden` flag;
both GNU binutils as and LLVM's built-in assembler errors out on
these directives.
This reverts one part of
7f05aa2d4c36d6d53f97ac3e0db30ec600abbc62, fixing builds for
mingw x86_64.
Differential Revision: https://reviews.llvm.org/D122893
Florian Hahn [Sat, 2 Apr 2022 18:33:58 +0000 (19:33 +0100)]
[VPlan] Set VPlan header block name to vector.body.
This brings the VPlan block naming in line with the naming of the
generated basic blocks.
Groverkss [Sat, 2 Apr 2022 18:09:57 +0000 (23:39 +0530)]
[MLIR][Presburger][NFC] Rename getCompatibleSpace to getSpaceWithoutLocals
Reviewed By: arjunp
Differential Revision: https://reviews.llvm.org/D122973
Walter Erquinigo [Fri, 1 Apr 2022 04:13:03 +0000 (21:13 -0700)]
[trace][intel pt] Handle better tsc in the decoder
A problem that I introduced in the decoder is that I was considering TSC decoding
errors as actual instruction errors, which mean that the trace has a gap. This is
wrong because a TSC decoding error doesn't mean that there's a gap in the trace.
Instead, now I'm just counting how many of these errors happened and I'm using
the `dump info` command to check for this number.
Besides that, I refactored the decoder a little bit to make it simpler, more
readable, and to handle TSCs in a cleaner way.
Differential Revision: https://reviews.llvm.org/D122867
Hirochika Matsumoto [Sat, 2 Apr 2022 17:27:59 +0000 (02:27 +0900)]
Revert "[InstSimplify][NFC] Add baseline tests for folds of icmp with ctpop"
This reverts commit
b48abeea44ac3c7860b13b863210116e8db1d978.
Accidentally added already optimized tests, not baseline tests.
Hirochika Matsumoto [Sat, 2 Apr 2022 17:14:51 +0000 (02:14 +0900)]
[InstSimplify][NFC] Add baseline tests for folds of icmp with ctpop
Extracted from: https://reviews.llvm.org/D122757
Florian Hahn [Sat, 2 Apr 2022 15:55:04 +0000 (16:55 +0100)]
[ConstraintElimination] Move logic to build worklist to helper (NFC).
This refactor makes it easier to extend the logic to collect information
from blocks in the future, without even further increasing the size of
eliminateConstriants.
tyb0807 [Mon, 7 Mar 2022 10:17:00 +0000 (10:17 +0000)]
[Driver][AArch64] Split up aarch64-cpus.c tests further
This is the continuation of https://reviews.llvm.org/D120875. Now
aarch64-cpus-[12].c are further splitted and renamed to better reflect
the tests.
Differential Revision: https://reviews.llvm.org/D121093
tyb0807 [Thu, 3 Mar 2022 02:12:00 +0000 (02:12 +0000)]
[AArch64] Avoid scanning feature list for target parsing
As discussed in https://reviews.llvm.org/D120111, this patch proposes an
alternative implementation to avoid scanning feature list for
architecture version over and over again. The insertion position for
default extensions is also captured during this single scan of the
feature list.
Differential Revision: https://reviews.llvm.org/D120864
tyb0807 [Tue, 1 Feb 2022 13:37:43 +0000 (13:37 +0000)]
[AArch64] Default HBC/MOPS features in clang
This implements minimum support in clang for default HBC/MOPS features
on v8.8-a/v9.3-a or later architectures.
Differential Revision: https://reviews.llvm.org/D120111
Ron Lieberman [Sat, 2 Apr 2022 13:25:50 +0000 (13:25 +0000)]
Revert "[AMDPU][Sanitizer] Refactor sanitizer options handling for AMDGPU Toolchain"
This reverts commit
cc2139524f77248c7e147d4cc3befb31fe3e6daa.
failed a few buildbots
Groverkss [Sat, 2 Apr 2022 12:44:38 +0000 (18:14 +0530)]
[MLIR][Presburger] Make constructors from PresburgerSpace explicit
This patch makes constructors of IntegerRelation, IntegerPolyhedron,
PresburgerRelation, PresburgerSet from PresburgerSpace explicit. This
prevents bugs like:
```
void fun(IntegerRelation a, IntegerRelation b) {
IntegerPolyhedron c = a.intersect(b);
}
```
Here, `a.intersect(b)` will return `IntegerRelation`, which will be implicitly
converted to `PresburgerSpace` and will use the `PresburgerSpace` constructor
for IntegerPolyhedron. Leading to loss of any constraints in the intersection
of `a` and `b`. After this patch, this will give a compile error.
Reviewed By: arjunp
Differential Revision: https://reviews.llvm.org/D122972
Ron Lieberman [Sat, 2 Apr 2022 11:01:04 +0000 (11:01 +0000)]
[AMDPU][Sanitizer] Refactor sanitizer options handling for AMDGPU Toolchain
authored by amit.pandey@amd.com ampandey-AMD
Differential Revision: https://reviews.llvm.org/D122781
Arjun P [Fri, 1 Apr 2022 17:46:52 +0000 (18:46 +0100)]
[MLIR][Presburger] LexSimplex: support is{Redundant,Separate}Inequality
Add integer-exact checks for inequalities being separate and redundant in LexSimplex.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122921
Arjun P [Thu, 31 Mar 2022 12:19:37 +0000 (13:19 +0100)]
[MLIR][Presburger] Make the SimplexBase constructor protected
This is not supposed to be instantiated directly anyway.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122923
wanglei [Sat, 2 Apr 2022 10:07:22 +0000 (18:07 +0800)]
[LoongArch] Fix instruction definition
This patch fixes issue with the LU32I_D instruction, which did not have
an input register operand.
Differential Revision: https://reviews.llvm.org/D122970
Serge Pavlov [Sat, 2 Apr 2022 06:30:20 +0000 (13:30 +0700)]
Remove duplicate code from wouldInstructionBeTriviallyDead
There is a similar check few lines above in this function.
Tobias Hieta [Thu, 24 Mar 2022 15:07:39 +0000 (16:07 +0100)]
[lld][COFF] Fix TypeServerSource lookup on GUID collisions
Microsoft shipped a bunch of PDB files with broken/invalid GUIDs
which lead lld to use 0xFF as the key for these files in an internal
cache. When multiple files have this key it will lead to collisions
and confused symbol lookup.
Several approaches to fix this was considered. Including making the key
the path to the PDB file, but this requires some filesystem operations
in order to normalize the file path.
Since this only happens with malformatted PDB files and we haven't
seen this before they malformatted files where shipped with visual
studio we probably shouldn't optimize for this use-case.
Instead we now just don't insert files with Guid == 0xFF into the
cache map and warn if we get collisions so similar problems can be
found in the future instead of being silent.
Discussion about the root issue and the approach to this fix can be found on Github: https://github.com/llvm/llvm-project/issues/54487
Reviewed By: aganea
Differential Revision: https://reviews.llvm.org/D122372
River Riddle [Fri, 1 Apr 2022 05:34:00 +0000 (22:34 -0700)]
[mlir] Allow for using OpPassManager in pass options
This significantly simplifies the boilerplate necessary for passes
to define nested pass pipelines.
Differential Revision: https://reviews.llvm.org/D122880
River Riddle [Fri, 1 Apr 2022 07:55:35 +0000 (00:55 -0700)]
[mlir:PassOption] Rework ListOption parsing and add support for std::vector/SmallVector options
ListOption currently uses llvm::cl::list under the hood, but the usages
of ListOption are generally a tad different from llvm::cl::list. This
commit codifies this by making ListOption implicitly comma separated,
and removes the explicit flag set for all of the current list options.
The new parsing for comma separation of ListOption also adds in support
for skipping over delimited sub-ranges (i.e. {}, [], (), "", ''). This
more easily supports nested options that use those as part of the
format, and this constraint (balanced delimiters) is already codified
in the syntax of pass pipelines.
See https://discourse.llvm.org/t/list-of-lists-pass-option/5950 for
related discussion
Differential Revision: https://reviews.llvm.org/D122879
Nikolas Klauser [Thu, 31 Mar 2022 05:06:49 +0000 (07:06 +0200)]
[libc++] Canonicalize the ranges results and their tests
Reviewed By: var-const, Mordante, #libc, ldionne
Spies: ldionne, libcxx-commits
Differential Revision: https://reviews.llvm.org/D121435
Brad Smith [Sat, 2 Apr 2022 06:18:30 +0000 (02:18 -0400)]
[clang][Sparc] Enable IAS on the remaining OS's
Luo, Yuanke [Thu, 17 Mar 2022 14:48:33 +0000 (22:48 +0800)]
[X86][AMX] enable amx cast intrinsics in FE.
We have some discission in D99152 and llvm-dev and finially come up with
a solution to add amx specific cast intrinsics. We've support the
intrinsics in llvm IR. This patch is to replace bitcast with amx cast
intrinsics in code emitting in FE.
Differential Revision: https://reviews.llvm.org/D122567
Siva Chandra Reddy [Fri, 1 Apr 2022 07:33:34 +0000 (07:33 +0000)]
[libc][NFC] Do not call mmap and munmap from thread functions.
Instead, memory is allocated and deallocated using mmap and munmap
syscalls directly.
Reviewed By: lntue, michaelrj
Differential Revision: https://reviews.llvm.org/D122876
Arthur Eubanks [Fri, 1 Apr 2022 23:40:46 +0000 (16:40 -0700)]
[cmake] Remove LLVM_USE_NEWPM option
This option tells the host clang to use the new pass manager.
Given that it's been the default for a while, this seems unnecessary.
This was added in D57068.
(this does not affect any LLVM/Clang functionality)
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D122947
jacquesguan [Fri, 1 Apr 2022 09:21:12 +0000 (17:21 +0800)]
[mlir][Vector] Add constant folder for extractelement.
This revision adds constant folder for vector.extractelement.
Differential Revision: https://reviews.llvm.org/D122886
Jake Egan [Sat, 2 Apr 2022 02:38:43 +0000 (22:38 -0400)]
[AIX] XFAIL tests because of no big archive writer operation support
Big archive writer operation is not currently supported so mark these tests XFAIL for now.
Reviewed By: jsji
Differential Revision: https://reviews.llvm.org/D122949
jacquesguan [Wed, 30 Mar 2022 11:14:00 +0000 (19:14 +0800)]
[mlir][Vector] Add constant folder for insertelement.
This revision adds constant folder for vector.insertelement.
Differential Revision: https://reviews.llvm.org/D122721
Craig Topper [Sat, 2 Apr 2022 01:28:08 +0000 (18:28 -0700)]
[RISCV] Add lowering for vp.fptoui and vp.uitofp.
This is a straightforward extension of D122512 to unsigned integers.
Jonas Devlieghere [Sat, 2 Apr 2022 00:41:36 +0000 (17:41 -0700)]
[lldb] Remove remaining calls to DataBufferLLVM::GetChars
Update the Linux and NetBSD Host libraries for
2165c36be445 which
removed DataBufferLLVM::GetChars. These files are compiled conditionally
based on the host platform.
Jonas Devlieghere [Thu, 31 Mar 2022 22:16:29 +0000 (15:16 -0700)]
[lldb] Return a DataBuffer from FileSystem::CreateDataBuffer (NFC)
The concrete class (DataBufferLLVM) is an implementation detail.
Owen Pan [Wed, 30 Mar 2022 18:50:52 +0000 (11:50 -0700)]
[clang-format] Fix a crash in qualifier alignment
Related to #54513.
Maksim Panchenko [Fri, 1 Apr 2022 23:43:21 +0000 (16:43 -0700)]
[BOLT][test] Fix AArch64 cross-platform tests
Use target-specific flags for building AArch64 non-runnable tests.
Reviewed By: yota9
Differential Revision: https://reviews.llvm.org/D122520
Michael Gottesman [Fri, 1 Apr 2022 22:57:52 +0000 (15:57 -0700)]
[debug-info] As an NFC commit, refactor EmitFuncArgumentDbgValue so that it can be extended to support llvm.dbg.addr.
The reason why I am making this change is that before this commit,
EmitFuncArgumentDbgValue relied on a boolean flag IsDbgDeclare both to signal
that a DBG_VALUE should be made to be indirect /and/ that the original intrinsic
was a dbg.declare. This is no longer always true if we add support for handling
dbg.addr since we will have an indirect DBG_VALUE that is a different intrinsic
from dbg.declare.
With that in mind, in this NFC patch, we prepare for future fixes by introducing
a 3 case-enum argument to EmitFuncArgumentDbgValue that allows the caller to
explicitly specify how the argument's DBG_VALUE should be emitted. This then
allows us to turn the indirect checks into a != FuncArgumentDbgValueKind::Value
and prepare us for a future where we add support here for llvm.dbg.addr
directly.
rdar://
83957028
Reviewed By: aprantl
Differential Revision: https://reviews.llvm.org/D122945
Mitch Phillips [Fri, 1 Apr 2022 23:26:55 +0000 (16:26 -0700)]
[NFCI] clang-format SanitizerArgs.cpp
Jacques Pienaar [Fri, 1 Apr 2022 23:33:35 +0000 (16:33 -0700)]
[mlir] Switch debugString helper to << operator
Supports more cases.
Nico Weber [Fri, 1 Apr 2022 14:13:12 +0000 (10:13 -0400)]
[lld/mac] Tweak a few comments
Addresses review feedback I had missed on https://reviews.llvm.org/D122624
No behavior change.
Differential Revision: https://reviews.llvm.org/D122904
Adrian Prantl [Fri, 1 Apr 2022 22:55:07 +0000 (15:55 -0700)]
clang-format HostInfoBase.cpp
Arthur Eubanks [Fri, 1 Apr 2022 22:32:22 +0000 (15:32 -0700)]
[test] Mark uuid.s as unsupported on Windows
For systems using gnuwin32, awk does not exist.
Michael Jones [Wed, 30 Mar 2022 22:54:30 +0000 (15:54 -0700)]
[libc][NFC] add outline of printf
This patch adds the headers for printf. It contains minimal actual code,
and is more intended to be used for design review. The code is not built
yet, and may have minor errors.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D122773
LLVM GN Syncbot [Fri, 1 Apr 2022 21:24:52 +0000 (21:24 +0000)]
[gn build] Port
f547fc89c073
Richard [Fri, 1 Apr 2022 19:53:00 +0000 (13:53 -0600)]
[clang-tidy] Add modernize-macro-to-enum check
[buildbot issues fixed]
This check performs basic analysis of macros and replaces them
with an anonymous unscoped enum. Using an unscoped anonymous enum
ensures that everywhere the macro token was used previously, the
enumerator name may be safely used.
Potential macros for replacement must meet the following constraints:
- Macros must expand only to integral literal tokens. The unary
operators plus, minus and tilde are recognized to allow for positive,
negative and bitwise negated integers.
- Macros must be defined on sequential source file lines, or with
only comment lines in between macro definitions.
- Macros must all be defined in the same source file.
- Macros must not be defined within a conditional compilation block.
- Macros must not be defined adjacent to other preprocessor directives.
- Macros must not be used in preprocessor conditions
Each cluster of macros meeting the above constraints is presumed to
be a set of values suitable for replacement by an anonymous enum.
From there, a developer can give the anonymous enum a name and
continue refactoring to a scoped enum if desired. Comments on the
same line as a macro definition or between subsequent macro definitions
are preserved in the output. No formatting is assumed in the provided
replacements.
The check cppcoreguidelines-macro-to-enum is an alias for this check.
Fixes #27408
Differential Revision: https://reviews.llvm.org/D117522
Adrian Prantl [Fri, 1 Apr 2022 21:15:58 +0000 (14:15 -0700)]
Simplify ArchSpec::IsFullySpecifiedTriple() (NFC)
I found this function somewhat hard to read and removed a few entirely
redundant checks and converted it to early exits.
Differential Revision: https://reviews.llvm.org/D122912
Jean Perier [Fri, 1 Apr 2022 20:31:23 +0000 (22:31 +0200)]
[flang] add evaluate::IsAllocatableDesignator helper
Previously, some semantic checks that are checking if an entity is an
allocatable were relying on the expression being a designator whose
last symbol has the allocatable attribute.
This is wrong since this was considering substrings and array sections of
allocatables as being allocatable. This is wrong (see NOTE 2 in
Fortran 2018 section 9.5.3.1).
Add evaluate::IsAllocatableDesignator to correctly test this.
Also add some semantic tests for ALLOCATED to test the newly added helper.
Note that ifort and nag are rejecting coindexed-named-object in
ALLOCATED (`allocated(coarray_scalar_alloc[2])`).
I think it is wrong given allocated argument is intent(in) as per
16.2.1 point 3.
So 15.5.2.6 point 4 regarding allocatable dummy is not violated (If the actual
argument is a coindexed object, the dummy argument shall have the INTENT (IN)
attribute.) and I think this is valid. gfortran accepts it.
The need for this helper was exposed in https://reviews.llvm.org/D122779.
Differential Revision: https://reviews.llvm.org/D122899
Co-authored-by: Peixin-Qiao <qiaopeixin@huawei.com>
Craig Topper [Fri, 1 Apr 2022 20:14:10 +0000 (13:14 -0700)]
[RISCV][AMDGPU][TargetLowering] Special case overflow expansion for (uaddo X, 1).
If we expand (uaddo X, 1) we previously expanded the overflow calculation
as (X + 1) <u X. This potentially increases the live range of X and
can prevent X+1 from reusing the register that previously held X.
Since we're adding 1, overflow only occurs if X was UINT_MAX in which
case (X+1) would be 0. So this patch adds a special case to expand
the overflow calculation to (X+1) == 0.
This seems to help with uaddo intrinsics that get introduced by
CodeGenPrepare after LSR. Alternatively, we could block the uaddo
transform in CodeGenPrepare for this case.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D122933
Erich Keane [Mon, 28 Mar 2022 15:57:50 +0000 (08:57 -0700)]
Fix behavior of ifuncs with 'used' extern "C" static functions
We expect that `extern "C"` static functions to be usable in things like
inline assembly, as well as ifuncs:
See the bug report here: https://github.com/llvm/llvm-project/issues/54549
However, we were diagnosing this as 'not defined', because the
ifunc's attempt to look up its resolver would generate a declared IR
function.
Additionally, as background, the way we allow these static extern "C"
functions to work in inline assembly is by making an alias with the C
mangling in MOST situations to the version we emit with
internal-linkage/mangling.
The problem here was multi-fold: First- We generated the alias after the
ifunc was checked, so the function by that name didn't exist yet.
Second, the ifunc's generation caused a symbol to exist under the name
of the alias already (the declared function above), which suppressed the
alias generation.
This patch fixes all of this by moving the checking of ifuncs/CFE aliases
until AFTER we have generated the extern-C alias. Then, it does a
'fixup' around the GlobalIFunc to make sure we correct the reference.
Differential Revision: https://reviews.llvm.org/D122608
Craig Topper [Fri, 1 Apr 2022 19:23:42 +0000 (12:23 -0700)]
[RISCV] Add tests for uaddo with a constant 1. NFC
The overflow calculation can be optimized to check if the add
result is 0.
Erich Keane [Fri, 1 Apr 2022 19:22:44 +0000 (12:22 -0700)]
FIX the wildcards to pass an FP diff in mangle-nttp-anon-union.cpp
Erich Keane [Fri, 1 Apr 2022 19:02:45 +0000 (12:02 -0700)]
Add some wildcards to pass FP difference on one of the buildbots
Lei Zhang [Fri, 1 Apr 2022 18:43:09 +0000 (14:43 -0400)]
[mlir][vector] Fold transpose(broadcast(<scalar>))
For such cases, the transpose op can be elided.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D122903
Erich Keane [Thu, 31 Mar 2022 14:27:11 +0000 (07:27 -0700)]
[GH54588]Fix ItaniumMangler for NTTP unnamed unions w/ unnamed structs
As reported in https://github.com/llvm/llvm-project/issues/54588
and discussed in https://github.com/itanium-cxx-abi/cxx-abi/issues/139
We are supposed to do a DFS, pre-order, decl-order search for a name for
the union in this case. Prevoiusly we crashed because the IdentiferInfo
pointer was nullptr, so this makes sure we have a name in the cases
described by the ABI.
I added an llvm-unreachable to cover an unexpected case at the end of
the new function with information/reference to the ABI in case we come
up with some way to get back to here.
Differential Revision: https://reviews.llvm.org/D122820
zhijian [Fri, 1 Apr 2022 18:10:22 +0000 (14:10 -0400)]
Addressed post-commit comment https://reviews.llvm.org/D122746#inline-1175831