Arthur Eubanks [Mon, 5 Jun 2023 21:32:55 +0000 (14:32 -0700)]
[lld][COFF] Don't handle an input file multiple times when retrying
Follow up to D151815.
Or else we properly handle the first instance of a file, then error out on the second instance of the same file.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D152198
Alex Langford [Tue, 6 Jun 2023 17:58:51 +0000 (10:58 -0700)]
Revert "[DebugInfo] Add error checking around data extraction in DWARFAbbreviationDeclaration::extract"
This reverts commit
6836a47b7e6b57927664ec6ec750ae37bb951129.
This breaks some bots, need to investigate.
Med Ismail Bennani [Mon, 5 Jun 2023 20:19:44 +0000 (13:19 -0700)]
[lldb/Commands] Fix disk completion from root directory
This patch should fix path completion starting from the root directory.
To do so, this patch adds a special case when setting the search
directory when the completion buffer points to the root directory.
Differential Revision: https://reviews.llvm.org/D152013
Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
Med Ismail Bennani [Fri, 2 Jun 2023 17:39:41 +0000 (10:39 -0700)]
[lldb/crashlog] Expand crash report file path before parsing
This patch should fix a crash in the opening a crash report that was
passed with a relative path.
This patch expands the crash report path before parsing it and raises a
`FileNotFoundError` exception if the file doesn't exist.
Differential Revision: https://reviews.llvm.org/D152012
Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
Med Ismail Bennani [Tue, 6 Jun 2023 17:24:48 +0000 (10:24 -0700)]
[lldb/Commands] Add support to auto-completion for user commands
This patch should allow the user to set specific auto-completion type
for their custom commands.
To do so, we had to hoist the `CompletionType` enum so the user can
access it and add a new completion type flag to the CommandScriptAdd
Command Object.
So now, the user can specify which completion type will be used with
their custom command, when they register it.
This also makes the `crashlog` custom commands use disk-file completion
type, to browse through the user file system and load the report.
Differential Revision: https://reviews.llvm.org/D152011
Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
Med Ismail Bennani [Fri, 2 Jun 2023 08:34:27 +0000 (01:34 -0700)]
[lldb/Target] Add ability to set a label to targets
This patch add the ability for the user to set a label for a target.
This can be very useful when debugging targets with the same executables
in the same session.
Labels can be set either at the target creation in the command
interpreter or at any time using the SBAPI.
Target labels show up in the `target list` output, following the target
index, and they also allow the user to switch targets using them.
rdar://
105016191
Differential Revision: https://reviews.llvm.org/D151859
Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
Tue Ly [Tue, 6 Jun 2023 14:10:49 +0000 (10:10 -0400)]
[libc] Remove operator T from cpp::expected.
The libc's equivalent of std::expected has a non-standard and
non-explicit operator T - https://github.com/llvm/llvm-project/issues/62738
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D152270
Alex Langford [Tue, 30 May 2023 21:35:05 +0000 (14:35 -0700)]
[DebugInfo] Add error checking around data extraction in DWARFAbbreviationDeclaration::extract
In trying to hoist errors further up this callstack, I discovered that
if the data in the debug_abbrev section is invalid entirely, the code
that parses the debug_abbrev section may do strange or unpredictable
things. The underlying issue is that DataExtractor will return a value
of 0 when it encounters an error in extracting a LEB128 value. It's thus
difficult to determine if there was an error just by looking at the
return value. This patch aims to bail at the first sight of an error in
the debug_abbrev parsing code.
Differential Revision: https://reviews.llvm.org/D151755
Elizabeth Andrews [Mon, 5 Jun 2023 20:12:13 +0000 (13:12 -0700)]
[Clang][Sema] Fix access of friend class in local class
Clang currently emits an error when a friend of a local class
tries to access it's private data members. This patch fixes the bug.
Differential Revision: https://reviews.llvm.org/D152195
Simon Pilgrim [Tue, 6 Jun 2023 17:24:59 +0000 (18:24 +0100)]
Revert rG98061013e01207444cfd3980 - [X86] X86FixupVectorConstantsPass - attempt to replace full width fp vector constant loads with broadcasts on AVX+ targets
Reverting while we address an existing issue exposed by this (Issue #63108)
Dirk MG Seynhaeve [Tue, 6 Jun 2023 17:30:11 +0000 (10:30 -0700)]
[llvm] Small typo in the instruction comments of WithColor header
Fix a small but misleading/confusing typo in the comments (which shows
up in the doxygen documentation):
Black -> BLACK (the enumeration is case-sensitive).
Differential revision: https://reviews.llvm.org/D151598
Slava Zakharin [Tue, 6 Jun 2023 16:40:00 +0000 (09:40 -0700)]
[flang][hlfir] Implemented addressing an element of a polymorphic array.
The changes convert hlfir.designate to fir.array_coor/fir.embox
to represent a subscripted element of a polymorphic array.
The type information is conveyed via the fir.embox's source_box.
Reviewed By: tblah
Differential Revision: https://reviews.llvm.org/D152200
Craig Topper [Tue, 6 Jun 2023 16:44:19 +0000 (09:44 -0700)]
[RISCV] Remove uses of RISCVII::hasMergeOp from RISCVDAGToDAGISel.cpp
This property was intended to indicate when RISCVAsmPrinter should
drop the tied source operand when converting to MCInst. Using it
in RISCVDAGToDAGISel distorts what it intended for.
This should remove some changes from D151850.
Reviewed By: frasercrmck, asb
Differential Revision: https://reviews.llvm.org/D152039
Nick Desaulniers [Mon, 5 Jun 2023 21:59:46 +0000 (14:59 -0700)]
reland: [Demangle] make llvm::demangle take std::string_view rather than const std::string&
As suggested by @erichkeane in
https://reviews.llvm.org/D141451#inline-1429549
There's potential for a lot more cleanups around these APIs. This is
just a start.
Callers need to be more careful about sub-expressions producing strings
that don't outlast the expression using `llvm::demangle`. Add a
release note.
Differential Revision: https://reviews.llvm.org/D149104
Simon Pilgrim [Tue, 6 Jun 2023 17:07:33 +0000 (18:07 +0100)]
Revert rGab4b924832ce26c21b88d7f82fcf4992ea8906bb - [X86] X86FixupVectorConstantsPass - attempt to replace full width integer vector constant loads with broadcasts on AVX2+ targets
Reverting while we address an existing issue exposed by this (Issue #63108)
Aart Bik [Tue, 6 Jun 2023 03:53:49 +0000 (20:53 -0700)]
[mlir][sparse] refine absent branch feeding into custom op
Document better that unary/binary may only feed to the output
or the input of a custom reduction (not even a regular reduction
since it may have "no value"!). Also fixes a bug when present
branch is empty and feeds into custom reduction.
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D152224
Vy Nguyen [Wed, 31 May 2023 18:22:07 +0000 (14:22 -0400)]
[lld-macho]Ensure canonicalization happen even for "skipped" referent sections.
Details:
See bug report: https://github.com/llvm/llvm-project/issues/63039
Differential Revision: https://reviews.llvm.org/D151824
Aaron Ballman [Tue, 6 Jun 2023 16:48:22 +0000 (12:48 -0400)]
Silence a "not all control paths return a value" warning; NFC
Sam McCall [Fri, 26 May 2023 12:59:54 +0000 (14:59 +0200)]
[ADT] Fix DenseMapInfo<variant>::isEqual to delegate to DenseMapInfo, not ==
Differential Revision: https://reviews.llvm.org/D151557
Kazu Hirata [Tue, 6 Jun 2023 16:35:56 +0000 (09:35 -0700)]
[ProfileData] Remove unused declaration getMemOPSizeRangeFromOption
The corresponding function definition was removed by:
commit
1ebee7adf8966ad9d2885c172a18104c94667061
Author: Hiroshi Yamauchi <yamauchi@google.com>
Date: Fri Oct 2 13:00:40 2020 -0700
Prabhdeep Singh Soni [Tue, 6 Jun 2023 15:11:53 +0000 (11:11 -0400)]
[Flang][OpenMP] Fix unused variable warning for task depend
This patch fixes an unused variable warning that was caused by the task
depend patch.
Original Commit:
3373c8405c5e144567c2b25c28b54b4ac63b09b6
Original Differential Revision: https://reviews.llvm.org/D146766
Yaxun (Sam) Liu [Mon, 5 Jun 2023 14:19:38 +0000 (10:19 -0400)]
[CUDA][HIP] Externalize device var in anonymous namespace
Device variables in an anonymous namespace may be
referenced by host code, therefore they need to
be externalized in a similar way as a static device
variables or kernels in an anonymous namespace.
Fixes: https://github.com/ROCm-Developer-Tools/HIP/issues/3246
Reviewed by: Artem Belevich
Differential Revision: https://reviews.llvm.org/D152164
yronglin [Tue, 6 Jun 2023 15:57:57 +0000 (23:57 +0800)]
[Clang] Reject increment of bool value in unevaluated contexts after C++17
Clang now incorrectly allowed increment of bool in unevaluated contexts, we set `diagnostic::ext_increment_bool` to be SFINAEFailure to fix this issue.
```
template<class T> auto f(T t) -> decltype(++t);
auto f(...) -> void;
void g() {
f(true); // Clang wrongly makes this a hard error
}
```
```
template <class T>
concept can_increment = requires(T t) { ++t; };
template <class T> void f() {
static_assert(requires(T t) { ++t; }); // Incorrectly allowed
}
int main() {
f<bool>();
static_assert(!can_increment<bool>); // Incorrectly fails
bool b = false;
++b; // Correctly rejected
}
```
Fix issue: https://github.com/llvm/llvm-project/issues/47517
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D152259
LLVM GN Syncbot [Tue, 6 Jun 2023 15:51:54 +0000 (15:51 +0000)]
[gn build] Port
7a3b528e1b54
LLVM GN Syncbot [Tue, 6 Jun 2023 15:51:54 +0000 (15:51 +0000)]
[gn build] Port
51131edf83e4
Nikolas Klauser [Tue, 6 Jun 2023 15:43:22 +0000 (08:43 -0700)]
[libc++][PSTL] Implement std::replace{,_if,_copy,_copy_if}
Reviewed By: #libc, ldionne
Spies: ldionne, libcxx-commits
Differential Revision: https://reviews.llvm.org/D151841
Nikolas Klauser [Tue, 6 Jun 2023 15:42:40 +0000 (08:42 -0700)]
[libc++][PSTL] Implement std::count{,_if}
Reviewed By: ldionne, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D150128
prabhukr [Tue, 6 Jun 2023 15:13:57 +0000 (08:13 -0700)]
[Triple] Add triple for UEFI
Target triple to support "x86_64-unknown-uefi"
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D131594
Mikhail Goncharov [Tue, 6 Jun 2023 15:35:37 +0000 (17:35 +0200)]
[clang][test] Use a physical copy of FS
(missing piece from https://reviews.llvm.org/D152265)
476e7c49ecb762df1d68273696b06c36feb0fd96
Marco Elver [Tue, 6 Jun 2023 15:31:19 +0000 (17:31 +0200)]
[compiler-rt] Do not redefine builtins on Windows
Build bots are still failing, and getting it to work on Windows should
be done in a separate patch, should this even be technically feasible.
| lld-link: error:
| stage2_win_x64/obj/compiler-rt/lib/asan/asan_shared_library.asan_activation.obj:
| memcpy should not refer to special section 0
Jolanta Jensen [Fri, 2 Jun 2023 15:30:12 +0000 (15:30 +0000)]
[SVE ACLE] Extend existing aarch64_sve_mul combines to also act on aarch64_sve_mul_u.
Differential Revision: https://reviews.llvm.org/D152004
Zequan Wu [Mon, 5 Jun 2023 19:07:06 +0000 (15:07 -0400)]
[LLDB][PDB] Fix age field in UUID in PDB file.
There are two age fields in a PDB file. One from the PDB Stream and another one
from the DBI stream.
According to https://randomascii.wordpress.com/2011/11/11/source-indexing-is-underused-awesomeness/#comment-34328,
The age in DBI stream is used to against the binary's age. `Pdbstr.exe` is used
to only increment the age from PDB stream without changing the DBI age. I
also verified this by manually changing the DBI age of a PDB file and let
`windbg.exe` to load it. It shows the following logs before and after changing:
Before:
```
SYMSRV: BYINDEX: 0xA
c:\symbols*https://msdl.microsoft.com/download/symbols
nlaapi.pdb
D72AA69CD5ABE5D28C74FADB17DE3F8C1
SYMSRV: PATH: c:\symbols\nlaapi.pdb\
D72AA69CD5ABE5D28C74FADB17DE3F8C1\nlaapi.pdb
SYMSRV: RESULT: 0x00000000
*** WARNING: Unable to verify checksum for NLAapi.dll
DBGHELP: NLAapi - public symbols
c:\symbols\nlaapi.pdb\
D72AA69CD5ABE5D28C74FADB17DE3F8C1\nlaapi.pdb
...
```
After:
```
SYMSRV: BYINDEX: 0xA
c:\symbols*https://msdl.microsoft.com/download/symbols
nlaapi.pdb
D72AA69CD5ABE5D28C74FADB17DE3F8C1
SYMSRV: PATH: c:\symbols\nlaapi.pdb\
D72AA69CD5ABE5D28C74FADB17DE3F8C1\nlaapi.pdb
SYMSRV: RESULT: 0x00000000
DBGHELP: c:\symbols\nlaapi.pdb\
D72AA69CD5ABE5D28C74FADB17DE3F8C1\nlaapi.pdb - mismatched pdb
SYMSRV: BYINDEX: 0xB
c:\symbols*https://chromium-browser-symsrv.commondatastorage.googleapis.com
nlaapi.pdb
D72AA69CD5ABE5D28C74FADB17DE3F8C1
SYMSRV: PATH: c:\symbols\nlaapi.pdb\
D72AA69CD5ABE5D28C74FADB17DE3F8C1\nlaapi.pdb
SYMSRV: RESULT: 0x00000000
DBGHELP: c:\symbols\nlaapi.pdb\
D72AA69CD5ABE5D28C74FADB17DE3F8C1\nlaapi.pdb - mismatched pdb
SYMSRV: BYINDEX: 0xC
c:\src\symbols*https://msdl.microsoft.com/download/symbols
nlaapi.pdb
D72AA69CD5ABE5D28C74FADB17DE3F8C1
SYMSRV: PATH: c:\src\symbols\nlaapi.pdb\
D72AA69CD5ABE5D28C74FADB17DE3F8C1\nlaapi.pdb
SYMSRV: RESULT: 0x00000000
*** WARNING: Unable to verify checksum for NLAapi.dll
DBGHELP: NLAapi - public symbols
c:\src\symbols\nlaapi.pdb\
D72AA69CD5ABE5D28C74FADB17DE3F8C1\nlaapi.pdb
```
So, `windbg.exe` uses the DBI age to detect mismatched pdb, but it still loads
the pdb even if the age mismatched. Probably lldb should do the same and give
some warnings.
This fixes a bug that lldb can't load some windows system pdbs due to mismatched
uuid.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D152189
Mark de Wever [Tue, 6 Jun 2023 15:16:23 +0000 (17:16 +0200)]
[libc++] Fixes transitive includes.
paperchalice [Tue, 6 Jun 2023 15:10:10 +0000 (08:10 -0700)]
[lldb] fix dangling reference in `ClangHost.cpp`
The lifetime of clang_resource_path should be same as
kResourceDirSuffixes, because kResourceDirSuffixes doesn't own
clang_resource_path.
Differential Revision: https://reviews.llvm.org/D152225
Nikita Popov [Tue, 6 Jun 2023 13:24:09 +0000 (15:24 +0200)]
[Clang] Convert some tests to opaque pointers (NFC)
Quentin Colombet [Mon, 5 Jun 2023 13:06:07 +0000 (15:06 +0200)]
[mlir][Vector] Fix a propagation bug with broadcast
In the vector distribute patterns, we used to move
`vector.broadcast`s out of `vector.warp_execute_on_lane0`s
irrespectively of how they were defined.
This could create broadcast operations with invalid semantic.
E.g.,
```
%r = warop ...[32] ... -> vector<1x2xf32> {
%val = broadcast %in : vector<64xf32> to vetor<1x64xf32>
vector.yield %val : vector<1x64xf32>
}
```
=>
```
%r = warop ...[32] ... -> vector<64xf32> {
vector.yield %in : vector<64xf32>
}
// Broadcasting to a narrower type!
broadcast %r : vector<64xf32> to vector<1x2xf32>
```
The root issue is we are trying to broadcast something that is not the same
for each thread, so there is actually nothing to propagate here.
The fix checks that the broadcast we want to create actually makes sense.
Differential Revision: https://reviews.llvm.org/D152154
Endre Fulop [Thu, 29 Sep 2022 07:31:40 +0000 (09:31 +0200)]
[analyzer][NFC] Pass the diagnostic message to the TrackConstraintBRVisitor
The `TrackConstraintBRVisitor` should accept a message for the note
instead of creating one. It would let us inject domain-specific
knowledge in a non-intrusive way, leading to a more generic visitor.
Differential Revision: https://reviews.llvm.org/D152255
Mikhail Goncharov [Tue, 6 Jun 2023 14:26:07 +0000 (16:26 +0200)]
Revert "Reland [MergeICmps] Adapt to non-eq comparisons, bugfix"
Causes miscompile. See https://reviews.llvm.org/D141188.
This reverts commit
fb2c98a929aa65603e9d984307a41325e577e9d3
Prabhdeep Singh Soni [Thu, 23 Mar 2023 15:26:50 +0000 (11:26 -0400)]
[Flang][OpenMP] Support depend clause for task construct, excluding array sections
This patch adds support for the OpenMP 4.0 depend clause for the task
construct, excluding array sections, to Flang lowering from parse-tree
to MLIR.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D146766
Marco Elver [Tue, 30 May 2023 09:59:22 +0000 (11:59 +0200)]
[compiler-rt] Avoid memintrinsic calls inserted by the compiler
D135716 introduced -ftrivial-auto-var-init=pattern where supported.
Unfortunately this introduces unwanted memset() for large stack arrays,
as shown by the new tests added for asan and msan (tsan already had this
test).
In general, the problem of compiler-inserted memintrinsic calls
(memset/memcpy/memmove) is not new to compiler-rt, and has been a
problem before.
To avoid introducing unwanted memintrinsic calls, we redefine
memintrinsics as __sanitizer_internal_mem* at the assembly level for
most source files automatically (where sanitizer_common_internal_defs.h
is included).
In few cases, redefining a symbol in this way causes issues for
interceptors, namely the memintrinsic interceptor themselves. For such
source files we have to selectively disable the redefinition.
Other alternatives have been considered, but simply do not work well in
the context of compiler-rt:
1. Linker --wrap: this does not work because --wrap only
applies to the final link, and would not apply when building
sanitizer static libraries.
2. Changing references to memset() via objcopy: this may work,
but due to the complexities of the build system, introducing
such a post-processing step for the right object files (in
particular object files defining memset cannot be touched)
seems infeasible.
The chosen solution works well (as shown by the tests). Other libraries
have chosen the same solution where nothing else works (see e.g. glibc's
"symbol-hacks.h").
v4:
- Add interface attribute to __sanitizer_internal_mem* declarations as
well, as otherwise some compilers (MSVC) will complain.
- Add SANITIZER_COMMON_NO_REDEFINE_BUILTINS to source files using
C++STL, since this could lead to ODR violations (see added comment).
v3:
- Don't use ALIAS() to alias internal_mem*() functions to
__sanitizer_internal_mem*() functions, but just define them as
ALWAYS_INLINE functions instead. This will work on darwin and windows.
v2:
- Fix ubsan_minimal build where compiler decides to insert
memset/memcpy: ubsan_minimal has work without RTSanitizerCommonLibc,
therefore do not redefine the builtins.
- Fix definition of internal_mem* functions with compilers that want the
aliased function to already be defined before.
- Fix definition of __sanitizer_internal_mem* functions with compilers
more pedantic about attribute placement around extern "C".
Reviewed By: vitalybuka, dvyukov
Differential Revision: https://reviews.llvm.org/D151152
Jessica Clarke [Tue, 6 Jun 2023 13:54:43 +0000 (14:54 +0100)]
[RISCV] Rework .option arch target streamer interface
The current interface requires some rather ugly tracking of state due to
splitting up the calls for each argument. Instead, pack them all into a
single call by passing an ArrayRef. Also clean up the dodgy whitespace
emitted for the directive whilst here; there was a stray space between
the tab and .option, and there was a tab rather than a space after the
first comma for some strange reason.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D152193
Jessica Clarke [Tue, 6 Jun 2023 13:54:40 +0000 (14:54 +0100)]
[RISCV] Make .option arch parser less mind-bending
Currently the early-return flow in the infinite loop makes it hard to
find the non-error termination points amongst the sea of errors. Rewrite
it with a more conventional control flow that has a clear loop guard (in
place of one of the early returns) and a break (in place of the other),
and with greater code reuse.
This has a small effect on the errors given for malformed input, as seen
in the affected test, and is probably more helpful as a result. Note
that we also bail early now if parseComma fails, as is standard.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D152192
Kadir Cetinkaya [Tue, 6 Jun 2023 13:40:33 +0000 (15:40 +0200)]
[clang][test] Use a physical copy of FS
Make use of a physical copy, rather than real FS in unittests that
change working-directory to get rid of the side effect of changing cwd for the
whole process. It's triggering crashes depending on the test order.
Differential Revision: https://reviews.llvm.org/D152265
Simon Pilgrim [Tue, 6 Jun 2023 13:38:19 +0000 (14:38 +0100)]
[GlobalISel][X86] Move G_SEXT_INREG legalization handling to beside the regular integer extension legalizations
Andrew Ng [Wed, 17 May 2023 18:20:59 +0000 (19:20 +0100)]
[llvm-objcopy][ELF] Preserve sh_link to .symtab when applicable
This change to llvm-objcopy preserves the ELF section sh_link to .symtab
so long as none of the symbol table indices have been changed.
Previously, any invocation of llvm-objcopy including a "no-op" would
clear any section sh_link to .symtab.
Differential Revision: https://reviews.llvm.org/D150859
Nikita Popov [Tue, 6 Jun 2023 12:55:56 +0000 (14:55 +0200)]
[InstCombine] Add stats for number of iterations (NFC)
Jay Foad [Tue, 6 Jun 2023 13:10:07 +0000 (14:10 +0100)]
[GlobalIsel][X86] Remove an unused variable
Jay Foad [Thu, 4 May 2023 14:34:28 +0000 (15:34 +0100)]
[AMDGPU] Remove extract_subvector patterns
Removing them seems to slightly increase code quality as well as
simplifying both the tablegen and C++ parts of the code.
Differential Revision: https://reviews.llvm.org/D149853
Corentin Jabot [Tue, 6 Jun 2023 07:21:16 +0000 (09:21 +0200)]
[Clang] Allow omitting `typename` in befriended constructors parameters
Fixes #63119
Reviewed By: #clang-language-wg, aaron.ballman
Differential Revision: https://reviews.llvm.org/D152242
Ricardo Jesus [Fri, 2 Jun 2023 09:02:06 +0000 (09:02 +0000)]
[AArch64][NFC] Normalise name of indexed forms of SQRDMLAH/SQRDMLSH
Most indexed vector instructions are suffixed with v<N><TY>_indexed.
SQRDMLAH/SQRDMLSH are the exception, being suffixed with <TY>_indexed
instead, which can complicate matching them slightly.
Differential Revision: https://reviews.llvm.org/D152161
Haohai Wen [Tue, 6 Jun 2023 13:01:19 +0000 (21:01 +0800)]
[NFC][COFF] Refine access specifiers for WinCOFFObjectWriter
Set public specifiers only for constructor and inherited methods from
MCObjectWriter and leave others as private. Also change the order of
MCObjectWriter methods' definition according to it's declaration order.
Reviewed By: skan
Differential Revision: https://reviews.llvm.org/D152229
Aaron Ballman [Tue, 6 Jun 2023 12:57:57 +0000 (08:57 -0400)]
Switch from full to unreleased for a Clang 17 fix; NFC
Simon Pilgrim [Tue, 6 Jun 2023 12:47:22 +0000 (13:47 +0100)]
[GlobalIsel][X86] Update legalization of G_FADD/G_FSUB/G_FMUL/G_FDIV + G_FC
Replace the legacy legalizer versions
Sander de Smalen [Mon, 5 Jun 2023 14:34:25 +0000 (14:34 +0000)]
[Clang] Limit FunctionTypeExtraBitfields::NumExceptionType to 16 bits.
In https://reviews.llvm.org/D127762#4102578 @erichkeane suggested to
limit size of this field to 16bits, such that the field that encodes the
SME attributes for a function fall within the alignment of the struct for
32bit platforms.
Standard implimits defines the minimum handlers per try block to 256,
which suggests that 16bits should be more than sufficient for most
programs. Erich also pointed out that exception specs are being
deprecated and are rarely used, so hopefully this change is safe to make.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D152140
David Stuttard [Tue, 6 Jun 2023 12:02:28 +0000 (13:02 +0100)]
Revert "[AMDGPU] New PAL metadata updates to ps_extra_lds_size and float_mode"
This reverts commit
6d5a653dda628250b373ec89e0e11cdd27603c24.
David Stuttard [Thu, 11 May 2023 13:09:38 +0000 (14:09 +0100)]
[AMDGPU] New PAL metadata updates to ps_extra_lds_size and float_mode
New metadata format contains full calculation of field contents for
ps_extra_lds_size (vs old format where the value in RSRC register is used by PAL
to calculate the value required).
Also stop updating float_mode and rely on front end settings for this field.
Differential Revision: https://reviews.llvm.org/D152247
Simon Pilgrim [Tue, 6 Jun 2023 10:32:32 +0000 (11:32 +0100)]
[GlobalISel][X86] Add G_IMPLICIT_DEF / G_CONSTANT legalization handling
Simon Pilgrim [Tue, 6 Jun 2023 09:54:32 +0000 (10:54 +0100)]
Fix unused variable warning. NFC.
Michael Platings [Mon, 22 May 2023 13:48:00 +0000 (14:48 +0100)]
[ARM][Driver] Warn if -mhard-float is incompatible
Mixing -mfloat-abi=hard with a CPU that doesn't have floating point
registers is an error in GCC:
cc1: error: '-mfloat-abi=hard': selected processor lacks an FPU
Since there is code in the wild (including in clang tests) that relies
on Clang's current behaviour, emit a warning instead of an error.
Unlike the GCC error, the new warning refers to floating point
registers instead of an FPU. This is because -mfloat-abi=hard and
-march=armv8.1-m.main+mve+nofp are compatible - in that case floating
point registers are required, but an FPU is not required.
My initial thought was to use the floating point ABI calculated by
arm::getARMFloatABI() but in invalid cases which error for other
reasons the ABI is miscalculated and the warning would cause confusion.
Therefore only warn if the user specifies the float ABI explicitly.
Fixes part of https://github.com/llvm/llvm-project/issues/55755
Differential Revision: https://reviews.llvm.org/D150902
Thorsten Schütt [Tue, 6 Jun 2023 10:19:36 +0000 (12:19 +0200)]
[GlobalIsel][X86] Legalize G_ANYEXT, G_SEXT, and G_ZEXT
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D152243
Michael Platings [Tue, 6 Jun 2023 10:05:05 +0000 (11:05 +0100)]
Revert "[ARM][Driver] Warn if -mhard-float is incompatible"
An associated -W flag is needed.
This reverts commit
1d511e1864f142d08a491a89940d70c516a6c6a2.
Matthias Springer [Tue, 6 Jun 2023 09:19:59 +0000 (11:19 +0200)]
[mlir][transform] Use separate ops instead of PatternRegistry
* Remove `transform::PatternRegistry`.
* Add a new op for each currently registered pattern set.
* Change names of vector dialect pattern selector ops, so that they are consistent with the remaining code base.
* Remove redundant `transform.vector.extract_address_computations` op.
Differential Revision: https://reviews.llvm.org/D152249
Balázs Kéri [Tue, 6 Jun 2023 09:12:20 +0000 (11:12 +0200)]
[clang][analyzer] Add report of NULL stream to StreamChecker.
The report of NULL stream was removed in commit 570bf97.
The old reason is not actual any more because the checker dependencies are changed.
It is not good to eliminate a failure state (where the stream is NULL) without
generating a bug report because other checkers are not able to find it later.
The checker did this with the NULL stream pointer, and because this checker
runs now before other checkers that can detect NULL pointers, the null pointer
bug was not found at all.
Reviewed By: steakhal
Differential Revision: https://reviews.llvm.org/D152169
wangpc [Tue, 6 Jun 2023 09:49:58 +0000 (17:49 +0800)]
[RISCV] Handle "o" inline asm memory constraint
This is the same as D100412.
We just found the same crash when we tried to compile some packages
like mariadb, php, etc.
For constraint "o", it means "A memory operand is allowed, but
only if the address is offsettable". So I think it can be handled
just like constraint "m" for RISCV target.
And we print verbose information when unsupported constraints occur.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D151979
Florian Hahn [Tue, 6 Jun 2023 09:35:25 +0000 (11:35 +0200)]
Revert "[VPlan] Mark recurrence recipes as not having side-effects."
This reverts commit
02369b75fdd7b5fc5d9b47f1b60587c225918511.
At the moment, live-outs used *only* for the resume values in the scalar
loop are not modeled in VPlan yet. This means first-order recurrence
recipes could be removed, when a scalar epilogue is required and the
only use of a FOR is outside the loop.
Keep treating recurrence recipes as having side-effects for now, to
avoid them being removed.
Fixes #62954.
Alex Zinenko [Mon, 5 Jun 2023 18:42:15 +0000 (18:42 +0000)]
[mlir][transform] generate transform module on-the-fly
Add a TransformInterpreterPassBase capability to generate the (shared)
module containing the transform script during the pass initialization.
This is helpful to programmatically generate the script as opposed to
parsing it from the textual module.
Reviewed By: springerm
Differential Revision: https://reviews.llvm.org/D152185
Florian Hahn [Tue, 6 Jun 2023 09:26:55 +0000 (11:26 +0200)]
[LV] Use force-vector-width for X86 recurrence test.
This makes sure that all tests that can be vectorized in the file are
vectorized.
Florian Hahn [Tue, 6 Jun 2023 09:20:21 +0000 (11:20 +0200)]
[LV] Add test for #62954.
Timm Bäder [Tue, 6 Jun 2023 08:33:00 +0000 (10:33 +0200)]
[clang][ThreadSafety][NFC] Make isReference() const
Carl Ritson [Tue, 6 Jun 2023 08:25:22 +0000 (17:25 +0900)]
[AMDGPU] WQM: Ensure exact mode placement before branches
Fix for D151797 where the change accidentally allowed exit to
exact mode between branch instructions.
Reviewed By: dstuttard
Differential Revision: https://reviews.llvm.org/D152228
Martin Storsjö [Fri, 2 Jun 2023 09:25:52 +0000 (12:25 +0300)]
[AArch64] Make .arch without extra features actually take effect
This fixes PR32873 / https://github.com/llvm/llvm-project/issues/32220.
Differential Revision: https://reviews.llvm.org/D151982
Martin Storsjö [Fri, 2 Jun 2023 08:36:40 +0000 (11:36 +0300)]
[AArch64] Complete the list of extensions supported by .arch and .arch_extension
This brings the list of extensions supported here up to date
with what is supported by current git versions of binutils.
Also add a comment to AArch64TargetParser to remind people to
consider adding new ones to the list supported in assembly.
In the case of the "rdma" extension, there's a slight surprise:
LLVM knows of the extension under the name "rdm", while binutils
has it named "rdma". However, binutils appears to accept any
abbreviated prefix of an arch extension, so it does accept the
form "rdm" too even if it formally considers it called "rdma".
Support both spellings for the extensions here, for simplicity.
Differential Revision: https://reviews.llvm.org/D151981
Mehdi Amini [Mon, 5 Jun 2023 19:35:30 +0000 (12:35 -0700)]
Use symbolic name for previous MLIR Bytecode versions
Reviewed By: jpienaar, burmako
Differential Revision: https://reviews.llvm.org/D151621
Michael Platings [Mon, 22 May 2023 13:48:00 +0000 (14:48 +0100)]
[ARM][Driver] Warn if -mhard-float is incompatible
Mixing -mfloat-abi=hard with a CPU that doesn't have floating point
registers is an error in GCC:
cc1: error: '-mfloat-abi=hard': selected processor lacks an FPU
Since there is code in the wild (including in clang tests) that relies
on Clang's current behaviour, emit a warning instead of an error.
Unlike the GCC error, the new warning refers to floating point
registers instead of an FPU. This is because -mfloat-abi=hard and
-march=armv8.1-m.main+mve+nofp are compatible - in that case floating
point registers are required, but an FPU is not required.
My initial thought was to use the floating point ABI calculated by
arm::getARMFloatABI() but in invalid cases which error for other
reasons the ABI is miscalculated and the warning would cause confusion.
Therefore only warn if the user specifies the float ABI explicitly.
Fixes part of https://github.com/llvm/llvm-project/issues/55755
Differential Revision: https://reviews.llvm.org/D150902
Serge Pavlov [Tue, 6 Jun 2023 07:54:52 +0000 (14:54 +0700)]
[FPEnv] Get rid of extra moves in fpenv calls
If intrinsic `get_fpenv` or `set_fpenv` is lowered to the form where FP
environment is represented as a region in memory, extra moves can
appear. For example the code:
define void @func_01(ptr %ptr) {
%env = call i256 @llvm.get.fpenv.i256()
store i256 %env, ptr %ptr
ret void
}
produces DAG:
ch = get_fpenv_mem ch, memory_region
val: i256, ch = load ch, memory_region
ch = store ch, ptr, val
In this case the extra moves can be avoided if `get_fpenv_mem` got
pointer to the memory where the FP environment should be finally placed.
This change implement such optimization for this use case.
Differential Revision: https://reviews.llvm.org/D150437
Matthias Springer [Tue, 6 Jun 2023 07:18:10 +0000 (09:18 +0200)]
[mlir][vector] Use transform.apply_patterns in vector tests
All vector transform ops are now `PatternDescriptorOpInterface` ops that merely select the patterns. The patterns are applied by the `apply_patterns` op. This is to ensure that ops are properly tracked. (TrackingListener is used in the implementation of `apply_patterns`.) Furthermore, handles are no longer invalidated when applying patterns in the vector tests.
Differential Revision: https://reviews.llvm.org/D152174
Christian Ulmann [Tue, 6 Jun 2023 06:54:03 +0000 (06:54 +0000)]
llvm-extract: Replace IFuncs with declarations
This commit ensures that llvm-extract does not copy all IFuncs into the
resulting modules. Before this change, ifuncs were not modified which
could cause the emission unexpected IR files.
Reviewed By: darthscsi
Differential Revision: https://reviews.llvm.org/D152148
Matthias Springer [Tue, 6 Jun 2023 07:07:22 +0000 (09:07 +0200)]
[mlir][transform] Add region to ApplyPatternsOp
Patterns should be selected by adding ops that implement `PatternDescriptorOpInterface` to the region of `apply_pattern` ops. Such ops can have operands, allowing for pattern parameterization. The existing way of selecting patterns from the PatternRegistry is deprecated.
Differential Revision: https://reviews.llvm.org/D152167
Carl Ritson [Tue, 6 Jun 2023 06:40:51 +0000 (15:40 +0900)]
[AMDGPU] Pre-commit test for D152228 (NFC)
Luo, Yuanke [Tue, 6 Jun 2023 06:56:45 +0000 (14:56 +0800)]
[X86] Pre-commit test case for D152227.
Luo, Yuanke [Tue, 6 Jun 2023 06:23:49 +0000 (14:23 +0800)]
[X86] Add test cases for D152227.
Craig Topper [Tue, 6 Jun 2023 06:21:51 +0000 (23:21 -0700)]
Revert "[RISCV] Minor readability improvement to RISCVMatInt. NFC"
This reverts commit
1ebe06017df607d4fc140f6b166e35cd32fc5f16.
I've been informed the old way was documented in the psABI.
Mark de Wever [Sun, 4 Jun 2023 15:38:59 +0000 (17:38 +0200)]
[libc++] Removes CMake work-arounds.
CMake older than 3.20.0 is no longer supported.
This removes work-arounds for no longer supported versions.
Reviewed By: #libc, jloser, philnik
Differential Revision: https://reviews.llvm.org/D152099
Craig Topper [Tue, 6 Jun 2023 06:04:21 +0000 (23:04 -0700)]
[RISCV] Minor readability improvement to RISCVMatInt. NFC
When splitting a simm32 into LUI+ADDI(W). Subtract Lo12 from Val
to calculate Hi20. This replaces the old method of adding 0x800 to
Val. This change makes the math the reverse of how the LUI+ADDI(W)
create the immediate.
Paulo Matos [Mon, 5 Jun 2023 08:09:09 +0000 (10:09 +0200)]
[WebAssembly] Add tests ensuring rotates persist
Due to the nature of WebAssembly, it's always better to keep
rotates instead of trying to optimize it. Commit
9485d983
disabled the generation of fsh for rotates, however these
tests ensure that future changes don't change the behaviour for
the Wasm backend that tends to have different optimization
requirements than other architectures. Also see:
https://github.com/llvm/llvm-project/issues/62703
Differential Revision: https://reviews.llvm.org/D152126
Hristo Hristov [Tue, 14 Mar 2023 16:32:15 +0000 (18:32 +0200)]
[libc++][spaceship] Implement `operator<=>` for `queue`
Implements parts of P1614R2 `operator<=>` for `queue`
Reviewed By: #libc, Mordante
Differential Revision: https://reviews.llvm.org/D146066
LLVM GN Syncbot [Tue, 6 Jun 2023 05:06:30 +0000 (05:06 +0000)]
[gn build] Port
c336c983bcd9
Chuanqi Xu [Tue, 6 Jun 2023 05:01:53 +0000 (13:01 +0800)]
[C++20] [Modules] [Serialization] Don't write comments to BMI for C++20 Named Modules
This patch forbids to write comment to BMIs for C++20 Named Modules.
Originally I thought this was helpful for language services like clangd.
But I found clangd don't want the BMI to contain comments actually. So
it is meaningless for C++20 Named Modules to keep such comments in
their BMI.
It is simple to enable this when someday we found we want this actually.
Fangrui Song [Tue, 6 Jun 2023 04:40:32 +0000 (21:40 -0700)]
[RISCV] Migrate to new encodeInstruction that uses SmallVectorImpl<char>. NFC
Similar to AArch64,AVR,PowerPC:
9e2d100e5322c52e29280c96bbb5609ca5af1539.
Fangrui Song [Tue, 6 Jun 2023 04:33:10 +0000 (21:33 -0700)]
[AArch64,AVR,PowerPC] Migrate to new encodeInstruction that uses SmallVectorImpl<char>. NFC
Similar to
49488490d195591bfc90daef111cd7293f8c80aa.
khei4 [Sun, 4 Jun 2023 04:07:02 +0000 (13:07 +0900)]
[InstCombine] add overflow checking on Add ~X + C --> (C-1) - X
Differential Revision: https://reviews.llvm.org/D152088
khei4 [Sun, 4 Jun 2023 04:06:06 +0000 (13:06 +0900)]
[InstCombine] precommit test for D152088(NFC)
Differential Revision: https://reviews.llvm.org/D152089
Ben Shi [Mon, 5 Jun 2023 08:23:38 +0000 (16:23 +0800)]
[AVR][NFC][test] Supplement more tests of 8-bit rotation
Reviewed By: Patryk27, jacquesguan
Differential Revision: https://reviews.llvm.org/D152129
Phoebe Wang [Tue, 6 Jun 2023 02:46:37 +0000 (10:46 +0800)]
Reland "[X86][NFC] Refactor: there's only v16bf16 in 256-bit shuffle"
Phoebe Wang [Tue, 6 Jun 2023 02:41:26 +0000 (10:41 +0800)]
Revert "[X86][NFC] Refactor: there's only v16bf16 in 256-bit shuffle"
This reverts commit
50a2341fe92f8a5ff934bd279450581e9cbcf103.
This results in buildbot fail.
Peter Klausler [Fri, 2 Jun 2023 23:30:43 +0000 (16:30 -0700)]
[flang] Fix crash in shape analysis of PACK()
A CHECK() was firing when a call to the PACK intrinsic does not have a
VECTOR= argument and at least one dimension of the shape of the ARRAY=
argument could not be determined. The CHECK was inappropriate, since
this can of course happen, such as when that argument is the result
of the SPREAD() intrinsic with non-constant DIM= or NCOPIES= arguments.
Replace with an if() statement.
Differential Revision: https://reviews.llvm.org/D152212
Phoebe Wang [Tue, 6 Jun 2023 02:24:37 +0000 (10:24 +0800)]
[X86][NFC] Refactor: there's only v16bf16 in 256-bit shuffle
Jianjian GUAN [Fri, 2 Jun 2023 04:01:10 +0000 (12:01 +0800)]
[RISCV] Improve selection for vector fpclass.
Since vfclass intruction will only set one single bit in the result, so if we only want to check 1 fp class, we could use vmseq to do it.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D151967
varconst [Sat, 3 Jun 2023 02:23:29 +0000 (19:23 -0700)]
[libc++][ranges] Implement the changes to container adaptors from P1206 (`ranges::to`):
- add the `from_range_t` constructors and the related deduction guides;
- add the `push_range` member function.
(Note: this patch is split from https://reviews.llvm.org/D142335)
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D149829
Sam James [Tue, 6 Jun 2023 01:08:01 +0000 (02:08 +0100)]
[CMake] Quote variables where "TARGET" may be a value
In CMake, "TARGET" is a special keyword. But it's also an LLVM component, which
means downstreams may request "target" or "TARGET" from CMake. Quote such input
so "TARGET" is interpreted as a string rather than a keyword.
This is a followup to
75a0502fe0053c72b57b61143a55600814d931fd (D150884).
Fixes Meson's test suite and an issue which manifested identically to #61436
but appears to have been a slightly different problem.
Bug: https://github.com/mesonbuild/meson/issues/11642
Bug: https://github.com/llvm/llvm-project/issues/61436
Reviewed By: tstellar
Differential Revision: https://reviews.llvm.org/D152121