Dave Lee [Fri, 11 Mar 2022 19:16:06 +0000 (11:16 -0800)]
[lldb] Move FindTypes scoped timer to SymbolFileDWARFDebugMap
Jonas Devlieghere [Fri, 11 Mar 2022 20:34:41 +0000 (12:34 -0800)]
[lldb] Include lldb/Host/HostInfo.h in ProcessWindows.cpp
Stanislav Mekhanoshin [Thu, 10 Mar 2022 21:46:55 +0000 (13:46 -0800)]
[AMDGPU] Support v_mov_b64 in dpp combine
Differential Revision: https://reviews.llvm.org/D121411
Stanislav Mekhanoshin [Tue, 8 Mar 2022 18:28:23 +0000 (10:28 -0800)]
[AMDGPU] gfx940 MUBUF format changes
Differential Revision: https://reviews.llvm.org/D121234
Jonas Devlieghere [Fri, 11 Mar 2022 19:32:21 +0000 (11:32 -0800)]
[lldb] Fix typo in ProcessWindows.h
Ivan Butygin [Wed, 23 Feb 2022 11:12:07 +0000 (14:12 +0300)]
[mlir][spirv] Make EntryPointABIAttr.local_size optional
* It doesn't required by OpenCL/Intel Level Zero and can be set programmatically.
* Add GPU to spirv lowering in case when attribute is not present.
* Set higher benefit to WorkGroupSizeConversion pattern so it will always try to lower first from the attribute.
Differential Revision: https://reviews.llvm.org/D120399
Fangrui Song [Fri, 11 Mar 2022 19:25:04 +0000 (11:25 -0800)]
[CommandLine] Remove `may only occur zero or one times!` error
Early adoption of new technologies or adjusting certain code generation/IR optimization thresholds
is often available through some cl::opt options (which have unstable surfaces).
Specifying such an option twice will lead to an error.
```
% clang -c a.c -mllvm -disable-binop-extract-shuffle -mllvm -disable-binop-extract-shuffle
clang (LLVM option parsing): for the --disable-binop-extract-shuffle option: may only occur zero or one times!
% clang -c a.c -mllvm -hwasan-instrument-reads=0 -mllvm -hwasan-instrument-reads=0
clang (LLVM option parsing): for the --hwasan-instrument-reads option: may only occur zero or one times!
% clang -c a.c -mllvm --scalar-evolution-max-arith-depth=32 -mllvm --scalar-evolution-max-arith-depth=16
clang (LLVM option parsing): for the --scalar-evolution-max-arith-depth option: may only occur zero or one times!
```
The option is specified twice, because there is sometimes a global setting and
a specific file or project may need to override (or duplicately specify) the
value.
The error is contrary to the common practice of getopt/getopt_long command line
utilities that let the last option win and the `getLastArg` behavior used by
Clang driver options. I have seen such errors for several times. I think the
error just makes users inconvenient, while providing very little value on
discouraging production usage of unstable surfaces (this goal is itself
controversial, because developers might not want to commit to a stable surface
too early, or there is just some subtle codegen toggle which is infeasible to
have a driver option). Therefore, I suggest we drop the diagnostic, at least
before the diagnostic gets sufficiently better support for the overridding needs.
Removing the error is a degraded error checking experience. I think this error
checking behavior, if desirable, should be enabled explicitly by tools. Users
preferring the behavior can figure out a way to do so.
Reviewed By: jhenderson, rnk
Differential Revision: https://reviews.llvm.org/D120455
Jonas Devlieghere [Fri, 11 Mar 2022 18:50:10 +0000 (10:50 -0800)]
[lldb] Add a getter for the process' system architecture
This patch adds a getter for the process' system architecture. I went
with Process::GetSystemArchitecture to match
Platform::GetSystemArchitecture.
Differential revision: https://reviews.llvm.org/D121443
Jez Ng [Fri, 11 Mar 2022 18:31:20 +0000 (13:31 -0500)]
[lld-macho] Don't allocate memory in parallelForEach
... since BumpPtrAllocator isn't thread-safe.
Reviewed By: #lld-macho, Roger
Differential Revision: https://reviews.llvm.org/D121458
Ivan Butygin [Mon, 21 Feb 2022 12:16:34 +0000 (15:16 +0300)]
[mlir][memref] memref.reinterpret_cast folding
* reinterpret_cast(reinterpret_cast(x)) -> reinterpret_cast(x)
* reinterpret_cast(cast(x)) -> reinterpret_cast(x)
* reinterpret_cast(subview(x)) -> reinterpret_cast(x) if subview offsets are 0
Differential Revision: https://reviews.llvm.org/D120242
Benjamin Kramer [Fri, 11 Mar 2022 18:13:58 +0000 (19:13 +0100)]
[LoopUnswitch] Use SmallPtrSet instead of std::set. NFCI.
Florian Hahn [Fri, 11 Mar 2022 17:56:54 +0000 (17:56 +0000)]
[VPlan] Implement VPCanonicalIVPHIRecipe::onlyFirstLaneUsed.
The recipe only uses the first lane of its operands.
Suggested & split off D120827.
Craig Topper [Fri, 11 Mar 2022 01:56:17 +0000 (17:56 -0800)]
[RISCV] Optimize vfmv.s.f intrinsic with scalar 0.0 to vmv.s.x with x0.
We already do this for RISCVISD::VFMV_S_F_VL and the vfmv.v.f
intrinsic.
Reviewed By: kito-cheng
Differential Revision: https://reviews.llvm.org/D121429
Jean Perier [Fri, 11 Mar 2022 18:03:19 +0000 (19:03 +0100)]
[flang][NFC] rename IsKindParameterizedDerivedType and fix comment typos
Following post-review feedback on https://reviews.llvm.org/D120804 and
https://reviews.llvm.org/D120801 about type descriptor changes, fix typos in
comments and rename IsKindParameterizedDerivedType to
IsDerivedTypeWithKindParameter. Remove a useless `;`.
Reviewed By: clementval, PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D121470
Greg Clayton [Thu, 10 Mar 2022 19:29:45 +0000 (11:29 -0800)]
Return an error when dsymutil might produce an invalid mach-o file.
64 bit mach-o files have sections that only have 32 bit file offsets. If dsymutil tries to produce an invalid mach-o file, then error out with a good error string.
Differential Revision: https://reviews.llvm.org/D121398
Valentin Clement [Fri, 11 Mar 2022 17:39:33 +0000 (18:39 +0100)]
[flang] Add tests for allocatable global
This patch adds couple of tests for allocatable
globals and missing lowering for them
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D121473
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Valentin Clement [Fri, 11 Mar 2022 17:38:08 +0000 (18:38 +0100)]
[flang] Lower of elemental calls in array expression
This patch adds tests and missing lowering
code to lower elemental function/subroutine calls
in array expression
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D121474
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Akira Hatanaka [Fri, 11 Mar 2022 17:30:31 +0000 (09:30 -0800)]
[NFC][Clang][OpaquePtr] Remove calls to Address::deprecated in a couple
more files
Differential Revision: https://reviews.llvm.org/D121135
Jonas Devlieghere [Fri, 11 Mar 2022 06:52:20 +0000 (22:52 -0800)]
[lldb] Don't overwrite the host arch with the process arch
Don't overwrite the host architecture (obtained from qHostInfo) with the
process info (obtained from qProcessInfo).
Differential revision: https://reviews.llvm.org/D121442
Kirill Stoimenov [Fri, 11 Mar 2022 15:47:06 +0000 (15:47 +0000)]
[ASan] Export optimized callbacks.
This is a part of optimized callback reverts. This is needed to export the callbacks from the rt-asan libraries.
Reviewed By: kstoimenov
Differential Revision: https://reviews.llvm.org/D121464
Simon Pilgrim [Fri, 11 Mar 2022 16:46:47 +0000 (16:46 +0000)]
[X86] Add PR38960 comineqss test case
This inverts the flags result compared to the original PR38960 comieqss test case
Nikita Popov [Fri, 11 Mar 2022 16:30:34 +0000 (17:30 +0100)]
[Bitcode] Don't confuse type attributes on declaration and call
We should not be using APIs here that try to fetch the attribute
from both the call attributes and the function attributes. Otherwise
we'll try to upgrade a non-existent sret attribute on the call using
the attribute on the function.
Nikita Popov [Fri, 11 Mar 2022 16:14:48 +0000 (17:14 +0100)]
[AsmParser] Check forward reference type with opaque pointers
While we don't need to check the element type in this case, we
do need to make sure that the pointers have the same address space,
otherwise RAUW will assert.
Andrzej Warzynski [Fri, 11 Mar 2022 14:02:30 +0000 (14:02 +0000)]
[flang] Fix DYLIB builds
https://reviews.llvm.org/D120568 broke builds that set
both `LLVM_BUILD_LLVM_DYLIB` and `LLVM_LINK_LLVM_DYLIB`. This patch
fixes that.
The build failure was caused by the fact that some LLVM libraries (which
are also LLVM components) were listed directly as link-time dependencies
instead of using `LINK_COMPONENTS` in CMake files. This lead to a linker
invocation like this (simplified version to demonstrate the problem):
```
ld lib/libLLVM.so lib/libLLVMAnalysis.a lib/libLLVMTarget.a
```
That's problematic and unnecessary because `libLLVM.so` incorporates
`libLLVMAnalysis` and `libLLVMTarget`. A correct invocation would look
like this (`LLVM_LINK_LLVM_DYLIB` _is not_ set):
```
ld lib/libLLVMAnalysis.a lib/libLLVMTarget.a
```
or this (`LLVM_LINK_LLVM_DYLIB` _is_ set):
```
ld lib/libLLVM.so
```
Differential Revision: https://reviews.llvm.org/D121461
Johannes Doerfert [Fri, 11 Mar 2022 16:08:34 +0000 (10:08 -0600)]
[Attributor][FIX] Avoid double free (and useless state copy)
In an attempt to remove the memory leak we introduced a double free.
The problem was that we allowed a plain copy of the state and it was
actually used. The use was useless, so it is gone now. The copy
constructor is gone as well. The move constructor ensures the Accesses
pointers are owned by a single state, I hope.
Reported by: https://lab.llvm.org/buildbot/#/builders/16/builds/25820
Bixia Zheng [Thu, 10 Mar 2022 17:40:54 +0000 (09:40 -0800)]
[mlir][sparse][taco] Add a few unary operations.
Add operations -, abs, ceil and floor to the index notation.
Add test cases.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D121388
David Truby [Fri, 11 Mar 2022 16:01:00 +0000 (16:01 +0000)]
[clang][SVE] Add aarch64-registered-target to sve vector op tests
This fixes failing tests where aarch64 isn't available.
Johannes Doerfert [Fri, 11 Mar 2022 15:50:38 +0000 (09:50 -0600)]
[Attributor][FIX] Remove memory leak
The leak was introduced when we made things deterministic. It was
reported by the sanitizer buildbot:
https://lab.llvm.org/buildbot/#/builders/168
Nikita Popov [Fri, 11 Mar 2022 15:48:39 +0000 (16:48 +0100)]
[Bitcode] Clarify that extractvalue/insertvalue constexprs are not supported
Bitcode currently cannot encode these. Throw a more obvious error
in this case, rather than failing an operand count assertion.
David Truby [Mon, 28 Feb 2022 11:45:49 +0000 (11:45 +0000)]
[clang][SVE] Add support for arithmetic operators on SVE types
This patch implements support for the +, -, *, / and % operators on sizeless SVE
types. Support for these operators on svbool_t is excluded.
Differential Revision: https://reviews.llvm.org/D120323
Nikita Popov [Fri, 11 Mar 2022 15:36:56 +0000 (16:36 +0100)]
[Bitcode] Enumerate constexpr GEP source element type in initializer
The constexpr source element type was enumerated if the GEP was
used as part of an instruction. However, things like global
initializers go through a different code path, and we need to
enumerate the type there as well.
Balazs Benics [Fri, 11 Mar 2022 15:07:43 +0000 (16:07 +0100)]
[analyzer] Fix include typo introduced by e61a1a9
Nikita Popov [Fri, 11 Mar 2022 15:06:02 +0000 (16:06 +0100)]
[Bitcode] Encode alloca address space
Since D101045, allocas are no longer required to be part of the
default alloca address space. There may be allocas in multiple
different address spaces. However, the bitcode reader would
simply assume the default alloca address space, resulting in
either an error or incorrect IR.
Add an optional record for allocas which encodes the address
space.
serge-sans-paille [Fri, 11 Mar 2022 14:52:10 +0000 (15:52 +0100)]
Conditional include of missing headers under Z3
serge-sans-paille [Fri, 11 Mar 2022 14:48:06 +0000 (15:48 +0100)]
Conditional include of Twine.h under Z3
Benjamin Kramer [Fri, 11 Mar 2022 14:18:52 +0000 (15:18 +0100)]
[BFI] Use SmallPtrSets. NFCI.
Louis Dionne [Tue, 24 Aug 2021 14:37:07 +0000 (10:37 -0400)]
[libc++] Remove workaround for missing declarations on Windows store apps
We don't need preprocessor logic to exclude those declarations when compiling for
the Windows App Store, because that is handled by using_if_exists now.
Differential Revision: https://reviews.llvm.org/D108632
Louis Dionne [Wed, 18 Aug 2021 13:08:17 +0000 (09:08 -0400)]
[libc++] Remove workaround for C11 features on compilers that don't support using_if_exists
Instead of carrying around #ifdefs to determine whether those functions
are available on the platform, unconditionally use the using_if_exists
attribute to import it into namespace std only when available. That was
the purpose of this attribute from the start.
This change means that trying to use libc++ with an old SDK (or on an
old platform for platforms that ship system headers in /usr/include)
will require a recent Clang that supports the using_if_exists attribute.
When using an older Clang or GCC, the underlying platform has to support
a C11 standard library.
Differential Revision: https://reviews.llvm.org/D108203
Louis Dionne [Tue, 8 Mar 2022 18:05:55 +0000 (13:05 -0500)]
[libc++] Remove raw call to debug handler from __char_traits_length_checked
As a fly-by fix, also move it closer to where it is needed, and add a
comment explaining the existence of this weird function.
Differential Revision: https://reviews.llvm.org/D121231
Nikita Popov [Fri, 11 Mar 2022 13:51:20 +0000 (14:51 +0100)]
[Verifier] Check type of swifterror alloca
Per LangRef, swifterror alloca must be a pointer.
Not checking this may result in a verifier error after transforms
instead, so make sure it's discarded early.
Florian Hahn [Fri, 11 Mar 2022 13:41:08 +0000 (13:41 +0000)]
[VPlan] Helper to check if a recipe uses scalar values of op.
This patch adds a helper to check if a recipe only uses scalars of a
given operand. This is similar to onlyFirstLaneUsed, which was
introduced earlier.
By default, usesScalars falls back on onlyFirstLaneUsed.
Will be used by D120828.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D120827
Nikita Popov [Fri, 11 Mar 2022 13:30:02 +0000 (14:30 +0100)]
[ConstantFold] Fix scalable shufflevector fold with all-undef mask
If the input is scalable, we should not be returning a fixed-width
vector as a result.
Nikita Popov [Fri, 11 Mar 2022 13:19:00 +0000 (14:19 +0100)]
[FuzzMutate] Support scalable shufflevector
Nikita Popov [Fri, 11 Mar 2022 13:14:16 +0000 (14:14 +0100)]
[IRMutator] Handle module with only declarations
There was a mismatch here, with one check checking whether there
are any functions, and the other collecting only non-declaration
functions.
Nikita Popov [Fri, 11 Mar 2022 13:08:06 +0000 (14:08 +0100)]
[ConstFold] Don't fold calls with mismatching function type
With opaque pointers, this is no longer ensured through pointer
type identity.
Tue Ly [Fri, 11 Mar 2022 05:08:34 +0000 (00:08 -0500)]
[libc] Implement expf function that is correctly rounded for all rounding modes.
Implement expf function that is correctly rounded for all rounding modes.
Reviewed By: sivachandra, zimmermann6
Differential Revision: https://reviews.llvm.org/D121440
Marek Kurdej [Fri, 11 Mar 2022 11:12:27 +0000 (12:12 +0100)]
[clang-format] Refactor condition in AnnotatingParser::modifyContext(). NFC.
Florian Hahn [Fri, 11 Mar 2022 11:49:22 +0000 (11:49 +0000)]
[FunctionAttrs] Rename addReadAttrs -> addMemoryAttrs.
The addReadAttrs name is out of date, as the function also adds
the writeonly attribute. addMemoryAttrs is more accurate.
Andrzej Warzynski [Thu, 10 Mar 2022 16:46:03 +0000 (16:46 +0000)]
[flang] Remove deprecated fields from FIROps.td
This patch removes deprecated parser/printer/verifier fields from
FIROps.td. This is a follow-up of https://reviews.llvm.org/D119776 - it
takes care of operations deriving from `fir_IntegralSwitchTerminatorOp`
and `region_Op`.
No new functionality is added, hence no tests. This patch addresses:
https://github.com/llvm/llvm-project/issues/54314.
Differential Revision: https://reviews.llvm.org/D121406
Some changes were extracted from D121090 (by River Riddle).
co-authored-by: River Riddle <riddleriver@gmail.com>
Matt Devereau [Wed, 9 Mar 2022 15:44:33 +0000 (15:44 +0000)]
[AArch64][SVE][Clang] Fix crash for incorrect svptrue and svcnt parameters
Giving an int parameter to SVE intrinsics svptrue and svcnt caused Clang
to crash on compilation. Changing their parameter types to void instead of
omitting args results in a diagnostic error message instead.
Differential Revision: https://reviews.llvm.org/D121294
Nikita Popov [Fri, 11 Mar 2022 11:10:00 +0000 (12:10 +0100)]
[Bitcode] Check for type mismatch when assigning value
If the value is forward-declared, then the type must match,
otherwise we can't RAUW.
serge-sans-paille [Wed, 9 Mar 2022 21:28:44 +0000 (22:28 +0100)]
Cleanup include: TableGen
This also includes a few cleanup from Support.
Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup
Differential Revision: https://reviews.llvm.org/D121331
Nikita Popov [Fri, 11 Mar 2022 10:35:15 +0000 (11:35 +0100)]
[Bitcode] Delete phi node on error
These error conditions are checked after the phi node has been
created, so we also need to delete it.
Nikita Popov [Fri, 11 Mar 2022 10:07:23 +0000 (11:07 +0100)]
[Bitcode] Improve some error messages
It's not particularly helpful if 95% of our errors just say
"Invalid record". This at least adds the record type to a subset
of errors.
Florian Hahn [Fri, 11 Mar 2022 10:27:17 +0000 (10:27 +0000)]
[AArch64] Improve costs for some conversions to fp16.
Currently the cost model under-estimates the cost of certain
FP16 conversions.
This patch updates getCastInstrCost to return more accurate costs for
the cases improved in
c2ed9fd05479.
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D113700
Pavel Labath [Wed, 9 Mar 2022 12:07:33 +0000 (13:07 +0100)]
[ADT] Make BitmaskEnum operations constant expressions
This avoids runtime initialization (a global constructor) whenever they appear
in the initializer.
The patch just adds the constexpr keyword to a couple of functions.
Differential Revision: https://reviews.llvm.org/D121281
David Sherwood [Wed, 9 Mar 2022 14:39:12 +0000 (14:39 +0000)]
[AArch64][SVE] Change the asserts in LowerToPredicatedOp to check for legal types
When building the LLVM test suite with SVE I discovered a crash
when compiling some Halide tests, which occurs because we try to
use SVE to lower 64-bit vector multiplies and there is no
vscale_range attribute on the function. In this case the min SVE
vector bits was 0, which caused an assert in LowerToPredicatedOp
to fire. I have amended the asserts in this function to check that the
fixed-width type is legal. If the fixed-width type is larger than NEON
and is legal then it must be because we've set the min SVE vector
bits to something > 128. Or if the min SVE bits is 0, then the only
legal types allowed are 128 bit types - for any other types the assert
will fire.
Tests added here:
CodeGen/AArch64/sve-fixed-length-no-vscale-range.ll
Differential Revision: https://reviews.llvm.org/D121297
Nikita Popov [Fri, 11 Mar 2022 09:55:48 +0000 (10:55 +0100)]
[InstSimplify] Handle vector GEP when simplifying zero indices
If the base is a scalar and the index is a vector, we can't
simplify, as this is effectively a splat operation.
Nikita Popov [Fri, 11 Mar 2022 09:38:00 +0000 (10:38 +0100)]
[Bitcode] Delete instruction on error
As these errors are detected after the instruction has already been
created (but before it has been inserted into the function), we
also need to delete it.
Yun Long [Fri, 11 Mar 2022 09:50:10 +0000 (10:50 +0100)]
[MLIR][python binding] Add OpaqueAttribute to python binding.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D120847
Vassil Vassilev [Fri, 11 Mar 2022 08:12:11 +0000 (08:12 +0000)]
[clang-repl] Add an accessor to our underlying execution engine
This patch will allow better incremental adoption of these changes in downstream
cling and other users which want to experiment by customizing the execution
engine.
Nikita Popov [Fri, 11 Mar 2022 09:17:31 +0000 (10:17 +0100)]
[Bitcode] Report error for missing element type for attr upgrade
Otherwise this is going to crash either the TypeFinder or the
Verifier.
Dmitry Vassiliev [Fri, 11 Mar 2022 09:16:58 +0000 (13:16 +0400)]
Fixed a roll-over on size_t in getNewUninitMemBuffer()
Reviewed By: serge-sans-paille
Differential Revision: https://reviews.llvm.org/D121399
Nikita Popov [Fri, 11 Mar 2022 08:34:37 +0000 (09:34 +0100)]
[docs] Update opaque pointers transition state (NFC)
Bitcode is now supported.
Nikita Popov [Fri, 11 Mar 2022 08:27:22 +0000 (09:27 +0100)]
[llvm-c] Document that LLVMGetElementType on pointers is deprecated (NFC)
We can't actually deprecate the function, because it is also used
for arrays and vectors, so we can only document this.
Jean Perier [Fri, 11 Mar 2022 08:22:47 +0000 (09:22 +0100)]
[flang] Do not return true for pointer sub-object in IsPointerObject
evaluate::IsPointerObject used to return true for pointer suboject like
`pointer(10)` while these object are not pointers. This prevented some
checks like 15.5.2.7 to be correctly enforced (e.g., it was possible to
pass `pointer(10)` to a non intent(in) dummy pointer).
After updating IsPointerObject behavior and adding a test for 15.5.2.7 in
call07.f90, a test in call03.f90 for 15.5.2.4(14) was failing.
It appeared the related semantics check was relying on IsPointerObject
to return true for `pointer(10)`. Adapt the code to detect pointer element
in another way.
While looking at the code, I also noticed that semantics was
rejecting `character(1)` pointer/assumed shape suboject when these are
allowed (the standard has a special case for character(1) in
15.5.2.4(14), and I verified that other compilers that enforce 15.5.2.4(14)
do accept this).
Differential Revision: https://reviews.llvm.org/D121377
Nikita Popov [Thu, 10 Mar 2022 09:44:19 +0000 (10:44 +0100)]
[AMDGPUPromoteAlloca] Make compatible with opaque pointers
This mainly changes the handling of bitcasts to not check the types
being casted from/to -- we should only care about the actual
load/store types. The GEP handling is also changed to not care about
types, and just make sure that we get an offset corresponding to
a vector element.
This was a bit of a struggle for me, because this code seems to be
pretty sensitive to small changes. The end result seems to produce
strictly better results for the existing test coverage though,
because we can now deal with more situations involving bitcasts.
Differential Revision: https://reviews.llvm.org/D121371
Yevgeny Rouban [Fri, 11 Mar 2022 07:21:45 +0000 (14:21 +0700)]
[CommandLine] Keep option default value unset if no cl::init() is used
Current declaration of cl::opt is incoherent between class and non-class
specializations of the opt_storage template. There is an inconsistency
in the initialization of the Default field: for inClass instances
the default constructor is used - it sets the Optional Default field to
None; though for non-inClass instances the Default field is set to
the type's default value. For non-inClass instances it is impossible
to know if the option is defined with cl::init() initializer or not:
cl::opt<int> i1("option-i1");
cl::opt<int> i2("option-i2", cl::init(0));
cl::opt<std::string> s1("option-s1");
cl::opt<std::string> s2("option-s2", cl::init(""));
assert(s1.Default.hasValue() != s2.Default.hasValue()); // Ok
assert(i1.Default.hasValue() != i2.Default.hasValue()); // Fails
This patch changes constructor of the non-class specializations to keep
the Default field unset (that is None) rather than initialize it with
DataType().
Reviewed By: lattner
Differential Revision: https://reviews.llvm.org/D114645
Peixin-Qiao [Fri, 11 Mar 2022 07:20:23 +0000 (15:20 +0800)]
[flang] Fix processing ModuleLikeUnit evaluationList
Push the ModuleLikeUnit evalutionList when entering module unit. Pop it
when exiting module unit if there is no module procedure. Otherwise, pop
it when entering the first module procedure.
Reviewed By: V Donaldson
Differential Revision: https://reviews.llvm.org/D120460
Craig Topper [Fri, 11 Mar 2022 06:53:22 +0000 (22:53 -0800)]
[RISCV] Add tablegen helper classes to create PatFrag to check for one use. NFC
Reduces code and the class can be instantiated in isel patterns to
avoid creating more *_oneuse classes.
Peixin-Qiao [Fri, 11 Mar 2022 06:33:17 +0000 (14:33 +0800)]
[flang] Support for dump OpenMP/OpenACC declarative directives PFT in module
OpenMP/OpenACC declarative directives can also be used in module unit.
Add support for dump them in module.
Reviewed By: kiranchandramohan, V Donaldson
Differential Revision: https://reviews.llvm.org/D120459
Craig Topper [Fri, 11 Mar 2022 05:56:57 +0000 (21:56 -0800)]
[RISCV] Fix typo in comment. NFC
Eric Tang [Thu, 3 Mar 2022 09:17:23 +0000 (17:17 +0800)]
[RISCV] Add alias for HFENCE.VVMA
Signed-off-by: Eric Tang <eric.tang@starfivetech.com>
Differential Revision: https://reviews.llvm.org/D120878
Johannes Doerfert [Tue, 8 Mar 2022 22:46:49 +0000 (16:46 -0600)]
[Attributor][NFCI] Make AAPointerInfo deterministic
The order in which we kept accesses was non-deterministic and a debug
output was a pointer value. Fixed both.
Johannes Doerfert [Tue, 8 Mar 2022 22:35:23 +0000 (16:35 -0600)]
[Attributor][NFCI] Remove non-deterministic behavior and debug output
Craig Topper [Fri, 11 Mar 2022 04:03:23 +0000 (20:03 -0800)]
[RISCV] Use ZERO_EXTEND instead of ANY_EXTEND when promoting i32 RISCVISD::SHFL. NFC
We know the shift amount is a constant with bit 31 clear. anyext
of constant will be either zext or sext which will produce the
same result here. But we really shouldn't rely on that. It would
be valid to put a random number in the upper bits. Our isel patterns
expect the upper bits to be 0 so we should ask for it explicitly.
Weining Lu [Fri, 11 Mar 2022 03:51:26 +0000 (11:51 +0800)]
[LoongArch] Use getLoc() directly to construct error message
Fangrui Song [Fri, 11 Mar 2022 03:54:20 +0000 (19:54 -0800)]
[ELF] Add -z pack-relative-relocs
GNU ld 2.38 added -z pack-relative-relocs which is similar to
--pack-dyn-relocs=relr but synthesizes the `GLIBC_ABI_DT_RELR` version
dependency if a shared object named `libc.so.*` has a `GLIBC_2.*` version
dependency.
This is used to implement the (as some glibc folks call) version lockout
mechanism. Add this option, because glibc does not want to support
--pack-dyn-relocs=relr which does not add `GLIBC_ABI_DT_RELR`.
See https://maskray.me/blog/2021-10-31-relative-relocations-and-relr for
detail.
Close https://github.com/llvm/llvm-project/issues/53775
Reviewed By: peter.smith
Differential Revision: https://reviews.llvm.org/D120701
Alex Brachet [Fri, 11 Mar 2022 03:46:46 +0000 (03:46 +0000)]
[llvm-mt] Add support /notify_update
`/notify_update` is an undocumented feature used by CMake. From their usage, it looks like this feature just changes `mt`'s exit code if the output file was changed. See https://gitlab.kitware.com/cmake/cmake/-/blob/master/Source/cmcmd.cxx#L2300 this is also consistent with some testing I have done of the mt.exeshipped with Visual Studio. See also the comment at https://gitlab.kitware.com/cmake/cmake/-/blob/master/Source/cmcmd.cxx#L2440.
There might be a more performant way to implement this by first checking calling `llvm::sys::fs::file_size()` and if it is the same as the new output's size use `llvm::WritableMemoryBuffer` and fallback to `llvm::FileOutputBuffer` otherwise, but these don't inherit from a common ancestor so any implementation doing this would be really ugly.
Fixes https://github.com/llvm/llvm-project/issues/54329
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D121438
Khem Raj [Fri, 11 Mar 2022 03:30:00 +0000 (19:30 -0800)]
[builtins] Use mcr for dmb instruction on armv6
At present compiler-rt cross compiles for armv6 ( -march=armv6 ) but includes
dmb instructions which are only available in armv7+ this causes SIGILL on
clang+compiler-rt compiled components on rpi0w platforms.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D99282
4vtomat [Fri, 11 Mar 2022 01:26:48 +0000 (17:26 -0800)]
Split up large test files(over 10k lines) under clang/test/CodeGen/RISCV including:
The llvm pre-merge test got timeout due to large test files, this commit
split up the files that have over 10k lines under clang/test/CodeGen/RISCV
into even smaller ones.
Differential Revision: https://reviews.llvm.org/D121431
Chia-hung Duan [Thu, 10 Mar 2022 22:10:45 +0000 (22:10 +0000)]
[mlir] Support verification order (3/3)
In this CL, update the function name of verifier according to the
behavior. If a verifier needs to access the region then it'll be updated
to `verifyRegions`.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D120373
Jez Ng [Thu, 10 Mar 2022 23:33:18 +0000 (18:33 -0500)]
[lld-macho][nfc] Fix formatting in ld64-vs-lld.rst
Sanjay Patel [Thu, 10 Mar 2022 22:56:15 +0000 (17:56 -0500)]
[x86] add tests for and+setcc; NFC
Zhiyao Ma [Thu, 10 Mar 2022 23:13:41 +0000 (15:13 -0800)]
[ARM] Fix 8-bit immediate overflow in the instruction of segmented stack prologue.
It fixes the overflow of 8-bit immediate field in the emitted
instruction that allocates large stacklet.
For thumb2 targets, load large immediate by a pair of movw and movt
instruction. For thumb1 and ARM targets, load large immediate by reading
from literal pool.
Differential Revision: https://reviews.llvm.org/D118545
Philippe Valembois [Thu, 10 Mar 2022 23:05:29 +0000 (15:05 -0800)]
[AArch64] Use correct calling convention for each vararg
While checking is tail call optimization is possible, the calling
convention applied to fixed arguments is not the correct one.
This implies for DarwinPCS that all arguments of a vararg function will
go to the stack although fixed ones can go in registers.
This prevents non-virtual thunks to be tail optimized although they are
marked as musttail.
Differential Revision: https://reviews.llvm.org/D120622
Zequan Wu [Wed, 9 Mar 2022 02:59:46 +0000 (18:59 -0800)]
[clang-format] Fix namespace format when the name is followed by a macro
Example:
```
$ cat a.cpp
namespace my_namespace::yeah API_AVAILABLE(macos(10.15)) {
void test() {}
}
$ clang-format a.cpp
namespace my_namespace::yeah API_AVAILABLE(macos(10.15)) {
void test() {}
}// namespace my_namespace::yeahAPI_AVAILABLE(macos(10.15))
```
After:
```
$ clang-format a.cpp
namespace my_namespace::yeah API_AVAILABLE(macos(10.15)) {
void test() {}
}// namespace my_namespace::yeah
```
Reviewed By: MyDeveloperDay, owenpan, curdeius
Differential Revision: https://reviews.llvm.org/D121269
Sam McCall [Thu, 10 Mar 2022 22:57:05 +0000 (23:57 +0100)]
[clang-tools-extra] Don't consider python below LLVM_MINIMUM_PYTHON_VERSION. NFC
Dave Lee [Thu, 10 Mar 2022 22:51:11 +0000 (14:51 -0800)]
[lldb] Remove unused include in ScriptedProcessInterface.h
Eli Friedman [Thu, 3 Mar 2022 20:29:59 +0000 (12:29 -0800)]
[Sema][Windows] Don't special-case void* in __unaligned conversions.
As far as I can tell, MSVC allows the relevant conversions for all
pointer types. Found compiling a Windows SDK header.
I've verified that the updated errors in MicrosoftExtensions.cpp match
the ones that MSVC actually emits, except for the one with a FIXME. (Not
sure why this wasn't done for the patch that added the tests.)
To make up for the missing error, add a warning that triggers on
conversions that drop the __unaligned qualfier.
Differential Revision: https://reviews.llvm.org/D120936
Diego Caballero [Thu, 10 Mar 2022 20:44:24 +0000 (20:44 +0000)]
[mlir][Vector] Modernize default lowering of vector transpose
This patch removes an old recursive implementation to lower vector.transpose to extract/insert operations
and replaces it with a iterative approach that leverages newer linearization/delinearization utilities.
The patch should be NFC except by the order in which the extract/insert ops are generated.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D121321
Florian Hahn [Thu, 10 Mar 2022 22:32:29 +0000 (22:32 +0000)]
[FunctionAttrs] Add tests for argmemonly inference.
owenca [Thu, 10 Mar 2022 22:20:24 +0000 (14:20 -0800)]
[clang-format][NFC] Group all C++ passes under isCpp()
Also removes a not very helpful comment.
Sam McCall [Thu, 10 Mar 2022 22:28:43 +0000 (23:28 +0100)]
[clang-tools-extra] Remove unused lit features/substitutions. NFCI
Sam McCall [Thu, 10 Mar 2022 22:20:03 +0000 (23:20 +0100)]
Fix reference to execute_external leftover in
69924ccf7a328f
Sam McCall [Thu, 10 Mar 2022 22:09:46 +0000 (23:09 +0100)]
Remove redundant lit config already handled in llvm_config. NFCI
This logic duplicates lit.llvm.initialize, which we're already calling
(in lit.site.cfg.py.in).
The equivalent logic was removed from clang in
d4401d354a938dd366bf but
never cleaned up here.
Dave Lee [Thu, 10 Mar 2022 20:11:57 +0000 (12:11 -0800)]
[lldb] Call ThreadPlan::DiscardPlan from Thread::DiscardPlan
Correct `Thread::DiscardPlan` to call `DiscardPlan` instead of `PopPlan`.
Differential Revision: https://reviews.llvm.org/D96655
Sylvestre Ledru [Thu, 10 Mar 2022 21:40:18 +0000 (22:40 +0100)]
llvm-ifs doc: Replace a utf-8 char by a more classic one
Fails on old python (like on ubuntu bionic) otherwise with:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 2130: ordinal not in range(128)
Kirill Stoimenov [Thu, 10 Mar 2022 21:29:55 +0000 (21:29 +0000)]
[ASan] Added back @PLT to __asan_report_* calls to avoid compile errors.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D121409
Saleem Abdulrasool [Thu, 10 Mar 2022 20:55:46 +0000 (20:55 +0000)]
lldb/ObjectFile,Disassembler: read some state from the executable
Add support to inspect the ELF headers for RISCV targets to determine if
RVC or RVE are enabled and the floating point support to enable. As per
the RISCV specification, d implies f, q implies d implies f, which gives
us the cascading effect that is used to enable the features when setting
up the disassembler. With this change, it is now possible to attach the
debugger to a remote process and be able to disassemble the instruction
stream.
~~~
$ bin/lldb tmp/reduced
(lldb) target create "reduced"
Current executable set to '/tmp/reduced' (riscv64).
(lldb) gdb-remote localhost:1234
(lldb) Process 5737 stopped
* thread #1, name = 'reduced', stop reason = signal SIGTRAP
frame #0: 0x0000003ff7fe1b20
-> 0x3ff7fe1b20: mv a0, sp
0x3ff7fe1b22: jal 1936
0x3ff7fe1b26: mv s0, a0
0x3ff7fe1b28: auipc a0, 27
~~~