Jan Svoboda [Thu, 25 May 2023 21:02:32 +0000 (14:02 -0700)]
[clang][lex] NFCI: Use DirectoryEntryRef in ModuleMap::inferFrameworkModule()
This patch changes the argument type of `ModuleMap::inferFrameworkModule()` from `const DirectoryEntry *` to `DirectoryEntryRef` in order to remove the deprecated uses of `DirectoryEntry::getName()`.
Depends on D127647.
Reviewed By: bnbarham
Differential Revision: https://reviews.llvm.org/D127648
Jan Svoboda [Thu, 25 May 2023 19:38:45 +0000 (12:38 -0700)]
[clang][lex] NFCI: Use FileEntryRef in ModuleMap::{load,lookup}ModuleMap()
This patch changes the return/argument types of `ModuleMap::{load,lookup}ModuleMap()` from `const FileEntry *` to `FileEntryRef` in order to remove uses of the deprecated `DirectoryEntry::getName()`.
Reviewed By: bnbarham
Differential Revision: https://reviews.llvm.org/D127647
Alex Langford [Fri, 26 May 2023 23:36:13 +0000 (16:36 -0700)]
[lldb][NFCI] Remove use of ConstString from StructuredDataDarwinLog static functions
The strings "DarwinLog" and "log" probably do not need to be in the
ConstString StringPool. We still create ConstStrings from them in some
places (for now) but that's because we don't have an implicit
constructor to convert a StringRef to a ConstString.
Differential Revision: https://reviews.llvm.org/D151599
Nitin John Raj [Tue, 30 May 2023 19:54:24 +0000 (12:54 -0700)]
[RISCV][GlobalISel] Add lowerFormalArguments for calling convention
This patch adds an IncomingValueHandler and IncomingValueAssigner, and implements minimal support for lowering formal arguments according to the RISC-V calling convention. Simple non-aggregate integer and pointer types are supported.
In the future, we must correctly handle byval and sret pointer arguments, and instances where the number of arguments exceeds the number of registers.
Coauthored By: lewis-revill
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D74977
Alex Langford [Fri, 26 May 2023 01:19:46 +0000 (18:19 -0700)]
[lldb][NFCI] Change type of SBDebugger::m_instance_name
This doesn't need to be in the ConstString StringPool. There's little
benefit to having these be unique, and we don't need fast comparisons on
them.
Differential Revision: https://reviews.llvm.org/D151524
Peiming Liu [Tue, 30 May 2023 19:00:53 +0000 (19:00 +0000)]
[mlir][sparse] fix a crash when generating sparse convolution with nchw input
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D151744
Kazu Hirata [Tue, 30 May 2023 20:16:15 +0000 (13:16 -0700)]
[Driver] Remove unused class ForceSuccessCommand
The last use was removed by:
commit
6625680a581c5e29c53d9f58d864cc6cd3cd05f6
Author: Hans Wennborg <hans@chromium.org>
Date: Tue Feb 2 14:10:26 2021 +0100
Differential Revision: https://reviews.llvm.org/D151609
Alex Langford [Sat, 27 May 2023 01:26:49 +0000 (18:26 -0700)]
[lldb][NFCI] Refactor Language::GetFormatterPrefixSuffix
- Remove unused parameter `valobj` (I checked downstream, not
even swift is using it).
- Return a std::pair<StringRef, StringRef> insted of having 2 out
parameter strings.
- Remove the use of ConstStrings.
This change was primarily mechanical except in
`ObjCLanguage::GetFormatterPrefixSuffix`. To keep this fast, we
construct an llvm::StringMap<std::pair<StringRef, StringRef>> so that we
can look things up quickly. There is some amount of cost to setting up
the map the first time it is called, but subsequent lookups should be
as fast as a hash + string comparison (the cost of looking up something
in an llvm::StringMap).
Differential Revision: https://reviews.llvm.org/D151603
Louis Dionne [Thu, 18 May 2023 21:16:24 +0000 (14:16 -0700)]
[libc++][ci] Use ccache in the jobs that build Clang
This is an attempt to reduce the time taken by the Bootstrapping
build job and the Clang CI job that builds the compiler from scratch.
Differential Revision: https://reviews.llvm.org/D150908
Florian Hahn [Tue, 30 May 2023 20:08:37 +0000 (21:08 +0100)]
[ConstraintElim] Add additional tests for and implication handling.
Martin Storsjö [Mon, 29 May 2023 20:08:56 +0000 (20:08 +0000)]
[clang] [test] Narrow down an MSVC specific behaviour to only not covever MinGW
This uses the same logic as in
c2b256a990590dc8b69930259650cfeb085add03;
we can't check defined(_MSC_VER) invoked as %clang_cc1, therefore
check for !defined(__MINGW32__) instead.
This fixes the same issue in a new testcase that was added after this
issue was fixed last time in
c2b256a990590dc8b69930259650cfeb085add03.
Differential Revision: https://reviews.llvm.org/D151661
Fangrui Song [Tue, 30 May 2023 19:45:21 +0000 (12:45 -0700)]
[Driver] Report error for unsupported -mlarge-endian/-mlittle-endian
Petr Hosek [Tue, 30 May 2023 19:28:14 +0000 (19:28 +0000)]
Revert "[BOLT][CMake] Use LLVM macros for install targets"
This reverts commit
627d5e16127bd8034b893e66ab0c86eacf2d939a.
Petr Hosek [Fri, 26 May 2023 22:11:24 +0000 (22:11 +0000)]
[BOLT][CMake] Use LLVM macros for install targets
The existing BOLT install targets are broken on Windows becase they
don't properly handle output extension. Rather than reimplementing
this logic in BOLT, reuse the existing LLVM macros which already
handle this aspect correctly.
Differential Revision: https://reviews.llvm.org/D151595
Alex Brachet [Tue, 30 May 2023 18:21:36 +0000 (18:21 +0000)]
[clang-tidy][docs] Fix link to libc style guide
Differential Revision: https://reviews.llvm.org/D151502
Fangrui Song [Tue, 30 May 2023 18:21:17 +0000 (11:21 -0700)]
[Driver] Add ClangFlags::TargetSpecific to simplify err_drv_unsupported_opt_for_target processing
clang/lib/Driver/ToolChains/Clang.cpp has a lot of fragments like the following:
```
if (const Arg *A = Args.getLastArg(...)) {
if (Triple is xxx)
A->render(Args, CmdArgs);
else
D.Diag(diag::err_drv_unsupported_opt_for_target) << ...;
}
```
The problem is more apparent with a recent surge of AIX-specific options.
Introduce the TargetSpecific flag so that we can move the target-specific
options to ToolChains/*.cpp and ToolChains/Arch/*.cpp and overload the
warn_drv_unused_argument mechanism to give an err_drv_unsupported_opt_for_target
error.
Migrate -march=/-mcpu= and some AIX-specific options to use this simplified pattern.
Reviewed By: jansvoboda11
Differential Revision: https://reviews.llvm.org/D151590
Alex Brachet [Tue, 30 May 2023 18:19:00 +0000 (18:19 +0000)]
[compiler-rt][bultins] Fix libatomic standalone build
Differential Revision: https://reviews.llvm.org/D151679
Tue Ly [Tue, 30 May 2023 03:08:20 +0000 (23:08 -0400)]
[libc][RISCV] Add log, log2, log1p, log10 for RISC-V64 entrypoints.
Add log, log2, log1p, log10 RISCV64 entrypoints.
Reviewed By: michaelrj, sivachandra
Differential Revision: https://reviews.llvm.org/D151674
LLVM GN Syncbot [Tue, 30 May 2023 18:02:40 +0000 (18:02 +0000)]
[gn build] Port
06ff9770477d
Erick Velez [Tue, 30 May 2023 17:58:13 +0000 (18:58 +0100)]
[clang][ExtractAPI] Refactor serializer to the CRTP
Refactor SerializerBase and SymbolGraphSerializer to use a visitor pattern described by the CRTP.
Reviewed By: dang
Differential Revision: https://reviews.llvm.org/D151477
Fangrui Song [Tue, 30 May 2023 17:58:06 +0000 (10:58 -0700)]
[Driver][test] Properly test -mdefault-visibility-export-mapping=
Mats Petersson [Mon, 22 May 2023 14:48:01 +0000 (15:48 +0100)]
[FLANG] Support all arrays for LoopVersioning
This patch makes more than 2D arrays work, with a fix for the way that
loop index is calculated. Removing the restriction of number of
dimensions.
This also changes the way that the actual index is calculated, such that
the stride is used rather than the extent of the previous dimension. Some
tests failed without fixing this - this was likely a latent bug in the
2D version too, but found in a test using 3D arrays, so wouldn't
have been found with 2D only. This introduces a division on the index
calculation - however it should be a nice and constant value allowing
a shift to be used to actually divide - or otherwise removed by using
other methods to calculate the result. In analysing code generated with
optimisation at -O3, there are no divides produced.
Some minor refactoring to avoid repeatedly asking for the "rank" of the
array being worked on.
This improves some of the SPEC-2017 ROMS code, in the same way as the
limited 2D array improvements - less overhead spent calculating array
indices in the inner-most loop and better use of vector-instructions.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D151140
Philip Reames [Tue, 30 May 2023 17:49:28 +0000 (10:49 -0700)]
[RISCV] Add additional vslide1up test coverage
Add another form of the same pattern (as_rotate tests), and add coverage for a couple corner cases I got wrong at first in an upcoming rewrite.
Deniz Evrenci [Tue, 30 May 2023 16:48:28 +0000 (16:48 +0000)]
[clang-tidy] Do not emit bugprone-exception-escape warnings from coroutines
All exceptions thrown in coroutine bodies are caught and
unhandled_exception member of the coroutine promise type is called.
In accordance with the existing rules of diagnostics related to
exceptions thrown in functions marked noexcept, even if the promise
type's constructor, get_return_object, or unhandled_exception
throws, diagnostics should not be emitted.
Fixes #61905.
Reviewed By: PiotrZSL, ChuanqiXu
Differential Revision: https://reviews.llvm.org/D147417
Artem Belevich [Thu, 25 May 2023 21:17:32 +0000 (14:17 -0700)]
[CUDA] correctly install cuda_wrappers/bits/shared_ptr_base.h
The file must go under cuda_wrappers/bits/ directly, but was by mistake copied
directly into cuda_wrappers/ during installation.
Differential Revision: https://reviews.llvm.org/D151503
Mehdi Amini [Tue, 30 May 2023 17:38:16 +0000 (10:38 -0700)]
Re-enable MLIR test-contraction.mlir integration test after LLVM backend crash was fixed
Philip Reames [Tue, 30 May 2023 17:32:24 +0000 (10:32 -0700)]
[RISCV] Rename vslide1down tests (should have been part of 24172de)
Philip Reames [Tue, 30 May 2023 17:21:15 +0000 (10:21 -0700)]
[RISCV] Add tests for vslide1down shuffle/insert idiom
Paul Robinson [Tue, 30 May 2023 17:13:46 +0000 (10:13 -0700)]
[Headers][doc] Add add/sub/mul intrinsic descriptions to avx2intrin.h
Differential Revision: https://reviews.llvm.org/D150114
Ben Hamilton [Fri, 26 May 2023 18:44:21 +0000 (12:44 -0600)]
[Format/ObjC] Support NS_ASSUME_NONNULL_BEGIN and FOUNDATION_EXPORT in ObjC language guesser
This adds to the ObjC language guesser a few more common macros used
in ObjC headers. These can help distinguish ObjC headers which
otherwise lack ObjC types from C++ headers.
Contributed by danblakemore.
Tested: New tests included. Ran unit tests with:
```
% cmake -S llvm -B build -G Ninja && \
ninja -C build FormatTests && \
./build/tools/clang/unittests/Format/FormatTests --gtest_filter="*FormatTestObjC*"
(snip)
[----------] 24 tests from FormatTestObjC (265 ms total)
[----------] Global test environment tear-down
[==========] 26 tests from 2 test suites ran. (270 ms total)
[ PASSED ] 26 tests.
```
Reviewed By: MyDeveloperDay
Differential Revision: https://reviews.llvm.org/D151578
Peter Steinfeld [Tue, 30 May 2023 14:48:51 +0000 (07:48 -0700)]
[flang] [NFC] Remove an unneeded include.
The title says it all.
Differential Revision: https://reviews.llvm.org/D151712
Craig Topper [Tue, 30 May 2023 17:07:14 +0000 (10:07 -0700)]
[RISCV] Add copyright header to IntrinsicsRISCVXTHead.td and IntrinsicsRISCVXsf.td. NFC
max [Tue, 30 May 2023 15:46:55 +0000 (10:46 -0500)]
[MLIR][CAPI] Move `DenseMapInfo<MlirTypeID>`
I mistakenly put this in `mlir/CAPI/Support.h` at some point during the flurry of refactoring of `TypeCaster`s but as @jpienaar rightly pointed out, it doesn't belong there.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D151669
Mark de Wever [Sat, 27 May 2023 14:52:37 +0000 (16:52 +0200)]
[libc++][format] Fixes year formatter on Windows.
Windows' libc, like some other libc implementations do not work as
specified for %Y and %y. This uses the fixes used for other libc
implementations.
The work was part of D150593.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D151612
Mark de Wever [Thu, 25 May 2023 18:02:50 +0000 (20:02 +0200)]
[libc++] Deprecate the classes in strstream.
These have been deprecated since their initial version in libc++. It
seems they were never properly marked as deprecated.
Discovered while working on D151223.
Reviewed By: #libc, ldionne, philnik
Differential Revision: https://reviews.llvm.org/D151474
Marco Elver [Tue, 30 May 2023 16:52:16 +0000 (18:52 +0200)]
Fix "[compiler-rt] Refactor memintrinsic interceptors"
Fix the Fuchsia build. asan_interceptors_memintrinsics.cpp should not
include any interceptors on Fuchsia.
Reported-by: haowei
Link: https://logs.chromium.org/logs/fuchsia/buildbucket/cr-buildbucket/8779679021892159153/+/u/clang/build/stdout
Craig Topper [Tue, 30 May 2023 16:51:49 +0000 (09:51 -0700)]
[RISCV] Correct capitalization of SiFive in a comment. NFC
David Green [Tue, 30 May 2023 16:45:16 +0000 (17:45 +0100)]
[AArch64] Add i1 insert/extract cost tests. NFC
See D151189. The existing files check lines have also been adjusted whilst
here.
Mark de Wever [Thu, 25 May 2023 19:38:07 +0000 (21:38 +0200)]
[libc++][CI] Installs libomp.
This is needed to build clang-tidy plugins using clang-tidy 17.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D151488
Dmitri Gribenko [Tue, 30 May 2023 16:23:11 +0000 (18:23 +0200)]
[clang][analyzer][NFC] Replace dyn_cast with cast in MemRegion::getMemorySpace
MemRegion::getMemorySpace() is annotated with
LLVM_ATTRIBUTE_RETURNS_NONNULL (which triggers instant UB if a null
pointer is returned), and callers indeed don't check the return value
for null. Thus, even though llvm::dyn_cast is called, it can never
return null in this context. Therefore, we can safely call llvm::cast.
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D151727
Dmitri Gribenko [Tue, 30 May 2023 16:17:10 +0000 (18:17 +0200)]
[clang][analyzer][NFC] Move dyn_cast's into if statements for readability
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D151725
Simon Pilgrim [Tue, 30 May 2023 16:21:44 +0000 (17:21 +0100)]
[X86] Regenerate sqrt-fastmath-mir.ll
Adrian Prantl [Tue, 30 May 2023 16:21:16 +0000 (09:21 -0700)]
Mark header as textual
Igor Kirillov [Wed, 19 Apr 2023 10:11:33 +0000 (10:11 +0000)]
[CodeGen] Refactor IR generation functions to use IRBuilder in ComplexDeinterleaving pass
This patch updates several functions in LLVM's IR generation code to accept
an IRBuilder object as an argument, rather than an Instruction that indicates
the insertion point for new instructions.
This change is necessary to handle sophisticated -Ofast optimization cases
from D148558 where it's unclear which instructions should be used as the
insertion point for new operations.
Differential Revision: https://reviews.llvm.org/D148703
Dmitri Gribenko [Tue, 30 May 2023 16:10:58 +0000 (18:10 +0200)]
[clang][analyzer][NFC] Remove unnecessary FALLTHROUGH markers
They are redundant with the [[fallthrough]]; attribute that follows.
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D151723
Dmitri Gribenko [Tue, 30 May 2023 16:02:10 +0000 (18:02 +0200)]
[clang][analyzer][NFC] Remove unnecessary casts around Allocate function calls
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D151726
Alex Zinenko [Tue, 30 May 2023 15:58:45 +0000 (15:58 +0000)]
[mlir] silence msvc warning
Lukas Sommer [Tue, 30 May 2023 15:45:54 +0000 (15:45 +0000)]
[mlir][llvm] Add LLVM TargetExtType
Add support for the `llvm::TargetExtType` to the MLIR LLVM dialect.
Target extension types were introduced to represent target-specific types, which are opaque to the compiler and optimizations.
The patch also enforces some of the constraints defined for the target extension type in the LLVM language reference manual.
Signed-off-by: Lukas Sommer <lukas.sommer@codeplay.com>
Reviewed By: ftynse, gysit, Dinistro
Differential Revision: https://reviews.llvm.org/D151446
Quinn Dawkins [Tue, 30 May 2023 06:18:32 +0000 (02:18 -0400)]
[mlir][transform] Add op for adding attributes to payload IR
The ability to add attributes to payload IR is useful functionality
independent of any dialect. This is added here through `transform.annotate`
by enabling attributes tied to a `TransformParamTypeInterface` (which
internally refers to an Attribute) to be added to a target operation by
name.
The AnnotateOp does not produce a new handle as no existing handles
should be affected by adding an attribute. Existing attributes on
the payload with the same name will be overwritten.
Differential Revision: https://reviews.llvm.org/D151689
Florian Hahn [Tue, 30 May 2023 15:42:55 +0000 (16:42 +0100)]
[LV] Use Legal::isUniform to detect uniform pointers.
Update collectLoopUniforms to identify uniform pointers using
Legal::isUniform. This is more powerful and brings pointer
classification here in sync with setCostBasedWideningDecision
which uses isUniformMemOp. The existing mis-match in reasoning
can causes crashes due to D134460, which is fixed by this patch.
Fixes https://github.com/llvm/llvm-project/issues/60831.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D150991
Nikolas Klauser [Tue, 30 May 2023 15:33:13 +0000 (08:33 -0700)]
[clang] Extend __is_trivially_equality_comparable to check for hidden friends
This allows types to be considered trivially equality comparable if a defaulted hidden friend is used.
Reviewed By: erichkeane
Spies: cfe-commits
Differential Revision: https://reviews.llvm.org/D151623
Alex Zinenko [Thu, 25 May 2023 20:26:27 +0000 (20:26 +0000)]
[mlir] add initial chapters of the transform dialect tutorial
The transform dialect has been around for a while and is sufficiently
stable at this point. Add the first three chapters of the tutorial
describing its usage and extension.
Reviewed By: springerm
Differential Revision: https://reviews.llvm.org/D151491
Manna, Soumi [Tue, 30 May 2023 14:58:02 +0000 (07:58 -0700)]
[NFC][CLANG] Fix nullptr dereference issue in Type::getSveEltType()
This patch uses castAs instead of getAs which will assert if the type
doesn't match in clang::Type::getSveEltType(clang::ASTContext const &)
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D151525
Florian Hahn [Tue, 30 May 2023 14:53:26 +0000 (15:53 +0100)]
[VPlan] Handle invariant GEPs in isUniformAfterVectorization.
This fixes a crash caused by legal treating a scalable GEP as invariant,
but isUniformAfterVectorization does not handle GEPs.
Partially fixes https://github.com/llvm/llvm-project/issues/60831.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D144434
Jacob Crawley [Wed, 24 May 2023 15:38:03 +0000 (15:38 +0000)]
[flang][hlfir] lower hlfir.all into runtime call
Depends on: D151111
Differential Revision: https://reviews.llvm.org/D151415
Jacob Crawley [Mon, 22 May 2023 15:06:49 +0000 (15:06 +0000)]
[flang] lower all intrinsic to hlfir.all operation
Carries out the lowering of the all intrinsic into HLFIR
Differential Revision: https://reviews.llvm.org/D151111
Jacob Crawley [Mon, 22 May 2023 13:07:28 +0000 (13:07 +0000)]
[flang] add hlfir.all intrinsic
Adds a new HLFIR operation for the ALL intrinsic according to the
design set out in flang/docs/HighLevel.md
Differential Revision: https://reviews.llvm.org/D151090
Philip Reames [Tue, 30 May 2023 14:07:11 +0000 (07:07 -0700)]
[RISCV] Use v(f)slide1up for shuffle+insert idiom
This is pretty straight forward in the basic form. I did need to move the slideup matching earlier, but that looks generally profitable on it's own.
As follow ups, I plan to explore the v(f)slide1down variants, and see what I can do to canonicalize the shuffle then insert pattern (see _inverse tests at the end of the vslide1up.ll test).
Differential Revision: https://reviews.llvm.org/D151468
Kohei Yamaguchi [Tue, 30 May 2023 14:13:47 +0000 (14:13 +0000)]
[mlir] [NFC] Add a newline to debug message at inserting of InterfaceMap
At inserting of InterfaceMap, a debug message lacked a newline, so it repeatedly displayed this message within a single line.
Clean up the debug log by inserting a newline at the end of the message.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D150182
Michael Maitland [Thu, 25 May 2023 17:09:37 +0000 (10:09 -0700)]
[RISCV][NFC] Make Reduction scheduler resources SEW aware
Create SchedWrites, WriteRes for reduction instructions that
are SEW specific. Future patches can use these resources
to customize the behavior of these resources depending on SEW.
Differential Revision: https://reviews.llvm.org/D151470
Oleksandr "Alex" Zinenko [Tue, 30 May 2023 14:07:51 +0000 (16:07 +0200)]
[mlir] fix mis-merge
Nikita Popov [Tue, 30 May 2023 14:05:06 +0000 (16:05 +0200)]
[InstCombine] Remove adjustMinMax() fold (PR62088)
This fold is buggy if the constant adjustment overflows.
Additionally, since we now canonicalize to min/max intrinsics,
the constants picked here don't actually matter, as long as SPF
still recognizes the pattern.
Fixes https://github.com/llvm/llvm-project/issues/62088.
Simon Pilgrim [Tue, 30 May 2023 14:00:49 +0000 (15:00 +0100)]
[X86] Fix SunnyCove ROB/MicroOpBufferSize
As raised on Issue #62602 - the IceLake scheduler model is still mainly a copy of the SkylakeServer model. This initial commit just fixes the ROB/MicroOpBufferSize to match the size reported on WikiChip/Agner, further fixes to follow in later commits.
Oleksandr "Alex" Zinenko [Tue, 30 May 2023 14:00:59 +0000 (16:00 +0200)]
[mlir] clarify transform.foreach_match documentation
Clarify the restrictions on actions that are implied by the implementation as a post-order walk.
Matthias Springer [Tue, 30 May 2023 13:54:43 +0000 (15:54 +0200)]
[mlir][linalg] Fix bug in FuseIntoContainingOp implementation
Do not replace uses inside the body of `scf.forall` ops with results of the same op.
Differential Revision: https://reviews.llvm.org/D151706
Matthias Springer [Tue, 30 May 2023 13:12:54 +0000 (15:12 +0200)]
[mlir][linalg] FuseIntoContainingOp: Always set newContainingOp
All result handles must be set in case of success.
Differential Revision: https://reviews.llvm.org/D151705
LLVM GN Syncbot [Tue, 30 May 2023 12:49:12 +0000 (12:49 +0000)]
[gn build] Port
96a14f388b1a
Nikita Popov [Tue, 30 May 2023 12:40:18 +0000 (14:40 +0200)]
Revert "[FuncSpec] Replace LoopInfo with BlockFrequencyInfo"
As reported on https://reviews.llvm.org/D150375#4367861 and
following, this change causes PDT invalidation issues. Revert
it and dependent commits.
This reverts commit
0524534d5220da5ecb2cd424a46520184d2be366.
This reverts commit
ced90d1ff64a89a13479a37a3b17a411a3259f9f.
This reverts commit
9f992cc9350a7f7072a6dbf018ea07142ea7a7ed.
This reverts commit
1b1232047e83b69561fd64b9547cb0a0d374473a.
Simon Pilgrim [Tue, 30 May 2023 11:36:54 +0000 (12:36 +0100)]
[X86] lowerBuildVectorAsBroadcast - remove repeated hasAVX() check. NFC.
We already early-out at the top of the function.
Simon Pilgrim [Mon, 29 May 2023 16:16:05 +0000 (17:16 +0100)]
[X86] X86FixupVectorConstantsPass - attempt to replace full width integer vector constant loads with broadcasts on AVX2+ targets
lowerBuildVectorAsBroadcast will not broadcast splat constants in all cases, resulting in a lot of situations where a full width vector load that has failed to fold but is loading splat constant values could use a broadcast load instruction just as cheaply, and save constant pool space.
Igor Kirillov [Mon, 17 Apr 2023 18:03:09 +0000 (18:03 +0000)]
[CodeGen] Add pre-commit tests for D148558
This patch adds four new tests for upcoming functionality in LLVM:
* complex-deinterleaving-add-mull-fixed-contract.ll
* complex-deinterleaving-add-mull-scalable-contract.ll
* complex-deinterleaving-add-mull-fixed-fast.ll
* complex-deinterleaving-add-mull-scalable-fast.ll.
These tests were generated from the IR of vectorizable loops, which were
compiled from C++ code using different optimization flags in Clang. Each pair
of tests corresponds to Neon and SVE architectures, respectively, and
each pair contains tests compiled with -Ofast and -O3 -ffp-contract=fast
-ffinite-math-only optimization flags.
The tests were stripped of nnan and ninf flags as they have no impact on the
output.
The primary objective of these tests is to show the various sequences of
complex computations that may be encountered and to demonstrate the ability
of ComplexDeinterleaving to support any ordering.
Depends on D147451
Differential Revision: https://reviews.llvm.org/D148550
Joseph Huber [Tue, 30 May 2023 11:49:14 +0000 (06:49 -0500)]
[libc][NFC] Move the Linux file implementation to a subdirectory
This patch simply moves the special handling for `linux` files to a
subdirectory. This is done to make it easier in the future to extend
this support to targets (like the GPU) that will have different
dependencies.
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D151231
Florian Hahn [Tue, 30 May 2023 11:14:11 +0000 (12:14 +0100)]
[LV] Use early exit for stores storing the ptr operand. (NFC)
Cleanup suggested in D150991.
Pierre Gousseau [Tue, 30 May 2023 10:12:54 +0000 (10:12 +0000)]
Reland 2nd attempt: [tsan] Add debugging interfaces into interface header.
Change __tsan_get_report_loc 6th argument 'size' to unsigned long *
Reviewers: vitalybuka, dvyukov
Differential Revision: https://reviews.llvm.org/D148214
Simon Pilgrim [Tue, 30 May 2023 10:38:20 +0000 (11:38 +0100)]
[X86] getTargetConstantBitsFromNode - support extracting fp data from ConstantDataSequential
Fixes issue introduced by
0f8e0f4228805cbecce13dcfadef4c48a4f0f4cd where SimplifyDemandedBits could crash when trying to extract fp data from broadcasted constants
Jie Fu [Tue, 30 May 2023 10:30:44 +0000 (18:30 +0800)]
[InstCombine] Remove unused function 'isMustTailCall' (NFC)
/data/llvm-project/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp:2467:13: error: unused function 'isMustTailCall' [-Werror,-Wunused-function]
static bool isMustTailCall(Value *V) {
^
1 error generated.
Nikita Popov [Mon, 22 May 2023 14:09:51 +0000 (16:09 +0200)]
[InstCombine] Remove computeKnownBits() fold for returns
We try to fold constant computeKnownBits() with context for return
instructions only. Otherwise, we rely on SimplifyDemandedBits() to
fold instructions with constant known bits.
The presence of this special fold for returns is dangerous, because
it makes our tests lie about what works and what doesn't. Tests are
usually written by returning the result we're interested in, but
will go through this separate code path that is not used for anything
else. This patch removes the special fold.
This primarily regresses patterns of the style "assume(x); return x".
The responsibility of handling such patterns lies with passes like
EarlyCSE/GVN anyway, which will do this reliably, and not just for
returns.
Differential Revision: https://reviews.llvm.org/D151099
Alex Bradbury [Tue, 30 May 2023 09:59:15 +0000 (10:59 +0100)]
[RISCV] Generalise shouldExtendTypeInLibcall logic to apply to all <XLEN floats on soft ABIs
This results in improved codegen for half/bf16 libcalls on soft ABIs
Adds a RISCVSubtarget helper method for determining if a soft FP ABI is
being targeted (future bf16 related patches make use of this).
Differential Revision: https://reviews.llvm.org/D151434
Marco Elver [Tue, 30 May 2023 09:59:16 +0000 (11:59 +0200)]
[compiler-rt] Refactor memintrinsic interceptors
This moves memintrinsic interceptors (memcpy/memmove/memset) into a new
file sanitizer_common_interceptors_memintrinsics.inc.
This is in preparation of redefining builtins, however, we must be
careful to not redefine builtins in TUs that define interceptors of the
same name.
In all cases except for MSan, memintrinsic interceptors were moved to a
new TU $tool_interceptors_memintrinsics.cpp. In the case of MSan, it
turns out this is not yet necessary (as shown by the later patch
introducing memcpy tests).
NFC.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D151552
Marco Elver [Tue, 30 May 2023 09:59:09 +0000 (11:59 +0200)]
[compiler-rt] Mark some performance critical buffers uninitialized
With -ftrivial-auto-var-init, do not emit memset() calls for performance
critical stack variables.
Reviewed By: vitalybuka, dvyukov, MaskRay
Differential Revision: https://reviews.llvm.org/D151551
Benjamin Kramer [Tue, 30 May 2023 09:41:24 +0000 (11:41 +0200)]
Revert "[mlir][bazel] Port for 660f714, third attempt"
This reverts commit
421a7f814fb15dedde1b0b13a9e4ddcf7b502086. Dependency
doesn't seem to be necessary and would pull in all of LLVM's codegen
into mlir users that don't require it.
Simon Pilgrim [Tue, 30 May 2023 09:29:47 +0000 (10:29 +0100)]
Fix "not all control paths return a value" MSVC warning. NFC.
tripleCC [Tue, 30 May 2023 09:20:05 +0000 (11:20 +0200)]
[StaticAnalyzer] Fix block pointer type nullability check
This patch fixes a false negative when the property type
is an objective-c block pointer.
Patch By tripleCC!
Differential Revision: https://reviews.llvm.org/D151651
Vlad Serebrennikov [Tue, 30 May 2023 09:03:01 +0000 (12:03 +0300)]
[clang] Add test for CWG1397
Resolution of this CWG breaks potential dependency loop between complete-class context of non-static data member initializer (NSDMI), and defaulted default constructor, which is `noexcept` depending on NSDMIs among other things.
For whatever reason in C++11 mode we issue an additional note and a different line number for the primary error. But I find the message itself even worse than aforementioned issues. It describes what's going on, but doesn't say what's bad about it. I find the previous version of this message more clear: https://github.com/llvm/llvm-project/commit/
8dbc6b26171167b8ddf66a5f4b6d6fb9baf28336 . Created an issue for that: #62823
Reviewed By: #clang-language-wg, shafik
Differential Revision: https://reviews.llvm.org/D151034
Muhammad Omair Javaid [Tue, 30 May 2023 09:05:45 +0000 (13:05 +0400)]
[LLDB] Update AArch64/Windows XFAIl decorators on TestNamespace.py
Mehdi Amini [Tue, 30 May 2023 08:20:22 +0000 (01:20 -0700)]
Use UNSUPPORTED annotation to disable Integration/Dialect/Vector/CPU/test-contraction.mlir
Previous attempt to disable the test didn't seem to work as expected.
Nicolas Vasilache [Tue, 30 May 2023 07:32:32 +0000 (00:32 -0700)]
[mlir][scf] NFC - Add debug information to scf pipelining
David Candler [Tue, 30 May 2023 07:57:27 +0000 (08:57 +0100)]
[builtins][test] Skip scalbn rounding tests on newlib
The picolib/newlib implementation of scalbn gives slightly different
results compared to glibc and compiler-rt's inlined
__compiler_rt_scalbn in certain rounding modes. Since these tests
are already disabled for msvc which doesn't respect the mode change,
this patch skips them for newlib as well.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D150280
Alex Zinenko [Fri, 26 May 2023 15:50:59 +0000 (15:50 +0000)]
[mlir] harden expensive-checks mode against ops with repeated operands
Transform operations may indicate that they may accept and consume
several handles pointing to the same or nested payload entities. The
initial implementation of the expensive-checks mode was simply ignoring
such cases as consuming the second handle would fail the check after the
first handle invalidated it by consuming the same payload. Additional
checks had been added since then, which could now trigger assertions in
the expensive-checks module itself (instead of or in addition to
use-after-free assertions down the road), specifically because the
payload associations for invalidated handles is removed from the state
to enable other kinds of checking.
Rework the handling of transform operations with repeated handles so
use-after-consume is still reported properly if the consumption happened
by a preceding operation, as opposed to the a preceding operand of the
same operation that is still (corretly) ignored if the op requests that.
Depends on: D151560
Reviewed By: springerm
Differential Revision: https://reviews.llvm.org/D151569
Mehdi Amini [Tue, 30 May 2023 07:20:18 +0000 (00:20 -0700)]
Disable MLIR integration test that is failing on a bot, pending a LLVM backend fix
Chuanqi Xu [Tue, 30 May 2023 07:05:41 +0000 (15:05 +0800)]
[NFC] [serialization] Refactor the outdated AbrrevToUse of VarDecl
The implementation and the comment of the AbrrevToUse of VarDecl
looks not consistent with the implementation. This patch refactors it.
Martin Braenne [Fri, 26 May 2023 09:52:55 +0000 (09:52 +0000)]
[clang][dataflow] Remove unnecessary `ASTContext` parameter from `ControlFlowContext::build` overload.
When introducing this new overload in https://reviews.llvm.org/D151183, I didn't consider that the `ASTContext` parameter was unnecessary because it could also be obtained from the `FunctionDecl`.
Reviewed By: gribozavr2, xazax.hun
Differential Revision: https://reviews.llvm.org/D151549
Lukas Sommer [Tue, 30 May 2023 06:44:31 +0000 (06:44 +0000)]
[mlir][llvm] Add thread-local address intrinsic
Add the `llvm.threadlocal.address` intrinsic to the LLVM dialect.
Signed-off-by: Lukas Sommer <lukas.sommer@codeplay.com>
Reviewed By: gysit, zero9178
Differential Revision: https://reviews.llvm.org/D151566
Vitaly Buka [Tue, 30 May 2023 06:49:46 +0000 (23:49 -0700)]
[NFC][hwasan] Don't copy ThreadStartArg
Shao-Ce SUN [Fri, 26 May 2023 17:42:48 +0000 (01:42 +0800)]
[RISCV] Add more tests in zdinx-boundary-check.ll
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D151534
Vitaly Buka [Thu, 18 May 2023 08:03:32 +0000 (01:03 -0700)]
[LSAN] Move ThreadCreate into child thread
Speeds up thread creation. Similar approach is already used
by other sanitizers.
Haojian Wu [Tue, 30 May 2023 06:38:49 +0000 (08:38 +0200)]
[clang] Solidate the implicit-module-header-maps.cpp lit test.
On some systems, the second `split-file` command will fail because the current
directory is the one we have deleted, we switch to another directory
before running it.
Haojian Wu [Tue, 30 May 2023 06:05:39 +0000 (08:05 +0200)]
[bazel] Port for
9f6250f591057e68c0bda564716b6918b8e39a84, part2.
The part1 was missing the generation of
arm_sme_draft_spec_subject_to_change.h, this patch adds it.
Jianjian GUAN [Tue, 30 May 2023 03:03:26 +0000 (11:03 +0800)]
[RISCV][NFC] Fix unmasked test for vp_cttz and vp_ctlz.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D151673
Phoebe Wang [Tue, 30 May 2023 03:20:41 +0000 (11:20 +0800)]
[ms-inline asm] Add error check for `getAsInteger`
.Imm can get lexed as a real, but a real doesn't equal to .Imm, e.g.,
2.5 or .123e+8. We should report error for it rather than silently ignore.
Reviewed By: skan
Differential Revision: https://reviews.llvm.org/D151652