Uday Bondhugula [Thu, 5 Jan 2023 23:03:42 +0000 (04:33 +0530)]
Canonicalize affine set + operands while adding affine.if op domain
Canonicalize affine set + operands in addAffineIfOpDomain. This is to
ensure a unique set of operands for FlatAffineValueConstraints and in
general to provide a simplified set of constraints. For the latter
scenario, this just leads to efficiency improvements as opposed to
functionality. While on this, remove outdated/stale stuff from
AffineStructures.h.
Fixes: https://github.com/llvm/llvm-project/issues/59461
Differential Revision: https://reviews.llvm.org/D141250
Raghu Maddhipatla [Wed, 11 Jan 2023 14:23:53 +0000 (08:23 -0600)]
[Flang] [OpenMP] Add parser support for THREAD_LIMIT clause on OMP TARGET directive.
OpenMP 5.1 adds support for the THREAD_LIMIT clause for OMP TARGET directive.
This patch adds parser support for it in flang.
Reviewed By: kiranchandramohan, TIFitis
Differential Revision: https://reviews.llvm.org/D141493
Shilei Tian [Thu, 12 Jan 2023 04:50:28 +0000 (23:50 -0500)]
[OpenMP][DeviceRTL] Fix the support for tasking on the device
This patch fixes the support for tasking on the device.
Note: AMDGPU doesn't support it yet because of no support for `malloc` and `free`.
Fix #59946.
```
➜ ./test_parallel_master_device
[OMPVV_RESULT: test_parallel_master_device.c] Test passed on the device.
```
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D141562
Yaxun (Sam) Liu [Thu, 12 Jan 2023 04:31:09 +0000 (23:31 -0500)]
Fix test hip-windows-filename.hip
due to https://reviews.llvm.org/D141437
esmeyi [Thu, 12 Jan 2023 04:27:47 +0000 (23:27 -0500)]
[XCOFF] handle the toc-data for object file generation.
Summary: The toc-data feature has been supported for assembly file generation.
This patch handles the toc-data for object file generation.
Reviewed By: shchenz
Differential Revision: https://reviews.llvm.org/D139516
Ramkrishnan Narayanan Komala [Thu, 12 Jan 2023 04:13:33 +0000 (23:13 -0500)]
[LoopFusion] Sorting of undominated FusionCandidates crashes
This patch tries to fix [[ https://github.com/llvm/llvm-project/issues/56263 | issue ]].
If two **FusionCandidates** are in same level of dominator tree then, they will not be dominates each other. But they are control flow equivalent. To sort those FusionCandidates **nonStrictlyPostDominate** check is needed.
Reviewed By: Narutoworld
Differential Revision: https://reviews.llvm.org/D139993
Fangrui Song [Thu, 12 Jan 2023 03:47:02 +0000 (19:47 -0800)]
[CodeGen] Remove #include "llvm/ADT/None.h"
Nico Weber [Thu, 12 Jan 2023 03:28:18 +0000 (22:28 -0500)]
wanglei [Thu, 12 Jan 2023 02:33:11 +0000 (10:33 +0800)]
[LoongArch] Implement mayBeEmittedAsTailCall for tail call optimization
Implements TargetLowering callback `mayBeEmittedAsTailCall` that enables
CodeGenPrepare to duplicate returns when they might enable a tail-call.
Reviewed By: xen0n, MaskRay
Differential Revision: https://reviews.llvm.org/D141257
Shilei Tian [Thu, 12 Jan 2023 03:05:33 +0000 (22:05 -0500)]
[OpenMP] Implement `omp_get_mapped_ptr`
This patch implements the function `omp_get_mapped_ptr`.
Fix #59945.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D141545
Craig Topper [Thu, 12 Jan 2023 03:01:46 +0000 (19:01 -0800)]
[RISCV] Move FP store of extractelt pattern to DAGCombine.
This makes it the same as integer.
Craig Topper [Thu, 12 Jan 2023 02:46:14 +0000 (18:46 -0800)]
[RISCV] Use ISD::EXTRACT_VECTOR_ELT for Intrinsic::riscv_vfmv_f_s lowering.
This matches what we do for extractelt from IR for both fixed and
scalable vectors.
This lets us remove a few isel patterns.
Nikolas Klauser [Tue, 3 Jan 2023 20:51:31 +0000 (21:51 +0100)]
[libc++] Fix ranges::uninitialized_move{, _n} for move-only types
Fixes #59806
Reviewed By: ldionne, var-const, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D140920
Vitaly Buka [Wed, 11 Jan 2023 03:20:13 +0000 (19:20 -0800)]
[tsan] Remove rtl-old
Reviewed By: dvyukov, MaskRay
Differential Revision: https://reviews.llvm.org/D141455
Nikolas Klauser [Thu, 12 Jan 2023 01:47:41 +0000 (02:47 +0100)]
[libc++][NFC] Fix endif comments in cmath
zhongyunde [Thu, 12 Jan 2023 01:41:09 +0000 (09:41 +0800)]
[MergeICmps] Adapt to non-eq comparisons
Fix https://github.com/llvm/llvm-project/issues/59740.
Reviewed By: courbet, nikic
Differential Revision: https://reviews.llvm.org/D141188
Konstantin Varlamov [Thu, 12 Jan 2023 01:42:20 +0000 (17:42 -0800)]
[libc++][ranges] Fix incorrect integer type in `view_interface` tests.
`ForwardIter() - ForwardIter()` returns `ptrdiff_t`, and converting it
to an unsigned type isn't guaranteed to produce the same type as
`size_t`.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D141456
Vladimir Vereschaka [Thu, 12 Jan 2023 01:22:35 +0000 (17:22 -0800)]
Fixed Clang::Driver 'netbsd.c' test on Windows/Cross builders. NFC.
Differential Revision: https://reviews.llvm.org/D140817
Fangrui Song [Thu, 12 Jan 2023 01:27:56 +0000 (17:27 -0800)]
[bazel] Enable layering_check for llvm and clang
Similar to D113952 for mlir.
I have added many missing dependencies so that
`bazel-5.0.0 build --config=generic_clang --features=layering_check @llvm-project//llvm:all @llvm-project//clang:all`
works now.
Enable the feature to ensure layering and catch circular dependencies
(https://llvm.org/docs/CodingStandards.html#library-layering).
Reviewed By: GMNGeoffrey, rupprecht
Differential Revision: https://reviews.llvm.org/D141553
Fangrui Song [Thu, 12 Jan 2023 01:24:47 +0000 (17:24 -0800)]
[bazel] Fix all remaining --features=layering_check issues for @llvm-project//clang:all
Florian Mayer [Thu, 12 Jan 2023 01:24:02 +0000 (17:24 -0800)]
[NFC] fix more type conversion issues
Fangrui Song [Thu, 12 Jan 2023 01:09:09 +0000 (17:09 -0800)]
[bazel] Fix all remaining --features=layering_check issues for @llvm-project//llvm:all
Florian Mayer [Thu, 12 Jan 2023 00:57:12 +0000 (16:57 -0800)]
[NFC] fix type conversion issue
Florian Mayer [Tue, 20 Dec 2022 23:20:59 +0000 (15:20 -0800)]
Dynamically allocate scudo allocation buffer.
This is so we can increase the buffer size for finding elusive bugs.
Tested by hand with this program
```
int main(int argc, char** argv) {
if (argc < 2)
return 1;
int n = atoi(argv[1]);
char* x = reinterpret_cast<char*>(malloc(1));
*((volatile char*)x) = 1;
free(x);
for (; n > 0; --n) {
char* y = reinterpret_cast<char*>(malloc(1024));
*((volatile char*)y) = 1;
free(y);
}
*x = 2;
return 0;
}
```
SCUDO_OPTIONS=allocation_ring_buffer_size=30000 ./uaf 1000000
-> no allocation trace
SCUDO_OPTIONS=allocation_ring_buffer_size=
30000000 ./uaf 1000000
-> allocation trace
Reviewed By: hctim, eugenis
Differential Revision: https://reviews.llvm.org/D140932
Rafael Auler [Thu, 12 Jan 2023 00:05:45 +0000 (16:05 -0800)]
[BOLT] Add test case triggering JT assertion
Current case that triggers BOLT assertion. Marked XFAIL.
In this test case, we reproduce the behavior seen in gcc where the
base address of a jump table is decremented by some number and ends up
at the exact addess of a jump table from another function. After
linking, the instruction references another jump table and that
confuses BOLT.
Reviewed By: #bolt, Amir
Differential Revision: https://reviews.llvm.org/D138245
William Huang [Wed, 11 Jan 2023 23:54:03 +0000 (23:54 +0000)]
Fix to D139603(reverted) - moved size check to unit test so that it is cross-platform
D139603 (add option to llvm-profdata to reduce output profile size) contains test cases that are not cross-platform. Moving those tests to unit test and making sure the feature is callable from llvm library
Reviewed By: snehasish
Differential Revision: https://reviews.llvm.org/D141446
bixia1 [Wed, 11 Jan 2023 17:06:42 +0000 (09:06 -0800)]
[mlir][sparse] Avoid values buffer reallocation for annotated all dense tensors.
Previously, we rely on the InsertOp to gradually increase the size of the
storage for all sparse tensors. We now allocate the full size values buffer
for annotated all dense tensors when we first allocate the tensor. This avoids
the cost of gradually increasing the buffer and allows accessing the values
buffer as if it were a dense tensor.
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D141516
Craig Topper [Thu, 12 Jan 2023 00:24:23 +0000 (16:24 -0800)]
[RISCV] Make sure we use LMUL=1 for scalar reduction input in combineBinOpToReduce
We might have looked through an INSERT_SUBVECTOR to find the
vmv.s.x or vfmv.s.f. If we did the ScalarV type is no longer LMUL=1.
We need to add a new INSERT_SUBVECTOR to restore it before
creating the new reduction.
While there, use the same debug location for all of the newly created
nodes. I believe we were using multiple debug locations from the
original nodes, but changing their relative order. I don't think
we're supposed to do that.
bixia1 [Wed, 11 Jan 2023 16:59:00 +0000 (08:59 -0800)]
[mlir][sparse] Refactor the code that reshapes the values buffer for annotated all dense tensors.
Move the functionality to codegen utils for sharing with the codegen path.
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D141514
Sami Tolvanen [Wed, 11 Jan 2023 23:06:20 +0000 (23:06 +0000)]
[ModuleUtils][KCFI] Set patchable-function-prefix for synthesized functions
When -fpatchable-function-entry is used to emit prefix nops
before functions, KCFI assumes all indirectly called functions
have the same number of prefix nops, because the nops are emitted
between the KCFI type hash and the function entry. However, as
patchable-function-prefix is a function attribute set by Clang,
functions later synthesized by LLVM don't inherit this attribute
and end up not having prefix nops. One of these functions
is asan.module_ctor, which the Linux kernel ends up calling
indirectly when KASAN is enabled.
In order to avoid tripping KCFI, save the expected prefix offset
to a module flag, and use it when we're setting KCFI type for the
relevant synthesized functions.
Link: https://github.com/ClangBuiltLinux/linux/issues/1742
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D141172
Alex Brachet [Wed, 11 Jan 2023 23:42:19 +0000 (23:42 +0000)]
[GWP-ASan] Fix 6413872
Use testing not zxtest in non-Fuchsia case
Yaxun (Sam) Liu [Tue, 10 Jan 2023 20:58:57 +0000 (15:58 -0500)]
[HIP] Use .hipi as preprocessor output extension
so that clang can recognize it and handle it automatically
without -x hip-cpp-output.
Reviewed by: Artem Belevich
Differential Revision: https://reviews.llvm.org/D141437
Fangrui Song [Wed, 11 Jan 2023 23:33:50 +0000 (15:33 -0800)]
[llvm-lto2] Remove unused include after D123126
Fangrui Song [Wed, 11 Jan 2023 23:30:54 +0000 (15:30 -0800)]
[bazel] Fix some --features=layering_check issues
Francis Visoiu Mistrih [Mon, 28 Nov 2022 20:26:54 +0000 (15:26 -0500)]
[Matrix] Optimize matrix transposes around additions
First, sink the transposes to the operands to simplify redudant
ones. Then, lift them to reduce the number of realized transposes.
```
(A + B)^T -> A^T + B^T -> (A + B)^T
```
See tests for more examples.
Differential Revision: https://reviews.llvm.org/D133657
Fangrui Song [Wed, 11 Jan 2023 23:18:10 +0000 (15:18 -0800)]
[llvm-profdata] Remove an unused include after D115915
Alex Brachet [Wed, 11 Jan 2023 23:16:19 +0000 (23:16 +0000)]
[GWP-ASan] Fix test to work with Fuchsia's zxtest
Alexander Yermolovich [Wed, 11 Jan 2023 23:06:42 +0000 (15:06 -0800)]
[llvm][dwwarf] Change CU/TU index to 64-bit
Changed contribution data structure to 64 bit. I added the 32bit and 64bit
accessors to make it explicit where we use 32bit and where we use 64bit. Also to
make sure sure we catch all the cases where this data structure is used.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D139379
Sami Tolvanen [Fri, 6 Jan 2023 20:54:09 +0000 (20:54 +0000)]
[GCOV] Set !kcfi_type metadata for indirectly called functions
With CONFIG_GCOV_KERNEL, the Linux kernel indirectly calls the
__llvm_gcov_* functions generated by LLVM. With -fsanitize=kcfi,
these calls are made from instrumented code and fail indirect
call checks as they don't have !kcfi_type metadata. Similarly
to D138945, set type metadata for these functions to allow GCOV
and KCFI to be both enabled.
Link: https://github.com/ClangBuiltLinux/linux/issues/1778
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D141444
Alexander Yermolovich [Wed, 11 Jan 2023 22:40:54 +0000 (14:40 -0800)]
Revert "[llvm][dwwarf] Change CU/TU index to 64-bit"
This reverts commit
fa3fa4d0d42326005dfd5887bf047b86904d3be6.
spupyrev [Mon, 12 Dec 2022 19:29:02 +0000 (11:29 -0800)]
[BOLT] using jump weights in profi
We want to use profile inference (profi) in BOLT for stale profile matching.
This is the second change for existing usages of profi (e.g., CSSPGO):
(i) Added the ability to provide (estimated) jump weights for the algorithm. The
goal of the algorithm is to create a valid control flow for a given function
(that is, one in which incoming counts equal outgoing counts for every basic
block while minimally modifying the original input block and jump weights). The
input jump weights will be provided based on collected LBR profiles in BOLT.
(ii) Added the corresponding options to ProfiParams.
(iii) Slightly modified / simplified the construction of the flow network in profi
so as it utilizes fewer auxiliary nodes. This is done by introducing parallel
edges to the network (which is supported by MMF) and reduces the size of the
network from 3*|V| to 2*|V|, where |V| is the number of basic blocks in the
function.
**Inference (profile quality) impact:**
The diff is supposed to be a no-op for the inferred counts. However, our
implementation of MCF is not fully deterministic and might return different
results depending on the input network model. Since we changed the model
construction, there are a few differences in comparison to the original
implementation. I checked manually on an internal benchmark and see a minor
difference (+/- 1 count for certain basic blocks) in just a dozen of instances
(out of 10000+ input functions). Hence, the diff is highly unlikely to have an
impact for existing prod workloads.
**Runtime impact:**
I measure up to 10% speedup for block-only (ie CSSPGO/AutoFDO) inference and up
to 50% speedup for block+jump inference (ie BOLT) in comparison to the original
unoptimized version.
Reviewed By: hoy
Differential Revision: https://reviews.llvm.org/D139870
Stanislav Mekhanoshin [Wed, 11 Jan 2023 21:27:11 +0000 (13:27 -0800)]
[AMDGPU] Mark wmma intrinsics as source of divergence
I do not believe any code can hit this, but these do not give
a uniform answer with all unifirm sources.
Differential Revision: https://reviews.llvm.org/D141544
Jez Ng [Wed, 11 Jan 2023 22:13:33 +0000 (17:13 -0500)]
[lld-macho][nfc] Use alignToPowerOf2 instead of alignTo when possible
Skips the divide operation which is generally expensive. Not that it
matters in this diff, the code changed is not particularly hot, but just
for principle & consistency...
Reviewed By: #lld-macho, oontvoo, MaskRay
Differential Revision: https://reviews.llvm.org/D141461
Arthur O'Dwyer [Tue, 10 Jan 2023 18:29:35 +0000 (13:29 -0500)]
[libc++] Hold mutex lock while notify_all is called at notify_all_at_thread_exit
Releasing the mutex before the call to notify_all is an optimization.
This optimization cannot be used here. The thread waiting on the
condition might destroy the associated resources — mutex + condition
variable — and the notifier thread will access an destroyed variable
— the condition variable. In fact, notify_all_at_thread_exit is meant
exactly to join on detached threads, and the waiting thread doesn't
expect for the notifier thread to access any further shared resources,
making this scenario very likely to happen. The waiting thread might
awake spuriously on the release of the mutex lock. The reorder is
necessary to prevent this race.
Further details can be found at https://cplusplus.github.io/LWG/issue3343.
Differential Revision: https://reviews.llvm.org/D105758
Paul Kirth [Thu, 5 Jan 2023 00:26:36 +0000 (00:26 +0000)]
"Reland "[pgo] Avoid introducing relocations by using private alias"
In many cases, we can use an alias to avoid a symbolic relocations,
instead of using the public, interposable symbol. When the instrumented
function is in a COMDAT, we can use a hidden alias, and still avoid
references to discarded sections.
Previous versions of this patch allowed the compiler to name the
generated alias, but that would only be valid when the functions were
local. Since the alias may be used across TUs we use a more
deterministic naming convention, and add a .local suffix to the alias
name just as we do for relative vtables aliases.
This should be safe to land after an incorrect LLD assertion was removed
in https://reviews.llvm.org/rG20894a478da224bdd69c91a22a5175b28bc08ed9
which caused assertion failures in LLD on Mac.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D137982
Hanhan Wang [Fri, 6 Jan 2023 00:54:34 +0000 (16:54 -0800)]
[mlir][tensor] Add patterns that fold ops into pack and unpack ops.
The tensor.pack ops have pad semantic, so we can fold pad + pack into
pack when
1. They have the same padding values or the pack op does not have
padding values.
2. The pad op does not have low paddings.
The tensor.unpack ops have extract_slice semantic, so we can fold unpack
+ extract_slice into unpack when
1. All the offsets are 0s.
2. All the strides are 1s.
Reviewed By: tyb0807
Differential Revision: https://reviews.llvm.org/D141099
Alex Langford [Sat, 17 Dec 2022 00:19:40 +0000 (16:19 -0800)]
[debugserver] Clear memory allocations after exec
After an exec, the inferior is a new process and none of these memory
regions are still allocated. Clear them out.
Differential Revision: https://reviews.llvm.org/D140253
Owen Pan [Wed, 11 Jan 2023 20:15:16 +0000 (12:15 -0800)]
[clang-format][doc] Fix C++ code blocks for IntegerLiteralSeparator
Mitch Phillips [Wed, 11 Jan 2023 20:55:38 +0000 (12:55 -0800)]
[GWP-ASan] Add recoverable mode.
The GWP-ASan recoverable mode allows a process to continue to function
after a GWP-ASan error is detected. The error will continue to be
dumped, but GWP-ASan now has APIs that a signal handler (like the
example optional crash handler) can call in order to allow the
continuation of a process.
When an error occurs with an allocation, the slot used for that
allocation will be permanently disabled. This means that free() of that
pointer is a no-op, and use-after-frees will succeed (writing and
reading the data present in the page).
For heap-buffer-overflow/underflow, the guard page is marked as accessible
and buffer-overflows will succeed (writing and reading the data present
in the now-accessible guard page). This does impact adjacent
allocations, buffer-underflow and buffer-overflows from adjacent
allocations will no longer touch an inaccessible guard page. This could
be improved in future by having two guard pages between each adjacent
allocation, but that's out of scope of this patch.
Each allocation only ever has a single error report generated. It's
whatever came first between invalid-free, double-free, use-after-free or
heap-buffer-overflow, but only one.
Reviewed By: eugenis, fmayer
Differential Revision: https://reviews.llvm.org/D140173
James Y Knight [Wed, 11 Jan 2023 20:53:03 +0000 (15:53 -0500)]
[Libcxx] Add <source_location> header.
This requires the __builtin_source_location() builtin, as implemented
by GCC and Clang.
Fixes https://github.com/llvm/llvm-project/issues/56363
Differential Revision: https://reviews.llvm.org/D120634
Casey Carter [Wed, 11 Jan 2023 01:49:53 +0000 (17:49 -0800)]
[libc++][test] cleanup in formatter.h
* Silence warnings for unused parameters / variables
* There's no reason to output unexpected exceptions only for libc++
Differential Revision: https://reviews.llvm.org/D141453
Markus Böck [Wed, 11 Jan 2023 19:54:56 +0000 (20:54 +0100)]
[llvm] Refactor leftover ThreadLocal usage in MinGW code
This code was accidently left over after https://reviews.llvm.org/D141349 and now leads to compilation failure due to missing declaration (since the class has been removed)
Just migrate it by making use of `LLVM_THREAD_LOCAL` instead.
Differential Revision: https://reviews.llvm.org/D141535
Markus Böck [Tue, 10 Jan 2023 20:27:18 +0000 (21:27 +0100)]
[mlir][NFC] Migrate rest of the dialects to the new fold API
Markus Böck [Tue, 10 Jan 2023 19:33:48 +0000 (20:33 +0100)]
[mlir][MemRef][NFC] Migrate MemRef dialect to the new fold API
See https://discourse.llvm.org/t/psa-new-improved-fold-method-signature-has-landed-please-update-your-downstream-projects/67618 for context
Differential Revision: https://reviews.llvm.org/D141529
Markus Böck [Tue, 10 Jan 2023 19:05:49 +0000 (20:05 +0100)]
[mlir][Index][NFC] Migrate index dialect to the new fold API
See https://discourse.llvm.org/t/psa-new-improved-fold-method-signature-has-landed-please-update-your-downstream-projects/67618 for context
Similar to the patch for the arith dialect, the index dialects fold implementations make heavy use of generic fold functions, hence the change being comparatively mechanical and mostly changing the function signature.
Differential Revision: https://reviews.llvm.org/D141502
Alex Langford [Fri, 16 Dec 2022 22:29:11 +0000 (14:29 -0800)]
[lldb] Do not deallocate memory after exec
After an exec has occured, resources used to manage the state of a
Process are cleaned up. One such resource is the AllocatedMemoryCache
which keeps track of memory allocations made in the process for things
like expression evaluation. After an exec is performed, the allocated
memory regions in the process are gone, so it does not make sense to try
to deallocate those regions.
rdar://
103188106
Differential Revision: https://reviews.llvm.org/D140249
Jeff Niu [Wed, 11 Jan 2023 18:03:10 +0000 (10:03 -0800)]
[mlir][llvm] Add a convenience builder to BrOp
This builder takes no successor arguments.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D141522
Thomas Raoux [Tue, 10 Jan 2023 21:56:15 +0000 (21:56 +0000)]
[mlir]][linalg] Add named op for matmul_transpose_b
matmul where the RHS operand is transposed allows better memory access
patterns on several architectures including common GPUs. Having a named
op for it allows to handle this kind of matmul in a more explicit way.
Differential Revision: https://reviews.llvm.org/D141430
Nikolas Klauser [Wed, 28 Dec 2022 14:10:27 +0000 (15:10 +0100)]
[libc++] Rename transform_view::{__iterator, __sentinel} to __transform_view_{iterator, sentinel}
This makes it a lot easier to specialize traits types, like __segmented_iterator_traits.
Reviewed By: var-const, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D140728
Thurston Dang [Wed, 11 Jan 2023 19:34:34 +0000 (19:34 +0000)]
tsan_shadow_test: add const qualifier
Fix build error in https://lab.llvm.org/buildbot/#/builders/57/builds/23839/steps/7/logs/stdio
that I had introduced in https://reviews.llvm.org/D141445
Differential Revision: https://reviews.llvm.org/D141534
Caroline Tice [Wed, 11 Jan 2023 19:11:25 +0000 (11:11 -0800)]
[Bazel] Fix typo (missing comma) in previous commit.
Commit
b4477dd8c5d1f9b27cc6d8f52106359e4f0afe66,
"[Bazel] Add //llvm:TargetParser depenendency to clang driver for RISCVTargetParserDef.inc",
was missing a comma. This fixes that.
Caroline Tice [Wed, 11 Jan 2023 19:07:08 +0000 (11:07 -0800)]
[Bazel] Add //llvm:TargetParser depenendency to clang driver for RISCVTargetParserDef.inc
Recent update missed this dependency.
Haowei Wu [Wed, 11 Jan 2023 00:56:07 +0000 (16:56 -0800)]
[CMake][Fuchsia] Include llvm-ml in Fuchsia toolchain
This change includes llvm-ml tool in Fuchsia toolchain.
Differential Revision: https://reviews.llvm.org/D141448
Jakub Kuderski [Wed, 11 Jan 2023 18:55:39 +0000 (13:55 -0500)]
[mlir][spirv] Migrate to new fold API
Fixes: https://github.com/llvm/llvm-project/issues/59938
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D141524
Florian Hahn [Wed, 11 Jan 2023 18:52:50 +0000 (18:52 +0000)]
[AArch64] Set MaxInterleaveFactor for Apple A14, A15, A16.
Those CPUs can benefit from additional interleaving.
Reviewed By: jroelofs
Differential Revision: https://reviews.llvm.org/D141499
Ed Maste [Wed, 21 Dec 2022 21:06:02 +0000 (16:06 -0500)]
[libc++] Add FreeBSD exceptions.nonew ABI list
This matches the configuration used by the prospective FreeBSD CI runner.
Remove the (unused) ABI list created in my local environment.
This reverts commit
eca9196dc8826b9455a2cdb57c52d51403cb742c.
Reviewed by: Mordante
Differential Revision: https://reviews.llvm.org/D141496
Aaron Ballman [Wed, 11 Jan 2023 18:26:21 +0000 (13:26 -0500)]
Another round of speculative fixes for Clang sphinx
It seems that changing Format.h is insufficient to get the docs to
rebuild? Changing the .rst file directly to at least see if that gets
the bot back to green finally.
Slava Zakharin [Tue, 10 Jan 2023 18:24:48 +0000 (10:24 -0800)]
[flang] Added coarse grained alias analysis for FIR.
These are experimental changes in Flang AA to provide
at least some means to disambiguate memory accesses in some
simple cases. This AA is still not used by any transformation,
so the LIT tests are the only way to trigger it currently.
I will further look into applying this AA within Flang
to address some of the known performance issues in the benchmarks.
Credits to @Renaud-K for the initial implementation.
Differential Revision: https://reviews.llvm.org/D141410
Thurston Dang [Wed, 11 Jan 2023 00:42:02 +0000 (00:42 +0000)]
tsan: add kBrokenAliasedMetas condition and test
This fills in a gap in the tsan_shadow_test coverage:
it is possible that the meta regions are aliased
(e.g., the heap meta region overlaps the high app meta
region). Indeed, the Aarch64_39 mapping has been
silently broken in this way for quite some time.
This CL checks whether the individual meta regions
(for low/mid/high/heap) overlap. Note that
(!kBrokenAliasedMetas && !kBrokenLinearity) implies
that MemToMeta is invertible; we cannot directly
test MetaToMem because that function does not exist.
Differential Revision: https://reviews.llvm.org/D141445
Aaron Ballman [Wed, 11 Jan 2023 18:09:16 +0000 (13:09 -0500)]
Speculatively fix the Clang sphinx build
This is another attempt at getting the Sphinx build back to green. It
seems Sphinx on the build server does not like any of these, likely due
to the digit separators.
Craig Topper [Wed, 11 Jan 2023 17:38:41 +0000 (09:38 -0800)]
[RISCV] Remove uses of Register::isPhysicalRegister/isVirtualRegister. NFC
Use isPhysical/isVirtual methods.
Jay Foad [Tue, 10 Jan 2023 13:24:40 +0000 (13:24 +0000)]
[AMDGPU] Temporarily disable FeatureBackOffBarrier for GFX11
Enabling this feature exposed some incorrect codegen, where a workgroup-
scope barrier fails to properly synchronise two waves from the same
workgroup running on different SIMDs of the same CU.
Disabling FeatureBackOffBarrier causes an s_waitcnt to be emitted before
the barrier which works around the problem.
Differential Revision: https://reviews.llvm.org/D141379
Florian Hahn [Wed, 11 Jan 2023 17:26:12 +0000 (17:26 +0000)]
[LoopUnroll] Add additional DT verification test for D141487.
Terry Wilmarth [Tue, 13 Dec 2022 18:54:24 +0000 (12:54 -0600)]
[OpenMP] Fix for smaller team sizes inside teams construct.
When a team nested inside a teams construct is allocated, it is
allocated to a size specified by the teams thread_limit. In the case
where any mechanism that might not grant the full thread_limit is in
use, we may get a smaller team. This possibility was not reflected in
the code when using the th_teams_size.nth value stored on the master
thread for the team. This value was never updated even when t_nproc on
the team itself was different. I added a line to update it shortly
before the team is forked.
Added a simple teams test that uses KMP_DYNAMIC_MODE=random to mimic
allocating teams with sizes <= thread_limit. Eventually, this
will segfault without the fix in this commit.
Differential Revision: https://reviews.llvm.org/D139960
Nico Weber [Wed, 11 Jan 2023 17:18:36 +0000 (12:18 -0500)]
[gn build] Port
ac1ffd3caca1
Markus Böck [Tue, 10 Jan 2023 18:52:56 +0000 (19:52 +0100)]
[mlir][math][NFC] Migrate math dialect to the new fold API
See https://discourse.llvm.org/t/psa-new-improved-fold-method-signature-has-landed-please-update-your-downstream-projects/67618 for context
Similar to the patch for the arith dialect, the math dialects fold implementations make heavy use of generic fold functions, hence the change being comparatively mechanical and mostly changing the function signature.
Differential Revision: https://reviews.llvm.org/D141500
Joseph Huber [Wed, 11 Jan 2023 17:05:01 +0000 (11:05 -0600)]
[OpenMP] Fix unused capature and name
Summary:
This capture isn't used, get rid of it and change the name since it's
more generic now.
Sam McCall [Wed, 11 Jan 2023 17:03:58 +0000 (18:03 +0100)]
[clangd] Respect clang-tidy SystemHeaders option if specified
(Previous commit assumed it was always off, which is the default)
Joseph Huber [Wed, 11 Jan 2023 17:02:36 +0000 (11:02 -0600)]
[Clang] Add requires flags to test using Linux command line
Summary:
This test uses command line tools but I forgot to add the requires
clauses. Fix it.
bixia1 [Tue, 10 Jan 2023 20:33:10 +0000 (12:33 -0800)]
[mlir][sparse] Generate AOS subviews on-demand.
Previously, we generate AOS subviews for indices buffers when constructing an
immutable sparse tensor descriptor. We now only generate such subviews when
getIdxMemRefOrView is requested.
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D141325
Siu Chi Chan [Wed, 11 Jan 2023 16:48:20 +0000 (11:48 -0500)]
[AMDGCN] Update search path for device libraries
- Add support for finding device libraries in new ROCm directory
structure
- Simplify and remove the handling of legacy ROCm directory structure
Change-Id: I04da3bc9da85ced4b56b0225efb6b94448b8c5a1
Reviewed By: yaxunl
Differential Revision: https://reviews.llvm.org/D140315
Guillaume Chatelet [Wed, 11 Jan 2023 16:48:35 +0000 (16:48 +0000)]
[NFC] Use TypeSize::geFixedValue() instead of TypeSize::getFixedSize()
This change is one of a series to implement the discussion from
https://reviews.llvm.org/D141134.
David Green [Wed, 11 Jan 2023 16:49:20 +0000 (16:49 +0000)]
[ARM] Limit and+csinc fold to a single use.
With glue nodes between the CMP and the CSINC, generating multiple
uses of the CMP can fail when scheduling the DAG. This limits the fold
from
90f24bef47227d58f2ccd to a single use on the CSINC, to prevent the
CMP being needed by two nodes.
Mark de Wever [Sun, 1 Jan 2023 16:17:47 +0000 (17:17 +0100)]
[libc++][format] Fixes escaping string literals.
D140653 has the same fix, without the extra tests.
Fixes PR59763
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D140819
OCHyams [Wed, 11 Jan 2023 15:51:32 +0000 (15:51 +0000)]
[Assignment Tracking] Do not verify against an empty metadata address operand
This copies existing behaviour from other debug intrinsics to `dbg.assign`s.
Reviewed By: scott.linder
Differential Revision: https://reviews.llvm.org/D141140
Guillaume Chatelet [Wed, 11 Jan 2023 16:34:43 +0000 (16:34 +0000)]
[NFC] Use TypeSize::getKnownMinValue() instead of TypeSize::getKnownMinSize()
This change is one of a series to implement the discussion from
https://reviews.llvm.org/D141134.
Joseph Huber [Tue, 10 Jan 2023 22:47:50 +0000 (16:47 -0600)]
[OpenMP] Adjust phases for AMDGPU offloading for OpenMP in save-temps mode
Currently, the behaviour of `-save-temps` changes the generated output
when offloading to AMDGPU. This is because we only have a single phase
and it contains the `-disable-llvm-passes` flags which results in
unoptimized bitcode. We need to make sure we generate another phase that
produces both the optimized and unoptimized bitcode. There used to be a
check that turned these phases into a no-op. But I believe it is more
correct to not generate them this way in the first place. Doing this
requires a bit of a hack, replacing an already generated phase action,
but it should be fine.
Reviewed By: JonChesterfield
Differential Revision: https://reviews.llvm.org/D141440
Joseph Huber [Fri, 6 Jan 2023 03:01:26 +0000 (21:01 -0600)]
[OpenMP] Add support for '--offload-arch=native' to OpenMP offloading
This patch adds support for '--offload-arch=native' to OpenMP
offloading. This will automatically generate the toolchains required to
fulfil whatever GPUs the user has installed. Getting this to work
requires a bit of a hack. The problem is that we need the ToolChain to
launch its searching program. But we do not yet have that ToolChain
built. I had to temporarily make the ToolChain and also add some logic
to ignore regular warnings & errors.
Depends on D141078
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D141105
Joseph Huber [Thu, 5 Jan 2023 18:42:41 +0000 (12:42 -0600)]
[CUDA][HIP] Support '--offload-arch=native' for the new driver
This patch applies the same handling for the `--offload-arch=native'
string to the new driver. The support for OpenMP will require some extra
logic to infer the triples from the derived architecture strings.
Depends on D141051
Reviewed By: tra
Differential Revision: https://reviews.llvm.org/D141078
Joseph Huber [Thu, 5 Jan 2023 04:18:41 +0000 (22:18 -0600)]
[CUDA][HIP] Add support for `--offload-arch=native` to CUDA and refactor
This patch adds basic support for `--offload-arch=native` to CUDA. This
is done using the `nvptx-arch` tool that was introduced previously. Some
of the logic for handling executing these tools was factored into a
common helper as well. This patch does not add support for OpenMP or the
"new" driver. That will be done later.
Reviewed By: yaxunl
Differential Revision: https://reviews.llvm.org/D141051
Guillaume Chatelet [Wed, 11 Jan 2023 16:25:52 +0000 (16:25 +0000)]
[NFC] Use TypeSize::getKnownMinValue() instead of TypeSize::getKnownMinSize()
This change is one of a series to implement the discussion from
https://reviews.llvm.org/D141134.
bixia1 [Tue, 10 Jan 2023 17:49:24 +0000 (09:49 -0800)]
[mlir][sparse] Improve the rewriting for dense-to-sparse conversion.
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D141335
Anshil Gandhi [Wed, 11 Jan 2023 15:59:21 +0000 (16:59 +0100)]
[InstCombine] Handle PHI nodes in isOnlyCopiedFromConstantMemory()
As long as the memcpy occurs on a phi input (rather than the phi
output), we can look through phi nodes in
isOnlyCopiedFromConstantMemory().
This is split out of D136201, to only handle the case where the
address spaces are the same, and no pointer rewrite is necessary.
Guillaume Chatelet [Wed, 11 Jan 2023 16:17:21 +0000 (16:17 +0000)]
[mlir][NFC] Use TypeSize::getFixedValue() instead of TypeSize::getFixedSize()
This change is one of a series to implement the discussion from
https://reviews.llvm.org/D141134.
Nikita Popov [Wed, 11 Jan 2023 16:17:46 +0000 (17:17 +0100)]
[InstCombine] Limit use walk in copied from constant fold
This fold currently performs an unbounded recursive use walk.
Make sure that we don't visit too many instructions (the limit is
chosen arbitrarily).
This is with an eye on also handling phi nodes, which will further
extend the considered use graph.
Nikita Popov [Wed, 11 Jan 2023 16:10:51 +0000 (17:10 +0100)]
[InstCombine] Add Visited set to isOnlyCopiedFromConstantMemory()
I don't think this matters right now (because InstCombine cleans
up unreachable code early), but this will help to make sure that
we don't infinite loop once we handle phi nodes. The added test
is an example where this would happen.
Matt Arsenault [Wed, 11 Jan 2023 14:57:21 +0000 (09:57 -0500)]
Revert "llvm-reduce: Try to kill parallel workitems once we have a result."
This reverts commit
4f575620d51032cf98424c9defafe4dfc8d66f45.
I realized the test wasn't very good and when fixed, shows the
reduction doesn't work correctly. Revert the change and keep the fixed
version of the test.
Guillaume Chatelet [Wed, 11 Jan 2023 15:54:34 +0000 (15:54 +0000)]
[clang][NFC] Use the TypeSize::getXXXValue() instead of TypeSize::getXXXSize)
This change is one of a series to implement the discussion from
https://reviews.llvm.org/D141134.
David Green [Wed, 11 Jan 2023 15:58:38 +0000 (15:58 +0000)]
[ARM] Don't treat arguments as producesFalseLanesZero
Invalid tail predicated loops could be formed by treating function
arguments as FalseLanesZero due to getGlobalReachingDefs not returning
any values. Make sure we check that the list of Defs is empty and if so
treat it like a unknown value.
Differential Revision: https://reviews.llvm.org/D141399
OCHyams [Wed, 11 Jan 2023 15:38:01 +0000 (15:38 +0000)]
[Assignment Tracking][Docs] Add new metadata to LangRef.rst
And link to the AssignmentTracking.md document which goes into more detail.
Reviewed By: jryans
Differential Revision: https://reviews.llvm.org/D141131