Paul Walker [Fri, 3 Dec 2021 14:36:54 +0000 (14:36 +0000)]
[SVE][InstCombine] Support more cases where ld1/st1 can be lowered to load/store instructions.
This patch extends the "is all active predicate" check to cover
cases where the predicate is casted but in a way that doesn't
change its "all active" status.
Differential Revision: https://reviews.llvm.org/D115047
Jan Svoboda [Wed, 8 Dec 2021 10:43:43 +0000 (11:43 +0100)]
[llvm] Remove out-of-date fixme from SmallVectorMemoryBuffer
This fixme first appeared in the codebase with the introduction of `ObjectMemoryBuffer` in rG93de2a12a36feaf1e6d8ff28c76db9b6cda4e844, but the constructor appears to never have been templated.
Reviewed By: dexonsmith
Differential Revision: https://reviews.llvm.org/D115044
Jan Svoboda [Wed, 8 Dec 2021 10:00:15 +0000 (11:00 +0100)]
[clang][deps] Reset some benign codegen options
Some command-line codegen arguments are likely to differ between identical modules discovered from different translation units. This patch removes them to make builds deterministic and/or reduce the number of built modules.
Reviewed By: Bigcheese
Differential Revision: https://reviews.llvm.org/D112923
Hans Wennborg [Tue, 7 Dec 2021 16:09:44 +0000 (17:09 +0100)]
Add note about inlining dllimport functions to the attribute docs
Differential revision: https://reviews.llvm.org/D115252
David Green [Wed, 8 Dec 2021 10:13:25 +0000 (10:13 +0000)]
[SDAG] Refine MMO size when converting masked load/store to normal load/store
After D113888 /
32b6c17b29079e7d the MMO size of a masked loads/store is
unknown. When we are converting back to a standard load/store because
the mask is known all ones, we can refine that to the correct size from
the size of the vector being loaded/stored.
Differential Revision: https://reviews.llvm.org/D114582
Ties Stuij [Wed, 8 Dec 2021 09:44:45 +0000 (09:44 +0000)]
[ARM][libunwind] add PACBTI-M support for libunwind
This patch implements the following:
- Emit PACBTI-M build attributes in libunwind asm files
- Authenticate LR in DWARF32 using PACBTI
Use Armv8.1-M.Main PACBTI extension to authenticate the return address
(stored in the LR register) before moving it to the PC (IP) register.
The AUTG instruction is used with the candidate return address, the CFA,
and the authentication code that is retrieved from the saved
pseudo-register RA_AUTH_CODE.
- Authenticate LR in EHABI using PACBTI
Authenticate the contents of the LR register using Armv8.1-M.Main PACBTI
extension.
A new frame unwinding instruction is introduced (0xb4). This
instruction pops out of the stack the return address authentication
code, which is then used in conjunction with the SP and the next-to-be
instruction pointer to perform authentication.
This authentication code is popped into a new register,
UNW_ARM_PSEUDO_PAC, which is a pseudo-register.
This patch is part of a series that adds support for the PACBTI-M extension of
the Armv8.1-M architecture, as detailed here:
https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/armv8-1-m-pointer-authentication-and-branch-target-identification-extension
The PACBTI-M specification can be found in the Armv8-M Architecture Reference
Manual:
https://developer.arm.com/documentation/ddi0553/latest
The following people contributed to this patch:
- Momchil Velikov
- Victor Campos
- Ties Stuij
Reviewed By: #libunwind, danielkiss, mstorsjo
Differential Revision: https://reviews.llvm.org/D112430
Chuanqi Xu [Wed, 8 Dec 2021 09:11:40 +0000 (17:11 +0800)]
[NFC] Only attach a declaration to global module fragment if it appears in a module
Jon Chesterfield [Wed, 8 Dec 2021 08:23:12 +0000 (08:23 +0000)]
Revert "[OpenMP][AMDGPU] Switch host-device memory copy to asynchronous version"
This reverts commit
6de698bf10996b532632bb9dfa9fd420c5af62af.
It didn't build in the dynamic_hsa configuration
Stephen Neuendorffer [Fri, 19 Nov 2021 05:54:47 +0000 (21:54 -0800)]
Allow DataLayout to support arbitrary pointer sizes
Currently, it is impossible to specify a DataLayout with pointer
size and index size that is not a whole number of bytes.
This patch modifies
the DataLayout class to accept arbitrary pointer sizes and to
store the size as a number of bits, rather than as a number of bytes.
Generally speaking, the external interface of the class as used
by in-tree architectures remains the same and shouldn't affect the
behavior of architecures with pointer sizes equal to a whole number
of bytes.
Note the interface of setPointerAlignment has changed and takes
a pointer and index size that is a number of bits, rather than a number
of bytes.
Patch originally by Ajit Kumar Agarwal
Differential Revision: https://reviews.llvm.org/D114141
Petr Hosek [Wed, 8 Dec 2021 07:06:12 +0000 (23:06 -0800)]
[CMake] Specify byproducts for custom libcxx builds
These were removed in
bda3f2dd763b06427dd2713aa062e356c9d7bdc6 but
are needed as it turned out for the MSan tests.
Chuanqi Xu [Wed, 8 Dec 2021 06:58:44 +0000 (14:58 +0800)]
[C++20] [Modules] [Concepts] Recognize same concepts more precisely in Serialization
The compiler would judge two concepts is same by their addresses.
However, when we use modules, the addresses wouldn't be the same all the
time since one is parsed in their TU and another is imported in another
TU.
This patch fixes this by using isSameEntity to judge the two concepts.
Reviewed By: rsmith
Differential Revision: https://reviews.llvm.org/D114769
Vitaly Buka [Wed, 8 Dec 2021 06:39:12 +0000 (22:39 -0800)]
[lsan] Replace atomic_store/atomic_load with atomic_fetch_add
Vitaly Buka [Wed, 8 Dec 2021 06:35:39 +0000 (22:35 -0800)]
[NFC][asan] Remove -std=c++20 from test
Fails after D110215
with errors like
/usr/include/x86_64-linux-gnu/sys/types.h:33:9: error: unknown type name '__u_char'
typedef __u_char u_char;
Chuanqi Xu [Wed, 8 Dec 2021 06:25:42 +0000 (14:25 +0800)]
[NFC] Fix C++20 module test in PPC and warning
lh123 [Wed, 8 Dec 2021 05:52:15 +0000 (13:52 +0800)]
[clangd] Make a.k.a printing configurable.
Currently, a.k.a printing is closed by default.
Reviewed By: sammccall, kadircet
Differential Revision: https://reviews.llvm.org/D114665
Mehdi Amini [Tue, 7 Dec 2021 18:27:58 +0000 (18:27 +0000)]
Adjust "end namespace" comment in MLIR to match new agree'd coding style
See D115115 and this mailing list discussion:
https://lists.llvm.org/pipermail/llvm-dev/2021-December/154199.html
Differential Revision: https://reviews.llvm.org/D115309
Mehdi Amini [Wed, 8 Dec 2021 05:14:01 +0000 (05:14 +0000)]
Build MLIR with -Werror=mismatched-tags (NFC)
This is a defensive action to catch at build time on Linux failures that
may happen only on Windows otherwise.
Differential Revision: https://reviews.llvm.org/D115316
Chuanqi Xu [Wed, 8 Dec 2021 05:49:02 +0000 (13:49 +0800)]
[C++20] [Modules] Namespace Declaration shouldn't have module linkage
According to [basic.namespace.general]/p2, a namespace declaration
shouldn't have a module linkage.
> A namespace is never attached to a named module and never has a name
> with module linkage.
Without this patch, the compiler would crash for the test in assertion
enabled build due to inconsistent linkage for redeclaration for
namespaces.
Reviewed by: rsmith
Differential Revision: https://reviews.llvm.org/D115132
Vitaly Buka [Wed, 8 Dec 2021 05:34:57 +0000 (21:34 -0800)]
[NFC][lsan] Move method implementation up
Vitaly Buka [Wed, 8 Dec 2021 05:34:06 +0000 (21:34 -0800)]
[NFC][lsan] Clang-format lsan_common.cpp
Chuanqi Xu [Wed, 8 Dec 2021 03:34:18 +0000 (11:34 +0800)]
[C++20] [Module] Support extern C/C++ semantics
According to [module.unit]p7.2.3, a declaration within a linkage-specification
should be attached to the global module.
This let user to forward declare types across modules.
Reviewed by: rsmith, aaron.ballman
Differential Revision: https://reviews.llvm.org/D110215
lh123 [Wed, 8 Dec 2021 04:31:00 +0000 (12:31 +0800)]
[clangd] Add desugared type to hover
Add desugared type to hover when the desugared type and the pretty-printed type are different.
```c++
template<typename T>
struct TestHover {
using Type = T;
};
int main() {
TestHover<int>::Type a;
}
```
```
variable a
Type: TestHover<int>::Type (aka int)
```
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D114522
Mehdi Amini [Wed, 8 Dec 2021 04:30:43 +0000 (04:30 +0000)]
Fix flang tests after MLIR changes on the handling of declarative assembly
Vitaly Buka [Wed, 8 Dec 2021 03:49:44 +0000 (19:49 -0800)]
[NFC][lsan] Use kIgnored in MarkInvalidPCCb
kIgnored didn't exist when the code was added, but it should be
equivalent to kReachable.
The goal is to refactor MarkInvalidPCCb to avoid StackDepotGet
in StopTheWorld.
Haohai Wen [Tue, 7 Dec 2021 02:15:38 +0000 (10:15 +0800)]
[CostModel][X86] Add i64 mul cost for avx512 as 1cy
i64 mul cost is 1cy for all cpu that support avx512. Currently
all X86 cpu uses i64 mul cost in X64 cost table which is not
true for cpu that support avx512 (skx, icx).
Reviewed By: pengfei, RKSimon
Differential Revision: https://reviews.llvm.org/D115016
Lang Hames [Tue, 7 Dec 2021 21:10:41 +0000 (08:10 +1100)]
[ORC] Add a MaterializationUnit::Interface struct.
MaterializationUnit::Interface holds the values that make up the interface
(for ORC's purposes) of a materialization unit: the symbol flags map and
initializer symbol.
Having a type for this will make functions that build materializer interfaces
more readable and maintainable.
Chen Zheng [Sat, 9 Oct 2021 08:52:27 +0000 (08:52 +0000)]
[Powerpc] testcases for D111485; nfc
Alex Lorenz [Wed, 8 Dec 2021 01:51:44 +0000 (17:51 -0800)]
[macho] add support for emitting macho files with two build version load commands
This patch extends LLVM IR to add metadata that can be used to emit macho files with two build version load commands.
It utilizes "darwin.target_variant.triple" and "darwin.target_variant.SDK Version" metadata names for that,
which will be set by a future patch in clang.
MachO uses two build version load commands to represent an object file / binary that is targeting both the macOS target,
and the Mac Catalyst target. At runtime, a dynamic library that supports both targets can be loaded from either a native
macOS or a Mac Catalyst app on a macOS system. We want to add support to this to upstream to LLVM to be able to build
compiler-rt for both targets, to finish the complete support for the Mac Catalyst platform, which is right now targetable
by upstream clang, but the compiler-rt bits aren't supported because of the lack of this multiple build version support.
Differential Revision: https://reviews.llvm.org/D112189
Vitaly Buka [Wed, 8 Dec 2021 01:59:39 +0000 (17:59 -0800)]
[sanitizer] Restore __thumb__ workaround
It was removed in D114934 and failed clang-thumbv7-full-2stage.
Mehdi Amini [Wed, 8 Dec 2021 01:24:51 +0000 (01:24 +0000)]
Change the printing/parsing behavior for Attributes used in declarative assembly format
The new form of printing attribute in the declarative assembly is eliding the `#dialect.mnemonic` prefix to only keep the `<....>` part.
Differential Revision: https://reviews.llvm.org/D113873
Chen Zheng [Tue, 16 Nov 2021 07:46:08 +0000 (07:46 +0000)]
[PowerPC] use lvx + splat directly for aligned splat load
Reviewed By: nemanjai
Differential Revision: https://reviews.llvm.org/D114062
Nico Weber [Wed, 8 Dec 2021 01:50:39 +0000 (20:50 -0500)]
Reland "[gn build] (manually) port
1ee32055ea1d (benchmark move)"
This reverts commit
bbccf4992219222c5b905e9965ec26b35e2c6af8.
1ee32055ea1d relanded in
5dda2efde57.
Phoebe Wang [Wed, 8 Dec 2021 00:26:38 +0000 (08:26 +0800)]
[X86][clang] Emit diagnostic for float and double when we have features -x87 and -sse on 64-bits
A follow up of D114162.
Reviewed By: asavonic
Differential Revision: https://reviews.llvm.org/D114782
Mircea Trofin [Wed, 8 Dec 2021 00:46:55 +0000 (16:46 -0800)]
Re-Reland "[benchmarks] Move libcxx's fork of google/benchmark and llvm/utils'"
This reverts commit
b2fbd45d2395f1f6ef39db72b7156724fc101e40. D114922
fixed the reason of the 2nd revert.
This patch also re-applies
39e9f5d3685f3cfca0df072928ad96d973704dff.
Differential Revision: https://reviews.llvm.org/D112012
Kirill Stoimenov [Wed, 8 Dec 2021 00:36:09 +0000 (00:36 +0000)]
[ASan] Missed some SHADOW_XYZ uses on non-Linux platforms.
Reviewed By: kstoimenov
Differential Revision: https://reviews.llvm.org/D115307
Kirill Stoimenov [Tue, 7 Dec 2021 23:18:04 +0000 (23:18 +0000)]
[ASan] Renamed SHADOW_XYZ to ASAN_SHADOW_XYZ.
Follow up from D115271.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D115293
Jez Ng [Wed, 8 Dec 2021 00:11:06 +0000 (19:11 -0500)]
[lld-macho] Include archive name in bitcode files
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D115281
Michael Jones [Wed, 8 Dec 2021 00:07:24 +0000 (16:07 -0800)]
[libc][obvious] fix missed rename
In https://reviews.llvm.org/D114302 I renamed ForLoopCopy to
for_loop_copy, but these got missed.
Differential Revision: https://reviews.llvm.org/D115303
Petr Hosek [Wed, 1 Dec 2021 09:07:14 +0000 (01:07 -0800)]
[compiler-rt] Use the runtimes build for custom libc++
Some of the compiler-rt runtimes use custom instrumented libc++ build.
Use the runtimes build for building this custom libc++.
Differential Revision: https://reviews.llvm.org/D114922
Michael Jones [Tue, 7 Dec 2021 22:48:28 +0000 (14:48 -0800)]
[libc] fix the .yaml files not being tracked
adds the .yaml files clang-tidy generates as byproducts, which means
that they will be updated properly and cleaned by `ninja -t clean`
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D115290
Aart Bik [Tue, 7 Dec 2021 22:33:39 +0000 (14:33 -0800)]
[mlir][sparse] add a few more sparse output tests (for generated IR)
also fixes two typos in IR doc
Reviewed By: bixia
Differential Revision: https://reviews.llvm.org/D115288
James Farrell [Mon, 6 Dec 2021 17:41:26 +0000 (17:41 +0000)]
Revert "Revert "Use VersionTuple for parsing versions in Triple, fixing issues that caused the original change to be reverted. This makes it possible to distinguish between "16" and "16.0" after parsing, which previously was not possible.""
This reverts commit
63a6348cad6caccf285c1661bc60d8ba5a40c972.
Differential Revision: https://reviews.llvm.org/D115254
Michael Berg [Tue, 7 Dec 2021 23:13:42 +0000 (15:13 -0800)]
Revert "[RISCV] Add target specific loop unrolling and peeling preferences"
This reverts commit
8487981a7249f7c080d5395ebee0e8b969c6f47c.
Yaxun (Sam) Liu [Tue, 30 Nov 2021 19:45:16 +0000 (14:45 -0500)]
[CUDA][HIP] Add pre-defined macro `__CLANG_RDC__`
nvcc defines __CUDACC_RDC__ for both host and
device compilation when -rdc=true is specified
(https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#nvcc-identification-macro)
This patch defines __CLANG_RDC__ when -fgpu-rdc
is specified for CUDA/HIP.
Reviewed by: Artem Belevich
Differential Revision: https://reviews.llvm.org/D114812
Jim Ingham [Tue, 7 Dec 2021 19:56:36 +0000 (11:56 -0800)]
Fix error reporting for "process load" and add a test for it.
Differential Revision: https://reviews.llvm.org/D115017
Michael Berg [Tue, 7 Dec 2021 23:06:24 +0000 (15:06 -0800)]
[RISCV] Add target specific loop unrolling and peeling preferences
Both these preference helper functions have initial support with
this change. The loop unrolling preferences are set with initial
settings to control thresholds, size and attributes of loops to
unroll with some tuning done. The peeling preferences may need
some tuning as well as the initial support looks much like what
other architectures utilize.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D113798
Carlo Bertolli [Tue, 7 Dec 2021 23:04:50 +0000 (23:04 +0000)]
[OpenMP][AMDGPU] Switch host-device memory copy to asynchronous version
Prepare amdgpu plugin for asynchronous implementation. This patch switches to using HSA API for asynchronous memory copy.
Moving away from hsa_memory_copy means that plugin is responsible for locking/unlocking host memory pointers.
Reviewed By: JonChesterfield
Differential Revision: https://reviews.llvm.org/D115279
AlexisPerry [Tue, 2 Nov 2021 21:46:21 +0000 (15:46 -0600)]
Convert fir.allocmem and fir.freemem operations to calls to malloc and free, respectively
This patch is part of the upstreaming effort from the fir-dev branch.
Address review comments
- move CHECK blocks to after the mlir code in the test file
- fix style with respect to anonymous namespaces: only include class definitions in the namespace and make functions static and outside the namespace
- fix a few nits
- remove TODO in favor of notifyMatchFailure
- removed unnecessary CHECK line from convert-to-llvm.fir
- rebase on main - add TODO back in
- get successfull test of TODO in AllocMemOp converion of derived type with LEN params
- clearer comments and reduced use of auto
- move defintion of computeDerivedTypeSize to fix build error
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
Reviewed By: awarzynski, clementval, kiranchandramohan, schweitz
Differential Revision: https://reviews.llvm.org/D114104
Kirill Stoimenov [Tue, 7 Dec 2021 22:28:22 +0000 (22:28 +0000)]
[ASan] Removed ASAN_SHADOW_SCALE.
This is additional cleanup as follow-up of D104279.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D115271
Martin Storsjö [Sat, 23 Oct 2021 22:11:20 +0000 (01:11 +0300)]
Reapply [runtimes] Fix building initial libunwind+libcxxabi+libcxx with compiler implied -lunwind
This does mostly the same as D112126, but for the runtimes cmake files.
Most of that is straightforward, but the interdependency between
libcxx and libunwind is tricky:
Libunwind is built at the same time as libcxx, but libunwind is not
installed yet. LIBCXXABI_USE_LLVM_UNWINDER makes libcxx link directly
against the just-built libunwind, but the compiler implicit -lunwind
isn't found. This patch avoids that by adding --unwindlib=none if
supported, if we are going to link explicitly against a newly built
unwinder anyway.
Reapplying this after
db32c4f45625dddc2c5cb683adf3d9cab7a9732f, which should fix the issues
that were reported last time this was applied.
Differential Revision: https://reviews.llvm.org/D113253
Kiran Chandramohan [Tue, 7 Dec 2021 13:01:28 +0000 (13:01 +0000)]
[Flang] Upstream conversion of the XRebox Op
The XRebox Op is formed by the codegen rewrite which makes it easier to
convert the operation to LLVM. The XRebox op includes the information
from the rebox op and the associated slice, shift, and shape ops.
During the conversion process a new descriptor is created for reboxing.
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Val Donaldson <vdonaldson@nvidia.com>
Reviewed By: clementval
Differential Revision: https://reviews.llvm.org/D114709
Kirill Stoimenov [Tue, 7 Dec 2021 22:17:58 +0000 (22:17 +0000)]
Revert "[ASan] Removed ASAN_SHADOW_SCALE."
This reverts commit
e4800fc099ad204f88c432276e6488772042bffc.
Reviewed By: kstoimenov
Differential Revision: https://reviews.llvm.org/D115286
Kirill Stoimenov [Tue, 7 Dec 2021 19:08:52 +0000 (19:08 +0000)]
[ASan] Removed ASAN_SHADOW_SCALE.
This is additional cleanup as follow-up of D104279.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D115271
Nikolas Klauser [Tue, 7 Dec 2021 19:29:35 +0000 (20:29 +0100)]
[libc++] Remove _LIBCPP_DEFAULT
clang has `= default` as an extension in c++03, so just use it.
Reviewed By: ldionne, Quuxplusone, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D115275
LLVM GN Syncbot [Tue, 7 Dec 2021 21:08:05 +0000 (21:08 +0000)]
[gn build] Port
02940d6d2202
Jonas Devlieghere [Tue, 7 Dec 2021 18:50:08 +0000 (10:50 -0800)]
Revert "CycleInfo: Introduce cycles as a generalization of loops"
This reverts commit
0fe61ecc2cef333250a152cd90d80d0b802b27db because it
breaks the modules build.
https://green.lab.llvm.org/green/job/clang-stage2-rthinlto/4858/
https://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/39112/
Carlo Bertolli [Tue, 7 Dec 2021 21:00:11 +0000 (21:00 +0000)]
[NFC][OpenMP] Prepare amdgpu plugin for asynchronous implementation of target region launch
At present, amdgpu plugin merges both asynchronous and synchronous kernel launch implementations into a single synchronous version.
This patch prepares the plugin for asynchronous implementation by:
- Privatizing actual kernel launch code (valid in both cases) into an anonymous namespace base function
Actual separation of kernel launch code (async vs sync) is a following patch.
Reviewed By: JonChesterfield
Differential Revision: https://reviews.llvm.org/D115267
Sanjay Patel [Tue, 7 Dec 2021 20:48:45 +0000 (15:48 -0500)]
[InstCombine] try to fold rem with constant dividend and select-of-constants divisor
We avoid this fold in the more general cases where we use `FoldOpIntoSelect`.
That's because -- unlike most binary opcodes -- 'rem' can't usually be
speculated with a variable divisor since it can have immediate UB. But in
the case where both arms of the select are constants, we can safely evaluate
both sides and eliminate 'rem' completely.
This should fix:
https://llvm.org/PR52102
The same optimization for 'div' is planned as a follow-up patch.
Differential Revision: https://reviews.llvm.org/D115173
Sanjay Patel [Tue, 7 Dec 2021 20:28:42 +0000 (15:28 -0500)]
[InstCombine] add tests for div/rem with 0 select arm; NFC
More coverage for D115173 and its div sibling. These are
existing transforms handled by simplifyDivRemOfSelectWithZeroOp().
Sanjay Patel [Tue, 7 Dec 2021 16:28:23 +0000 (11:28 -0500)]
[InstCombine] add tests for div with select-of-constants divisor; NFC
Similar patterns as tests for:
D115173
(and we might want to make a single patch for all of these).
Martin Storsjö [Wed, 17 Nov 2021 13:06:15 +0000 (15:06 +0200)]
[OpenMP] Disable libomptarget profiling by default if built via the "runtimes" setup
In the "runtimes" setup, the runtime (e.g. OpenMP) can be built for
a target entirely different from the current host build (where LLVM
and Clang are built). If profiling is enabled, libomptarget links
against LLVMSupport (which only has been built for the host).
Thus, don't enable profiling by default in this setup.
This should allow relanding D113253.
Differential Revision: https://reviews.llvm.org/D114083
Valentin Clement [Tue, 7 Dec 2021 20:19:34 +0000 (21:19 +0100)]
[flang][runtime] Add ragged array runtime functions
This patch adds the runtime function to allocate and
deallocate ragged arrays.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: klausler
Differential Revision: https://reviews.llvm.org/D114534
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Greg Clayton [Tue, 7 Dec 2021 20:19:00 +0000 (12:19 -0800)]
Fix buildbots after https://reviews.llvm.org/D115073.
Greg Clayton [Tue, 7 Dec 2021 20:03:45 +0000 (12:03 -0800)]
Fix buildbot after https://reviews.llvm.org/D115073.
Bill Wendling [Tue, 7 Dec 2021 07:14:19 +0000 (23:14 -0800)]
[Analysis] Ignore casts and unary ops for uninitialized values
A series of unary operators and casts may obscure the variable we're
trying to analyze. Ignore them for the uninitialized value analysis.
Other checks determine if the unary operators result in a valid l-value.
Link: https://github.com/ClangBuiltLinux/linux/issues/1521
Reviewed By: nickdesaulniers
Differential Revision: https://reviews.llvm.org/D114848
Kirill Stoimenov [Tue, 7 Dec 2021 02:47:11 +0000 (02:47 +0000)]
[ASan] Replaced constants for SHADOW_OFFSET with defines.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D115214
Bardia Mahjour [Mon, 6 Dec 2021 16:33:42 +0000 (11:33 -0500)]
[VP] Cost model for VPMemory operations on PowerPC.
PPC Implementation of getVPMemoryOpCost and hasActiveVectorLength.
Reviewed By: Roland Froese
Differential Revision: https://reviews.llvm.org/D109417
Vitaly Buka [Tue, 7 Dec 2021 01:58:52 +0000 (17:58 -0800)]
[sanitizer] Lock/Unlock stack store on fork
Reviewed By: dvyukov
Differential Revision: https://reviews.llvm.org/D115210
Aart Bik [Tue, 7 Dec 2021 19:05:45 +0000 (11:05 -0800)]
[mlir][sparse] fix broken build
rebase and commit crossed the getFunc change
Reviewed By: Chia-hungDuan
Differential Revision: https://reviews.llvm.org/D115270
Arthur O'Dwyer [Mon, 6 Dec 2021 22:16:34 +0000 (17:16 -0500)]
[libc++] [test] Rationalize the nodiscard tests for range adaptors.
Reviewed as part of D115177.
Arthur O'Dwyer [Mon, 6 Dec 2021 20:39:08 +0000 (15:39 -0500)]
[libc++] [ranges] SFINAE-friendly "write it three times" in views::counted.
Before this patch, the new test's `CountedInvocable<int*, int*>`
would hard-error instead of SFINAEing and cleanly returning false.
Notice that views::counted specifically does NOT work with pipes;
`counted(42)` is ill-formed. This is because `counted`'s first argument
is supposed to be an iterator, not a range.
Also, mark `views::counted(it, n)` as [[nodiscard]], and test that.
(We have a general policy now that range adaptors are consistently
marked [[nodiscard]], so that people don't accidentally think that
they have side effects. This matters mostly for `reverse` and
`transform`, arguably `drop`, and just generally let's be consistent.)
Differential Revision: https://reviews.llvm.org/D115177
Arthur O'Dwyer [Mon, 6 Dec 2021 18:28:33 +0000 (13:28 -0500)]
[libc++] Remove unneeded `std::` qualifications from <compare>. NFCI.
Reviewed as part of D115177.
Arthur O'Dwyer [Mon, 6 Dec 2021 18:25:27 +0000 (13:25 -0500)]
[libc++] std::move should be _VSTD::move in one place. NFCI.
Reviewed as part of D115177.
Aart Bik [Sat, 4 Dec 2021 00:55:43 +0000 (16:55 -0800)]
[mlir][sparse] finalize sparse output in the presence of reductions
This revision implements sparse outputs (from scratch) in all cases where
the loops can be reordered with all but one parallel loops outer. If the
inner parallel loop appears inside one or more reductions loops, then an
access pattern expansion is required (aka. workspaces in TACO speak).
Reviewed By: bixia
Differential Revision: https://reviews.llvm.org/D115091
Clemens Wasser [Tue, 7 Dec 2021 18:44:24 +0000 (10:44 -0800)]
Format lsan.h
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D115262
Michael Jones [Fri, 19 Nov 2021 21:56:16 +0000 (13:56 -0800)]
[libc] apply new lint rules
This patch applies the lint rules described in the previous patch. There
was also a significant amount of effort put into manually fixing things,
since all of the templated functions, or structs defined in /spec, were
not updated and had to be handled manually.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D114302
Michael Jones [Fri, 19 Nov 2021 21:54:35 +0000 (13:54 -0800)]
[libc] update tidy rules to fix variable formatting
This commit changes the clang-tidy rules for LLVM-libc to follow the new
format. The next commit applies these rules to the codebase.
The rules are as follows:
CamelCase for classes
lower_case for variables
lower_case for functions
UPPER_CASE for constexpr variables
There are also some exceptions, but the most important one is that any
function or variable that starts with an underscore is exempt from the
formatting.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D114301
Chih-Ping Chen [Tue, 7 Dec 2021 16:26:28 +0000 (11:26 -0500)]
[NFC][CodeView] Use one unified access to the module in beginModule.
Differential Revision: https://reviews.llvm.org/D115257
Zequan Wu [Mon, 15 Nov 2021 20:23:04 +0000 (12:23 -0800)]
[LLDB][NativePDB] Fix function decl creation for class methods
This is a split of D113724. Calling `TypeSystemClang::AddMethodToCXXRecordType`
to create function decls for class methods.
Differential Revision: https://reviews.llvm.org/D113930
Clemens Wasser [Tue, 7 Dec 2021 18:27:59 +0000 (10:27 -0800)]
Change __lsan::kMaxAllowedMallocSize literal types to unsigned long long
It is required for the [Leak Sanitizer port to Windows](https://reviews.llvm.org/D115103).
The currently used `unsigned long` type is 64 bits wide on UNIX like systems but only 32 bits wide on Windows.
Because of that, the literal `8UL << 30` causes an integer overflow on Windows.
By changing the type of the literals to `unsigned long long`, we have consistent behavior and no overflows on all Platforms.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D115186
Simon Pilgrim [Tue, 7 Dec 2021 18:36:50 +0000 (18:36 +0000)]
Remove unused variable. NFC.
Rob Suderman [Tue, 7 Dec 2021 18:03:31 +0000 (10:03 -0800)]
[mlir][tosa] Disable tosa.depthwise_conv2d canonicalizer for quantized case
Quantized case needs to include zero-point corrections before the tosa.mul.
Disabled for the quantized use-case.
Reviewed By: NatashaKnk
Differential Revision: https://reviews.llvm.org/D115264
Jonas Paulsson [Thu, 18 Nov 2021 21:40:12 +0000 (22:40 +0100)]
[SystemZ] Add range checks for PC-relative fixups.
The AsmParser checks the range of a PC-relative operand, but only if it is
immediate.
This patch adds range checks for operands in applyFixup(), at which point the
offset to a label is known.
The diagnostic message for an operand that is out of range is explicit (with
given value and min/max limits). This is now also done for displacement
fixups.
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D114194
Simon Pilgrim [Tue, 7 Dec 2021 18:09:18 +0000 (18:09 +0000)]
Fix MSVC "not all control paths return a value" warning. NFC.
Simon Pilgrim [Tue, 7 Dec 2021 17:57:32 +0000 (17:57 +0000)]
[DAG] Update expandFunnelShift/expandROT to return the expansion directly. NFCI.
Don't return a bool to indicate if the expansion was successful, just return the SDValue result directly, like we do for most other basic expansions.
Arthur Eubanks [Mon, 6 Dec 2021 21:04:57 +0000 (13:04 -0800)]
[NFC] Clarify comment about LoopDeletionPass in the optimization pipeline
Reviewed By: lebedev.ri
Differential Revision: https://reviews.llvm.org/D115179
Kirill Stoimenov [Tue, 7 Dec 2021 02:47:11 +0000 (02:47 +0000)]
[ASan] Refactored SHADOW_OFFSET implementation to use SHADOW_OFFSET_CONST.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D115213
Greg Clayton [Tue, 7 Dec 2021 17:44:22 +0000 (09:44 -0800)]
Modify DataEncoder to be able to encode data in an object owned buffer.
DataEncoder was previously made to modify data within an existing buffer. As the code progressed, new clients started using DataEncoder to create binary data. In these cases the use of this class was possibly, but only if you knew exactly how large your buffer would be ahead of time. This patchs adds the ability for DataEncoder to own a buffer that can be dynamically resized as data is appended to the buffer.
Change in this patch:
- Allow a DataEncoder object to be created that owns a DataBufferHeap object that can dynamically grow as data is appended
- Add new methods that start with "Append" to append data to the buffer and grow it as needed
- Adds full testing of the API to assure modifications don't regress any functionality
- Has two constructors: one that uses caller owned data and one that creates an object with object owned data
- "Append" methods only work if the object owns it own data
- Removes the ability to specify a shared memory buffer as no one was using this functionality. This allows us to switch to a case where the object owns its own data in a DataBufferHeap that can be resized as data is added
"Put" methods work on both caller and object owned data.
"Append" methods work on only object owned data where we can grow the buffer. These methods will return false if called on a DataEncoder object that has caller owned data.
The main reason for these modifications is to be able to use the DateEncoder objects instead of llvm::gsym::FileWriter in https://reviews.llvm.org/D113789. This patch wants to add the ability to create symbol table caching to LLDB and the code needs to build binary caches and save them to disk.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D115073
Peter Klausler [Mon, 6 Dec 2021 15:42:13 +0000 (07:42 -0800)]
[flang] Remove runtime check from OpenFile::Close()
In error cases it is possible to CLOSE a unit that has not
been successfully connected, so don't crash when the file descriptor
is negative.
Differential Revision: https://reviews.llvm.org/D115165
Peter Klausler [Sat, 4 Dec 2021 19:30:01 +0000 (11:30 -0800)]
[flang] Avoid potential deadlock in CloseAll()
When closing all open units, don't hold the unit map lock
over the actual close operations; if one of those aborts,
CloseAll() may be called and then deadlock.
Differential Review: https://reviews.llvm.org/D115184
Craig Topper [Tue, 7 Dec 2021 15:12:04 +0000 (07:12 -0800)]
[RISCV] Revise RISCVInstPrinter::printVTypeI to not assume there are 3 invalid vtype bits.
Instead of checking [10:8]. Check for non-zero in 8 and above.
Addresses a post-commit comment from @jrtc27 in D114581.
lh123 [Tue, 7 Dec 2021 17:16:38 +0000 (01:16 +0800)]
[clangd] Print type for VarTemplateDecl in hover.
Print type for VarTemplateDecl in hover.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D115108
Kazu Hirata [Tue, 7 Dec 2021 17:17:03 +0000 (09:17 -0800)]
[llvm] Use range-based for loops (NFC)
Corentin Jabot [Tue, 7 Dec 2021 17:13:35 +0000 (12:13 -0500)]
Do not check if we are in a discared context in non-immediate contexts
This fixes in a regression introduced by
6eeda06c1.
When deducing the return type of nested function calls, only the
return type of the outermost expression should be ignored.
Instead of assuming all contextes nested in a discared statements
are themselves discarded, only assume that in immediate contexts.
Similarly, only consider contextes immediately in an immediate or
discarded statement as being themselves immediate.
LLVM GN Syncbot [Tue, 7 Dec 2021 17:01:16 +0000 (17:01 +0000)]
[gn build] Port
fa99cb64ff0e
Mircea Trofin [Mon, 6 Dec 2021 22:59:19 +0000 (14:59 -0800)]
[mlgo][regalloc] Add score calculation for training
Add the calculation of a score, which will be used during ML training. The
score qualifies the quality of a regalloc policy, and is independent of
what we train (currently, just eviction), or the regalloc algo itself.
We can then use scores to guide training (which happens offline), by
formulating a reward based on score variation - the goal being lowering
scores (currently, that reward is percentage reduction relative to
Greedy's heuristic)
Currently, we compute the score by factoring different instruction
counts (loads, stores, etc) with the machine basic block frequency,
regardless of the instructions' provenance - i.e. they could be due to
the regalloc policy or be introduced previously. This is different from
RAGreedy::reportStats, which accummulates the effects of the allocator
alone. We explored this alternative but found (at least currently) that
the more naive alternative introduced here produces better policies. We
do intend to consolidate the two, however, as we are actively
investigating improvements to our reward function, and will likely want
to re-explore scoring just the effects of the allocator.
In either case, we want to decouple score calculation from allocation
algorighm, as we currently evaluate it after a few more passes after
allocation (also, because score calculation should be reusable
regardless of allocation algorithm).
We intentionally accummulate counts independently because it facilitates
per-block reporting, which we found useful for debugging - for instance,
we can easily report the counts indepdently, and then cross-reference
with perf counter measurements.
Differential Revision: https://reviews.llvm.org/D115195
Aaron Ballman [Tue, 7 Dec 2021 16:48:07 +0000 (11:48 -0500)]
Add diagnostic groups for attribute extensions
Some users have a need to control attribute extension diagnostics
independent of other extension diagnostics. Consider something like use
of [[nodiscard]] within C++11:
```
[[nodiscard]]
int f();
```
If compiled with -Wc++17-extensions enabled, this will produce warning:
use of the 'nodiscard' attribute is a C++17 extension. This diagnostic
is correct -- using [[nodiscard]] in C++11 mode is a C++17 extension.
And the behavior of __has_cpp_attribute(nodiscard) is also correct --
we support [[nodiscard]] in C++11 mode as a conforming extension. But
this makes use of -Werror or -pedantic-errors` builds more onerous.
This patch adds diagnostic groups for attribute extensions so that
users can selectively disable attribute extension diagnostics. I
believe this is preferable to requiring users to specify additional
flags because it means -Wc++17-extensions continues to be the way we
enable all C++17-related extension diagnostics. It would be quite easy
for someone to use that flag thinking they're protected from some
portability issues without realizing it skipped attribute extensions if
we went the other way.
This addresses PR33518.
spupyrev [Tue, 7 Dec 2021 16:22:29 +0000 (08:22 -0800)]
fixing a broken ext-tsp test
the test requires debug build
example of a failed buildbot:
https://lab.llvm.org/buildbot/#/builders/91/builds/211/steps/8/logs/stdio
Differential Revision: https://reviews.llvm.org/D115255
Florian Hahn [Tue, 7 Dec 2021 16:26:31 +0000 (16:26 +0000)]
[VPlan] Verify plan entry and exit blocks, set correct exit block.
Both the entry and exit blocks of the top-region of a plan must be
VPBasicBlocks. They also must have no predecessors or successors
respectively.
This invariant was broken when splitting a block for sink-after. To fix
the issue, set the exit block of the region *after* sink-after is done.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D114586
Jay Foad [Tue, 7 Dec 2021 09:35:59 +0000 (09:35 +0000)]
[AMDGPU] Mark time intrinsics as nomem, hassideeffects
Adding IntrHasSideEffects to @llvm.amdgcn.s.memtime and
@llvm.amdgcn.s.memrealtime means that we can stop pretending they read
and write memory, and similarly for the corresponding pseudo
instructions.
This should stop these intrinsics from being rescheduled past all other
instructions, even ones which don't load or store.
See also https://reviews.llvm.org/D58635.
Differential Revision: https://reviews.llvm.org/D115227