Johannes Doerfert [Wed, 14 Dec 2022 16:40:17 +0000 (08:40 -0800)]
[Attributor][FIX] Try to prevent a potential memory leak
We might not have registered an AA allocated via the bump allocator
and consequently not deallocated it properly.
Paul Robinson [Tue, 13 Dec 2022 16:52:31 +0000 (08:52 -0800)]
[Flang] Convert a test to check 'target=...'
Part of the project to eliminate special handling for triples in lit
expressions.
Differential Revision: https://reviews.llvm.org/D139967
LLVM GN Syncbot [Wed, 14 Dec 2022 16:17:52 +0000 (16:17 +0000)]
[gn build] Port
e356f681f6c4
zhijian [Wed, 14 Dec 2022 16:16:20 +0000 (11:16 -0500)]
[XCOFF] Decode the relocation entries of loader section of xcoff for llvm-readobj
Summary:
support decoding the relocation entries of loader section of xcoff for llvm-readobj
https://www.ibm.com/docs/en/aix/7.2?topic=formats-xcoff-object-file-format#XCOFF__vra3i31ejbau
Reviewers: James Henderson, Esme Yi
Differential Revision: https://reviews.llvm.org/D136787
Oleg Shyshkov [Wed, 14 Dec 2022 16:03:09 +0000 (17:03 +0100)]
[mlir] Fix bazel build for https://reviews.llvm.org/D139187.
Nikita Popov [Wed, 14 Dec 2022 15:50:30 +0000 (16:50 +0100)]
[Clang] Convert test to opaque pointers (NFC)
Required a lot of manual, but uninteresting, fixup.
Jay Foad [Wed, 14 Dec 2022 12:04:28 +0000 (12:04 +0000)]
[AMDGPU] Clean up SReg classes
Remove unused LO16 classes SReg_LO16_XM0_XEXEC, SReg_LO16_XEXEC_HI and
SReg_LO16_XM0.
Simplify the definition of SReg_32.
Add SReg_32_XEXEC and use it to improve SReg_1_XEXEC which previously
excluded M0 for no good reason.
Improve SReg_1 which previously excluded EXEC_HI for no good reason.
Differential Revision: https://reviews.llvm.org/D140012
Louis Dionne [Fri, 25 Nov 2022 19:20:04 +0000 (14:20 -0500)]
[libc++] Refactor .compile.fail.cpp tests for std::function
Some of those .compile.fail.cpp tests had become incorrect and they
were not testing anything. In general, .compile.fail.cpp tests are
bad because they make it way too easy to write garbage tests. Indeed,
the test could fail to compile due to any reason whatsoever (even a
typo) and it would appear to work correctly.
Differential Revision: https://reviews.llvm.org/D138731
Alan Zhao [Mon, 3 Oct 2022 17:46:46 +0000 (10:46 -0700)]
[clang][C++20] P0960R3 and P1975R0: Allow initializing aggregates from a parenthesized list of values
This patch implements P0960R3, which allows initialization of aggregates
via parentheses.
As an example:
```
struct S { int i, j; };
S s1(1, 1);
int arr1[2](1, 2);
```
This patch also implements P1975R0, which fixes the wording of P0960R3
for single-argument parenthesized lists so that statements like the
following are allowed:
```
S s2(1);
S s3 = static_cast<S>(1);
S s4 = (S)1;
int (&&arr2)[] = static_cast<int[]>(1);
int (&&arr3)[2] = static_cast<int[2]>(1);
```
This patch was originally authored by @0x59616e and completed by
@ayzhao.
Fixes #54040, Fixes #54041
Co-authored-by: Sheng <ox59616e@gmail.com>
Full write up : https://discourse.llvm.org/t/c-20-rfc-suggestion-desired-regarding-the-implementation-of-p0960r3/63744
Reviewed By: ilya-biryukov
Differential Revision: https://reviews.llvm.org/D129531
Benjamin Maxwell [Mon, 12 Dec 2022 16:26:20 +0000 (16:26 +0000)]
[TargetLowering] Teach DemandedBits about VSCALE
This allows DemandedBits to see the result of VSCALE will be at most
VScaleMax * some compile-time constant. This relies on the vscale_range()
attribute being present on the function, with a max set. (This is done by
default when clang is targeting AArch64+SVE).
Using this various redundant operations (zexts, sexts, ands, ors, etc)
can be eliminated.
Differential Revision: https://reviews.llvm.org/D138508
Guilherme Valarini [Mon, 7 Nov 2022 16:07:27 +0000 (13:07 -0300)]
[NFC][OpenMP] Add missing LLVM headers on utility file
Differential Revision: https://reviews.llvm.org/D137566
Nikita Popov [Wed, 14 Dec 2022 15:45:05 +0000 (16:45 +0100)]
[compiler-rt] Convert profile tests to opaque pointers (NFC)
Hui Xie [Fri, 4 Nov 2022 11:42:42 +0000 (11:42 +0000)]
[libc++] Implement `std::expected` P0323R12
Implement `std::expected` https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html
Added tests
Differential Revision: https://reviews.llvm.org/D124516
address comment
Momchil Velikov [Wed, 14 Dec 2022 14:55:59 +0000 (14:55 +0000)]
[FuncSpec] Global ranking of specialisations
The `FunctionSpecialization` pass chooses specializations among the
opportunities presented by a single function and its calls,
progressively penalizing subsequent specialization attempts by
artificially increasing the cost of a specialization, depending on how
many specialization were applied before. Thus the chosen
specializations are sensitive to the order the functions appear in the
module and may be worse than others, had those others been considered
earlier.
This patch makes the `FunctionSpecialization` pass rank the
specializations globally, i.e. choose the "best" specializations
among the all possible specializations in the module, for all
functions.
Since this involved quite a bit of redesign of the pass data
structures, this patch also carries:
* removal of duplicate specializations
* optimization of call sites update, by collecting per
specialization the list of call sites that can be directly
rewritten, without prior expensive check if the call constants and
their positions match those of the specialized function.
A bit of a write-up up about the FuncSpec data structures and
operation:
Each potential function specialisation is kept in a single vector
(`AllSpecs` in `FunctionSpecializer::run`). This vector is populated
by `FunctionSpecializer::findSpecializations`.
The `findSpecializations` member function has a local `DenseMap` to
eliminate duplicates - with each call to the current function,
`findSpecializations` builds a specialisation signature (`SpecSig`)
and looks it in the duplicates map. If the signature is present, the
function records the call to rewrite into the existing specialisation
instance. If the signature is absent, it means we have a new
specialisation instance - the function calculates the gain and creates
a new entry in `AllSpecs`. Negative gain specialisation are ignored at
this point, unless forced.
The potential specialisations for a function form a contiguous range
in the `AllSpecs` [1]. This range is recorded in `SpecMap SM`, so we
can quickly find all specialisations for a function.
Once we have all the potential specialisations with their gains we
need to choose the best ones, which fit in the module specialisation
budget. This is done by using a max-heap (`std::make_heap`,
`std::push_heap`, etc) to find the best `NSpec` specialisations with a
single traversal of the `AllSpecs` vector. The heap itself is
contained with a small vector (`BestSpecs`) of indices into
`AllSpecs`, since elements of `AllSpecs` are a bit too heavy to
shuffle around.
Next the chosen specialisation are performed, that is, functions
cloned, `SCCPSolver` primed, and known call sites updated.
Then we run the `SCCPSolver` to propagate constants in the cloned
functions, after which we walk the calls of the original functions to
update them to call the specialised functions.
---
[1] This range may contain specialisation that were discarded and is
not ordered in any way. One alternative design is to keep a vector
indices of all specialisations for this function (which would
initially be, `i`, `i+1`, `i+2`, etc) and later sort them by gain,
pushing non-applied ones to the back. This has the potential to speed
`updateCallSites` up.
Reviewed By: ChuanqiXu, labrinea
Differential Revision: https://reviews.llvm.org/D139346
Change-Id: I708851eb38f07c42066637085b833ca91b195998
Ingo Müller [Wed, 14 Dec 2022 15:16:06 +0000 (15:16 +0000)]
Allow inline of all pure ops from the LLVM dialect.
This allows to inline regions containing pure LLVM ops into their call
sites. (Note that this is not related to inlining of llvm.func but to
any the inlining of any Callable.) For now, we only allow the inlining
of Pure ops to be conservative but other ops may be considered inlinable
in the future.
Testing for purity of ops requires the C++ equivalent of the Pure trait
from SideEffectInterfaces.td, which this patch also provide. Its
implementation calls the C++ equivalents of the two traits that the Pure
trait is based on and, thus, has to be kept with the tablegen trait.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D139187
Matt Arsenault [Tue, 29 Nov 2022 18:24:58 +0000 (13:24 -0500)]
Support: Make Wait's SecondsToWait be std::optional [NFC]
I found the interaction between SecondsToWait and
WaitUntilChildTerminates confusing. Rather than have a boolean to
ignore the value of SecondsToWait, combine these into one Optional
parameter.
Matt Arsenault [Mon, 12 Dec 2022 02:48:41 +0000 (21:48 -0500)]
InstCombine: Add baseline tests for is.fpclass with fcmp
Roman Lebedev [Wed, 14 Dec 2022 14:52:35 +0000 (17:52 +0300)]
[NFC] Fixup checkline confusion
Carlo Bertolli [Wed, 14 Dec 2022 14:50:10 +0000 (08:50 -0600)]
[OpenMP] Add API for pinned memory
This patch adds API support for the atk_pinned trait for omp_alloc.
It does not implement kmp_target_lock_mem and kmp_target_unlock_mem in libomptarget,
but prepares libomp for it. Patches to libomptarget to implement
lock/unlock coming after this one.
Reviewed by: jlpeyton, jdoerfert
Differential Revision: https://reviews.llvm.org/D138933
Roman Lebedev [Wed, 14 Dec 2022 14:38:58 +0000 (17:38 +0300)]
[NFC][IndVar] Autogenerate checklines in one test
Nikita Popov [Wed, 14 Dec 2022 14:31:34 +0000 (15:31 +0100)]
[IndVarSimplify] Convert more tests to opaque pointers (NFC)
Nikita Popov [Wed, 14 Dec 2022 14:35:42 +0000 (15:35 +0100)]
[IndVarSimplify] Regenerate test checks (NFC)
Alexey Baturo [Tue, 5 Jul 2022 16:07:50 +0000 (19:07 +0300)]
[RISC-V][HWASAN] Enable HWASAN for RISC-V architecture
Reviewed by: vitalybuka, kito-cheng
These changes will allow to use HWASAN with RISCV64 architecture.
The majority of existing tests are passing with a few exceptions(see below).
The tests were running on QEMU, since currently there're no hardware with support
for J-extension.
For this feature to work the system must support PR_{SET,GET}_TAGGED_ADDR_CTRL
syscall. For now this is only available for a patched Linux kernel and QEMU with
enabled experimental J-extension.
Results of running HWASAN lit tests for RISC-V:
```
Unsupported : 6
Passed : 79
Expectedly Failed: 2
```
Tests are marked as expected to fail or unsupported either because of:
- android platform not being supported
- no support for legacy hwasan v1 mode
- test config explicitly uses aarch64 option
```
UNSUPPORTED: HWAddressSanitizer-riscv64 :: TestCases/abort-message-android.cpp
UNSUPPORTED: HWAddressSanitizer-riscv64 :: TestCases/cfi.cpp
UNSUPPORTED: HWAddressSanitizer-riscv64 :: TestCases/lto.c
UNSUPPORTED: HWAddressSanitizer-riscv64 :: TestCases/print-memory-usage-android.c
UNSUPPORTED: HWAddressSanitizer-riscv64 :: TestCases/register-dump-read.c
UNSUPPORTED: HWAddressSanitizer-riscv64 :: TestCases/try-catch.cpp
XFAIL: HWAddressSanitizer-riscv64 :: TestCases/stack-oob.c
XFAIL: HWAddressSanitizer-riscv64 :: TestCases/exported-tagged-global.c
```
Differential Revision: https://reviews.llvm.org/D131345
Nikita Popov [Wed, 14 Dec 2022 14:22:49 +0000 (15:22 +0100)]
[LoopVectorize] Convert some tests to opaque pointers (NFC)
For these tests update_test_checks.py had to be rerun.
Nicolas Vasilache [Wed, 14 Dec 2022 11:25:28 +0000 (03:25 -0800)]
[mlir][Linalg] Better builders for transform ops
Also adopt DenseI64ArrayAttr in those transform ops.
Differential Revision: https://reviews.llvm.org/D140009
Nikita Popov [Wed, 14 Dec 2022 14:15:18 +0000 (15:15 +0100)]
[LoopVectorize] Convert some tests to opaque pointers (NFC)
Nikita Popov [Wed, 14 Dec 2022 13:40:50 +0000 (14:40 +0100)]
[SimplifyCFG] Convert tests to opaque pointers (NFC)
Tim Northover [Tue, 13 Dec 2022 09:10:56 +0000 (09:10 +0000)]
LTO: always parse modules in opaque pointer mode.
Once an LLVMContext has been told it needs to track pointer types, it can no
longer be used to parse opaque modules. However, we are likely (at least for a
while) to have old LTO .o files in the SDK that need to interoperate with
just-generated ones, so deciding opaqueness based on the first module read
causes linker failures.
This makes the llvm-c LTO interface parse any object it sees in opaque mode,
even if type data is present, which guarantees compatibility.
Phoebe Wang [Wed, 14 Dec 2022 13:54:20 +0000 (21:54 +0800)]
[Docs] Added my office hours
Jay Foad [Mon, 12 Dec 2022 10:58:06 +0000 (10:58 +0000)]
[AMDGPU] Stop using make_pair and make_tuple. NFC.
C++17 allows us to call constructors pair and tuple instead of helper
functions make_pair and make_tuple.
Differential Revision: https://reviews.llvm.org/D139828
Alexey Baturo [Sun, 31 Jul 2022 10:41:49 +0000 (13:41 +0300)]
[RISC-V][HWASAN] Adjust lit test support for RISC-V HWASAN feature
Reviewed by: vitalybuka
Differential Revision: https://reviews.llvm.org/D131344
Matthias Springer [Wed, 14 Dec 2022 13:02:13 +0000 (14:02 +0100)]
[mlir][linalg] Add option to generate rank-reducing slices in DropUnitDims
This change extends the `ReplaceUnitExtents` pattern so that users can choose between of two strategies for generating rank reductions:
* CollapseShapeOp / ExpandShapeOp (was already implemented but code was cleaned up; default strategy)
* rank-reducing ExtractSliceOp / InsertSliceOp
Also add helper functions to the memref dialect that we already have on the tensor dialect: `getMixedSizes`, `createCanonicalRankReducingSubViewOp`, `rankReduceIfNeeded`.
We are using ReassociationIndices instead of ReassoicationExprs in many other places and this makes the code easier to read. Also adding a new test case (that also passed before).
Differential Revision: https://reviews.llvm.org/D139947
Ivan Butygin [Wed, 14 Dec 2022 12:50:44 +0000 (13:50 +0100)]
[mlir][gpu] Fix cuda integration tests
https://reviews.llvm.org/D138758 has added `uniform` flag to gpu reduce ops, update integration tests.
Differential Revision: https://reviews.llvm.org/D140014
Nikita Popov [Tue, 13 Dec 2022 10:58:06 +0000 (11:58 +0100)]
[Bitcode] Remove auto-detection for typed pointers
Always read bitcode according to the -opaque-pointers mode. Do not
perform auto-detection to implicitly switch to typed pointers.
This is a step towards removing typed pointer support, and also
eliminates the class of problems where linking may fail if a typed
pointer module is loaded before an opaque pointer module. (The
latest place where this was encountered is D139924, but this has
previously been fixed in other places doing bitcode linking as well.)
Differential Revision: https://reviews.llvm.org/D139940
Nikita Popov [Wed, 14 Dec 2022 12:35:09 +0000 (13:35 +0100)]
[CodeGenCUDASPIRV] Convert tests to opaque pointers (NFC)
Paul Robinson [Tue, 13 Dec 2022 16:53:07 +0000 (08:53 -0800)]
[Flang] Remove some incorrect UNSUPPORTED clauses
Differential Revision: https://reviews.llvm.org/D139968
Martin Storsjö [Wed, 14 Dec 2022 08:19:11 +0000 (10:19 +0200)]
[OpenMP] Add a missing dllexport for the new function __kmpc_fork_call_if
This new function was added in
b72f1ec9fbb14cd7d2f5112d2c52ef5cdd1aa94a,
but wasn't exported from the DLL on Windows.
This fixes the parallel/omp_parallel_if.c OpenMP testcase on
Windows.
Martin Storsjö [Tue, 13 Dec 2022 09:39:27 +0000 (11:39 +0200)]
[OpenMP] Fix detecting warning options for GCC
If testing for a warning option like -Wno-<foo> with GCC, GCC won't
print any diagnostic at all, leading to the options being accepted
incorrectly. However later, if compiling a file that actually prints
another warning, GCC will also print warnings about these -Wno-<foo>
options being unrecognized.
This avoids warning spam like this, for every OpenMP source file that
produces build warnings with GCC:
cc1plus: warning: unrecognized command line option ‘-Wno-int-to-void-pointer-cast’
cc1plus: warning: unrecognized command line option ‘-Wno-return-type-c-linkage’
cc1plus: warning: unrecognized command line option ‘-Wno-covered-switch-default’
cc1plus: warning: unrecognized command line option ‘-Wno-enum-constexpr-conversion’
This matches how such warning options are detected and added in
llvm/cmake/modules/HandleLLVMOptions.cmake, e.g. like this:
check_cxx_compiler_flag("-Wclass-memaccess" CXX_SUPPORTS_CLASS_MEMACCESS_FLAG)
append_if(CXX_SUPPORTS_CLASS_MEMACCESS_FLAG "-Wno-class-memaccess" CMAKE_CXX_FLAGS)
This also matches how LLDB warning options were restructured for
GCC compatibility in
e546bbfda0ab91cf78c096d8c035851cc7c3b9f3.
Differential Revision: https://reviews.llvm.org/D139922
Tim Northover [Mon, 20 Sep 2021 13:19:14 +0000 (14:19 +0100)]
AArch64: use CAS instead of LDXR/STXR if available
This covers 128-bit loads, and atomicrmw operations without a single native
instruction. Using CAS saves has a better chance of succeeding with high
contention on some systems.
Ivan Butygin [Sun, 27 Nov 2022 14:19:56 +0000 (15:19 +0100)]
[mlir][gpu] Add `uniform` flag to gpu reduction ops
Differential Revision: https://reviews.llvm.org/D138758
Nico Weber [Wed, 14 Dec 2022 12:14:29 +0000 (07:14 -0500)]
Revert "[lld-macho][test][nfc] Update stabs.s to use touch -d instead of -t"
This reverts commit
3c9f479a5e47d5f3de07ccac365589dd928bfd20.
Breaks tests on macOS, see e.g. https://reviews.llvm.org/D139980#3993989
Luke Lau [Wed, 14 Dec 2022 12:10:03 +0000 (12:10 +0000)]
[WebAssembly][NFC] Add ComplexPattern for loads
This refactors out the offset and address operand pattern matching into
a ComplexPattern, so that one pattern fragment can match the dynamic and
static (offset) addresses in all possible positions.
Split out from D139530, which also contained an improvement to global
address folding.
Differential Revision: https://reviews.llvm.org/D139631
Simon Pilgrim [Wed, 14 Dec 2022 12:10:59 +0000 (12:10 +0000)]
[X86] Don't fold scalar_to_vector(i64 C) -> vzext_movl(scalar_to_vector(i32 C))
Fixes constant-folding infinite loop reported by @uabelho on rG5ca77541446d
Danila Malyutin [Wed, 14 Dec 2022 10:31:15 +0000 (13:31 +0300)]
[InstCombine] return the result of the GEP of PHI transformation early
Without this change this function could return nullptr if no further
transformation took place making InstCombine pass incorrectly report no
IR changes preventing analyses invalidation.
Differential Revision: https://reviews.llvm.org/D140004
Nikita Popov [Wed, 14 Dec 2022 12:02:35 +0000 (13:02 +0100)]
[Linker] Convert test to opaque pointers (NFC)
To preserve test intent, remove a pointer indirection and use
a GEP instead of bitcast, so the type is still mentioned.
Florian Hahn [Wed, 14 Dec 2022 11:59:19 +0000 (11:59 +0000)]
[SCEV] Cache folded SExt SCEV expressions.
Use FoldID to cache SignExtendExprs that get folded to a different
SCEV.
Depends on D137505.
Reviewed By: mkazantsev
Differential Revision: https://reviews.llvm.org/D137849
Nikita Popov [Wed, 14 Dec 2022 11:57:59 +0000 (12:57 +0100)]
[Linker] Convert test to opaque pointers (NFC)
To preserve test intent, drop the pointer type.
Alexey Baturo [Wed, 10 Aug 2022 05:41:26 +0000 (08:41 +0300)]
re-land [RISC-V][HWASAN] Add support for HWASAN code instrumentation for RISC-V
now with the fixed warning and updated lit tests
---
[RISC-V][HWASAN] Add support for HWASAN code instrumentation for RISC-V
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D131575
Nikita Popov [Wed, 14 Dec 2022 11:48:21 +0000 (12:48 +0100)]
[Linker] Convert test to opaque pointers (NFC)
All the pointer-indirected cases are no longer relevant with
opaque pointers. To preserve at least some of the test intent,
switch to by value passing of the unnamed types. Otherwise we
wouldn't be testing anything at all.
Matthias Springer [Wed, 14 Dec 2022 11:26:29 +0000 (12:26 +0100)]
[mlir][tensor][bufferize] Improve bufferization of DimOp/RankOp
The tensor operands do not bufferize to a memory read.
Differential Revision: https://reviews.llvm.org/D140007
Matthias Springer [Wed, 14 Dec 2022 11:26:41 +0000 (12:26 +0100)]
[mlir][memref] Fold no-op subview(subview(x)) ops
Differential Revision: https://reviews.llvm.org/D140008
Nikita Popov [Wed, 14 Dec 2022 11:32:45 +0000 (12:32 +0100)]
[LTO] Convert tests to opaque pointers (NFC)
Simon Pilgrim [Wed, 14 Dec 2022 11:41:14 +0000 (11:41 +0000)]
[X86] lowerShuffleAsVTRUNC - bit shift the offset elements into place instead of shuffle
This helps avoid issues on non-BWI targets which can end up splitting the shuffles to 2 x 256-bit bitshifts of a smaller scalar width
Nikita Popov [Wed, 14 Dec 2022 11:29:44 +0000 (12:29 +0100)]
[llvm-link] Convert test to opaque pointers (NFC)
To preserve test intent, remove the pointer types and replace by
value types, otherwise this wouldn't be testing anything at all.
Ramkumar Ramachandra [Tue, 13 Dec 2022 16:27:50 +0000 (17:27 +0100)]
mlir/ods-gen: use bash from env in shell script
On macOS, hardcoding the path of bash leads to a failure in executing
update_core_linalg_named_ops.sh, due to an old version of bash being
present in that location.
Signed-off-by: Ramkumar Ramachandra <r@artagnon.com>
Differential Revision: https://reviews.llvm.org/D139942
Quentin Colombet [Mon, 12 Dec 2022 13:36:39 +0000 (13:36 +0000)]
[mlir][NFC] Make test-lower-to-llvm a named pipeline
This patch changes the `test-lower-to-llvm` pass into a named pipeline.
The functionality is unchanged but thanks to this change, we don't have
to pull the dependencies of all the passes that this pass calls.
In other words, `TestLowerToLLVMPass::getDependDialects` was supposed to
transitively declare all the dialects that were used in the union of all
the invoked passes.
NFC
Differential Revision: https://reviews.llvm.org/D139840
Nikita Popov [Wed, 14 Dec 2022 11:01:30 +0000 (12:01 +0100)]
Revert "[InstCombine] Handle logical op in simplifyRangeCheck() (PR59484)"
This reverts commit
492c471839a66e354ebe696bd3e15f7477c63613.
As pointed out by nloped, the transform in f2 is not correct: If
%shr is poison, then freeze may result in a negative value. The
transform is correct in the case where the freeze is pushed through
the operation in a way that guarantees the result is non-negative,
which is the case I had tested.
Simon Pilgrim [Tue, 13 Dec 2022 17:48:39 +0000 (17:48 +0000)]
[X86] lowerShuffleAsVTRUNC - improve detection of cheap/free vector concatenation
Handle the case where the lo/hi subvectors are a split load.
Peter Waller [Thu, 8 Dec 2022 12:00:35 +0000 (12:00 +0000)]
[AArch64][SVE][ISel] Combine dup of load to replicating load
(dup (load) z_or_x_passthrough) => (replicating load)
Differential Revision: https://reviews.llvm.org/D139637
Krasimir Georgiev [Wed, 14 Dec 2022 10:25:54 +0000 (10:25 +0000)]
[bazel] add some more deps to libc BUILD files
Fangrui Song [Wed, 14 Dec 2022 10:24:52 +0000 (10:24 +0000)]
[llvm-readobj] llvm::Optional => std::optional
Temporarily add expectedToStdOptional to llvm/Support/Error.h for migration.
Fangrui Song [Wed, 14 Dec 2022 10:18:07 +0000 (10:18 +0000)]
[ExecutionEngine] llvm::Optional => std::optional
Krasimir Georgiev [Wed, 14 Dec 2022 10:16:17 +0000 (10:16 +0000)]
[bazel] Add __support_common dep
Fangrui Song [Wed, 14 Dec 2022 10:07:47 +0000 (10:07 +0000)]
[FileCheck] llvm::Optional => std::optional
Haojian Wu [Wed, 14 Dec 2022 09:45:56 +0000 (10:45 +0100)]
[include-cleaner] Print the line number of removal #includes.
I found that this information is helpful when using this tool.
Reviewed By: kadircet
Differential Revision: https://reviews.llvm.org/D139715
Tobias Gysi [Wed, 14 Dec 2022 09:44:11 +0000 (10:44 +0100)]
[mlir][llvm] Add inbounds attriubte to the gep op.
The revision adds an inbounds attribute to the LLVM dialect
GEP operation. It extends the builders and the import and export
to support the optional inbounds attribute.
As all builders set inbounds to false by default, existing lowerings
from higher-level dialects to LLVM dialect are not affected by the
change. Canonicalization/folding remains untouched since it currently
does not implement any simplifications in case of undefined behavior
(the handling of undefined behavior is deferred to LLVM).
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D139821
Haojian Wu [Tue, 13 Dec 2022 12:38:36 +0000 (13:38 +0100)]
[clangd] Correct the local variable names to match the code style, NFC
Tobias Gysi [Wed, 14 Dec 2022 09:27:01 +0000 (10:27 +0100)]
[mlir][llvm] Fix bug in the LLVM IR constant import.
The recently introduced iterative constant import
(https://reviews.llvm.org/D137559) fails for programs that
subsequently import constant expressions with duplicate
subexpressions. The reason is a broken duplicate check
in getConstantsToConvert. The revision fixes the bug and
adds a test case that imports two constant expressions
with duplicates.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D139918
David Green [Wed, 14 Dec 2022 09:24:54 +0000 (09:24 +0000)]
[AArch64][SVE] Add hadd and rhadd support
This adds basic HADD and RHADD support for SVE, by marking the AVGFLOOR
and AVGCEIL as custom and converting those to HADD_PRED/RHADD_PRED
AArch64 nodes. Both the existing intrinsics and the _PRED nodes are then
lowered to the _ZPmZ instructions.
Differential Revision: https://reviews.llvm.org/D131875
Krasimir Georgiev [Wed, 14 Dec 2022 08:41:51 +0000 (08:41 +0000)]
Revert "Implement CWG2631"
This reverts commit
f1f1b60c7ba607e9ffe3bc012161d43ef95ac773.
Temporary revert, possibly triggers a new assertion failure on
QualType::getCommonPtr.
We're working on a reproducer, to follow-up on
https://reviews.llvm.org/D136554.
Balázs Kéri [Wed, 14 Dec 2022 08:25:06 +0000 (09:25 +0100)]
[clang][analyzer] No new nodes when bug is detected in StdLibraryFunctionsChecker.
The checker applies constraints in a sequence and adds new nodes for these states.
If a constraint violation is found this sequence should be stopped with a sink
(error) node. Instead the `generateErrorNode` did add a new error node as a new
branch that is parallel to the other node sequence, the other branch was not
stopped and analysis was continuing on that invalid branch.
To add an error node after any previous node a new version of `generateErrorNode`
is needed, this function is added here and used by `StdLibraryFunctionsChecker`.
The added test executes a situation where the checker adds a number of
constraints before it finds a constraint violation.
Reviewed By: NoQ
Differential Revision: https://reviews.llvm.org/D137722
Dmitrii Petrov [Wed, 14 Dec 2022 08:12:23 +0000 (11:12 +0300)]
[RISCV] Add Syntacore SCR1 CPU model
SCR1 is available at https://github.com/syntacore/scr1
'syntacore-scr1-base' corresponds to SCR1_CFG_RV32IC_BASE,
'syntacore-scr1-max' corresponds to SCR1_CFG_RV32IMC_MAX.
SCR1_CFG_RV32EC_MIN is RV32EC, which is currently unsupported.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D139302
Kazu Hirata [Wed, 14 Dec 2022 08:39:45 +0000 (00:39 -0800)]
[Bitcode] Use std::nullopt_t instead of NoneType (NFC)
This is part of an effort to migrate from llvm::Optional to
std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Kazu Hirata [Wed, 14 Dec 2022 08:32:06 +0000 (00:32 -0800)]
[llvm-pdbutil] Update #includes (NFC)
The header file uses std::optional, but it's realying a transitive
inclusion of <optional>. Meanwhile, it no longer uses llvm::Optional.
Fangrui Song [Wed, 14 Dec 2022 08:24:22 +0000 (08:24 +0000)]
[libunwind] Use .irp directives. NFC
The repeated instructions make the file long and difficult to read.
Simplify them with .irp directives.
Skip PowerPC since AIX assembler doesn't support .irp
Reviewed By: #libunwind, compnerd
Differential Revision: https://reviews.llvm.org/D139368
Fangrui Song [Wed, 14 Dec 2022 08:01:04 +0000 (08:01 +0000)]
[tools] llvm::Optional => std::optional
Fangrui Song [Wed, 14 Dec 2022 07:32:24 +0000 (07:32 +0000)]
[Analysis] llvm::Optional => std::optional
Johannes Doerfert [Wed, 14 Dec 2022 06:57:55 +0000 (22:57 -0800)]
[Attributor][FIX] Avoid memory leakage through InstExclusionSet
Johannes Doerfert [Wed, 14 Dec 2022 06:00:15 +0000 (22:00 -0800)]
[OpenMP][FIX] Restrict more unsound assmptions about threading
Even if all loads and stores are in `nosync` functions we cannot
guarantee there is no synchronization going on between them. As such, we
cannot use CFG reasoning. We could check the entire module, or, what
happens now to minimize test churn, is to check if all accesses are in
the same function that is `nosync`. A follow up will undo some of the
regressions where possible.
Similarly, reachability cannot be used to exclude an access if the
access is not known to be executed by the same thread as the given
instruction.
The OpenMP-opt test was added for the latter problem.
Fangrui Song [Wed, 14 Dec 2022 06:48:20 +0000 (06:48 +0000)]
Fangrui Song [Wed, 14 Dec 2022 06:42:34 +0000 (06:42 +0000)]
[clang] Remove uses of ::testing::Matcher<const Optional<T> &>
Change a few functions (getCheckTraversalKind, some clang/Tooling/ API, etc)
from llvm::Optional to std::optional.
Fangrui Song [Wed, 14 Dec 2022 06:35:39 +0000 (06:35 +0000)]
[Testing/Support] llvm::Optional => std::optional
SupportHelpers.h supports both for now to ease migration.
Tue Ly [Wed, 7 Dec 2022 16:53:18 +0000 (11:53 -0500)]
[libc] Implement a high-precision floating point class.
Implement a high-precision floating point class using UInt<> as its
mantissa. This will be used in accurate pass for double precision math
functions.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D136799
Vasileios Porpodas [Wed, 14 Dec 2022 04:24:16 +0000 (20:24 -0800)]
[NFC] Cleanup: Replace BB->getInstList().erase() with I->eraseFromParent().
This is part of a series of patches that aim at making BasicBlock::getInstList() private.
Differential Revision: https://reviews.llvm.org/D139992
Johannes Doerfert [Wed, 14 Dec 2022 04:53:08 +0000 (20:53 -0800)]
[OpenMP][NFC] Remove more unused code, eliminate warning
Peter Rong [Mon, 12 Dec 2022 23:35:54 +0000 (15:35 -0800)]
[FuzzMutate] InstModStrategy: switch nsw/nuw/inbount instead of repeated setting it
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D139890
Slava Zakharin [Tue, 13 Dec 2022 17:51:40 +0000 (09:51 -0800)]
[mlir][math] Added arith::FastMathAttr support for math::FPowI.
Differential Revision: https://reviews.llvm.org/D139805
Johannes Doerfert [Mon, 12 Dec 2022 23:17:27 +0000 (15:17 -0800)]
[Attributor] Introduce AA[Intra/Inter]Reachability
We had two AAs for reachability but it was very cumbersome to extend
them. We also had some fallback to use LLVM-core mechanisms and cache
the result. The new design shares the query code and interface nicely
between AAIntraFnReachability and AAInterFnReachability.
As part of the rewrite we also added the ExclusionSet to the queries.
Johannes Doerfert [Wed, 14 Dec 2022 03:36:45 +0000 (19:36 -0800)]
[OpenMP][FIX] Remove accidental and somewhat random change
Chuanqi Xu [Wed, 14 Dec 2022 03:28:06 +0000 (11:28 +0800)]
[NFC] [C++20] [Modules] Add more lambda tests
Add more lambda tests in modules. This is useful when we started to work
on https://github.com/llvm/llvm-project/issues/57222.
Tulio Magno Quites Machado Filho [Wed, 14 Dec 2022 02:59:20 +0000 (10:59 +0800)]
Warn about unsupported ibmlongdouble
When -mabi=ieeelongdouble is enabled by default, libc++ does not support
-mabi=ibmlongdouble.
Reviewed By: qiucf
Differential Revision: https://reviews.llvm.org/D139450
Johannes Doerfert [Tue, 13 Dec 2022 22:35:50 +0000 (14:35 -0800)]
[OpenMP][FIX] Remove unsound reasoning about written to values
Even if a value is for sure written we need to visit the call sites as
they might end up inside the function that reads and writes the value.
In a follow up we can introduce correct reasoning to avoid the backwards
traversal in this case and instead check if any call site between the
write and the read might reach a potential write we want to exclude.
Johannes Doerfert [Tue, 13 Dec 2022 19:11:55 +0000 (11:11 -0800)]
[NFC] Rerun update test checks on Attributor and OpenMP-Opt tests
Johannes Doerfert [Tue, 13 Dec 2022 18:11:18 +0000 (10:11 -0800)]
[OpenMP][NFCI] Remove effectively dead code in clang and the runtime
Differential Revision: https://reviews.llvm.org/D136903
jacquesguan [Mon, 12 Dec 2022 08:58:04 +0000 (16:58 +0800)]
[mlir][Vector] Use llvm::zip to avoid assertion failed.
This patch fixes the issue https://github.com/llvm/llvm-project/issues/59455.
We could omit the un-changed dimensions in offsets and sizes, so llvm::zip_equal would fail in this case.
Reviewed By: Mogball
Differential Revision: https://reviews.llvm.org/D139815
Mike Urbach [Wed, 7 Dec 2022 02:30:56 +0000 (19:30 -0700)]
[mlir][Python] Add a simple PyOpOperand iterator for PyValue uses.
This adds a simple PyOpOperand based on MlirOpOperand, which can has
properties for the owner op and operation number.
This also adds a PyOpOperandIterator that defines methods for __iter__
and __next__ so PyOpOperands can be iterated over using the the
MlirOpOperand C API.
Finally, a uses psuedo-container is added to PyValue so the uses can
generically be iterated.
Depends on D139596
Reviewed By: stellaraccident, jdd
Differential Revision: https://reviews.llvm.org/D139597
gonglingqin [Wed, 14 Dec 2022 01:54:26 +0000 (09:54 +0800)]
[OpenMP][Test] Make the output error message consistent with the comment
Modify the error message output of affinity/kmp-affinity.c and
affinity/omp-places.c.
Differential Revision: https://reviews.llvm.org/D139803
Jon Chesterfield [Wed, 14 Dec 2022 02:02:58 +0000 (02:02 +0000)]
[openmp][amdgpu] Let fine grain and kernarg pools differ
Yeting Kuo [Tue, 13 Dec 2022 09:41:46 +0000 (17:41 +0800)]
[VP][RISCV] Add vp.ctpop and RISC-V support.
The patch also adds expandVPCTPOP in TargetLowering to expand VP_CTPOP nodes.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D139920
Rob Suderman [Wed, 14 Dec 2022 01:19:04 +0000 (17:19 -0800)]
[mlir][tosa] Fix padding for tosa.conv2d and tosa.depthwise_conv2d decomposition
Decomposition did not take padding into account when decomposing into fully
connected operation.
Reviewed By: NatashaKnk
Differential Revision: https://reviews.llvm.org/D139500