Noah Goldstein [Wed, 8 Mar 2023 16:57:46 +0000 (10:57 -0600)]
[X86] Add masked predicate execution variants for instructions in X86FixupInstTuning
Masked variants of UNPCKLPD, UNPCKHPD, and PERMILPS were missing and
be transformed with the same logic as their non-masked counterparts.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D144763
Noah Goldstein [Wed, 22 Feb 2023 16:59:17 +0000 (10:59 -0600)]
[X86] Add support for using Sched/Codesize information to `X86FixupInstTuning` Pass.
Use this to handle new transform: `{v}unpck{l|h}pd` -> `{v}shufps`. We
need the sched information here as `{v}shufps` is 1 more byte of code
size, so we only want to make this transformation if `{v}shufps` is
actually faster.
Differential Revision: https://reviews.llvm.org/D144570
Noah Goldstein [Tue, 7 Mar 2023 23:44:07 +0000 (17:44 -0600)]
[X86] Add ICX target in `unpckpd` tuning tests; NFC
Differential Revision: https://reviews.llvm.org/D145531
Craig Topper [Wed, 8 Mar 2023 17:51:27 +0000 (09:51 -0800)]
[IVDescriptors] Pass IsSigned when creating an all 1s constant for UMin recurrence.
This only matters for types larger than i64, and is consistent with
the code for RecurKind::And which also creates all 1s.
We don't have any tests for UMin or And with types larger than i64.
Craig Topper [Wed, 8 Mar 2023 17:10:31 +0000 (09:10 -0800)]
[RISCV] Don't parse the decimal minimum value for fli.s/fli.d/fli.h.
There are a couple bugs in the current support for this:
-We do all the parsing in single precision so any value less than or
equal to the minimum fp32 is accepted as the minimum value for f64.
-To support fp16 minimum value, getLoadFP32Imm has a special case, but
that causes a miscompile in CodeGen.
Differential Revision: https://reviews.llvm.org/D145542
Craig Topper [Wed, 8 Mar 2023 17:10:18 +0000 (09:10 -0800)]
[RISCV] Store fli min/nan/inf in index form in RISCVOperand.
Instead of converting to FP value, store them as Index using an
immediate operand.
Do the same for the explicit index form.
This avoids using the FP32 version of these special values as the
representation for fli.h and fli.d. inf/nan aren't so bad, but
"min" is problematic as the current implementation allows fli.d and
fli.h to accept the decimal version of the fp32 minimum value. I
will submit another patch to fix that.
Differential Revision: https://reviews.llvm.org/D145535
Joseph Huber [Tue, 7 Mar 2023 16:34:34 +0000 (10:34 -0600)]
[Libomptarget] Update handling of architectures for DeviceRTL
The support for enabling and disabling certain architectures for the
OpenMP device RTL is different between AMD and Nvidia. This patch
updates the logic to make it common. This supports the `auto` format
more generally via the `nvptx-arch` and `amdgpu-arch` options. (These
are not availible at CMake time without a runtimes build, or another
install somewhere. But that only prevents users from using auto).
Reviewed By: ye-luo
Differential Revision: https://reviews.llvm.org/D145513
Luke Lau [Wed, 1 Mar 2023 00:55:21 +0000 (00:55 +0000)]
[RISCV] Add vsseg intrinsic for fixed length vectors
These intrinsics are equivalent to the regular @llvm.riscv.vssegNF
intrinsics, only they accept fixed length vectors in their overloaded
types: The regular intrinsics only operate on scalable vectors.
These intrinsics convert the fixed length vectors to scalable ones, and
then lower it on to the regular scalable intrinsic.
This mirrors the intrinsics added in
0803dba7dd998ad073d75a32b65296734c10ae70
This will be used in a later patch with the Interleaved Access pass.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D145022
Renaud-K [Wed, 8 Mar 2023 00:09:23 +0000 (16:09 -0800)]
[flang] Moving common polymorphic code into utility files
Differential revision: https://reviews.llvm.org/D145530
Mark de Wever [Tue, 7 Mar 2023 19:02:14 +0000 (20:02 +0100)]
[libc++][test] Uses qualified std::uint32_t.
The module std does not provide c-types in the global namespace. This
means all these types need to be fully qualified. This is a first step
to convert them by using sed.
Since this is an automated conversion other types like uint64_t are kept
as is.
Note that tests in the directory libcxx/test/std/depr/depr.c.headers
should not be converted automatically. This requires manual attention,
there some test require testing uint32_t in the global namespace. These
test should fail when using the std module, and pass when using the
std.compat module.
A similar issue occurs with atomic, atomic_uint32_t is specified as
using atomic_uint32_t = atomic<uint32_t>; // freestanding
So here too we need to keep the name in the global namespace in the
tests.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D145520
Paul Walker [Wed, 8 Mar 2023 15:19:43 +0000 (15:19 +0000)]
[CodeGenPrepare] Stop llvm.vscale() -> getelementptr(null, 1) transformation.
I've pulled this change from D145404 to land in isolation because
I'm concerned the code might be more important than the test
coverage might suggest (NOTE: the code has no test coverage).
Nikolas Klauser [Wed, 8 Mar 2023 15:38:30 +0000 (16:38 +0100)]
Revert "[ASan][libcxx] Annotating std::vector with all allocators"
This reverts commit
a9356a515b5a1a3637eaf5820fc0d2c0dad21a64.
Michael Buch [Wed, 8 Mar 2023 15:33:41 +0000 (15:33 +0000)]
[ReleaseNotes] Fix formatting for LLDB changes
Xi Ruoyao [Wed, 8 Mar 2023 15:26:57 +0000 (16:26 +0100)]
[compiler-rt][builtins] Define AT_HWCAP2 for AArch64
Without the definition, build fails on AArch64 with
> error: 'AT_HWCAP2' undeclared (first use in this function);
> did you mean 'AT_HWCAP'?
with old Glibc versions.
Differential Revision: https://reviews.llvm.org/D145494
Ilya Leoshkevich [Wed, 8 Mar 2023 14:53:33 +0000 (15:53 +0100)]
[sanitizer] Intercept glibc's argp_parse()
Glibc provides the argp_parse() function for parsing command line
arguments [1].
Indicate that argc/argv are read from and arg_index is written to.
Strictly speaking, we also need to indicate that argp is read from,
but this would require describing its layout, and most people use a
static initializer there, so it's not worth the effort.
[1] https://www.gnu.org/software/libc/manual/html_node/Argp.html
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D143330
Simon Pilgrim [Wed, 8 Mar 2023 15:00:00 +0000 (15:00 +0000)]
[X86] umax.ll - remove unused arguments. NFC.
Alex Richardson [Fri, 3 Mar 2023 13:54:08 +0000 (13:54 +0000)]
[builtins] Only build float16/bfloat16 code if actually supported
When building compiler-rt builtins for x86_64 they library will by default
also be built for i386. We unconditionally add the Float16 compile flags
since the check for Float16 support will be done using x86_64 compiler
flags, but i386 does not actually support it. Fix this by moving the
COMPILER_RT_HAS_FLOAT16 and COMPILER_RT_HAS_FLOAT16 checks to a
per-target-architecture check inside the loop (using
`check_c_source_compiles` and `cmake_{push,pop}_check_state`).
Many of the checks in the builtin-config-ix file should probably also be
changed to per-target-arch checks, but so far only the Float16 one has
caused issues. This is an alternative to D136044 which added a special case
for i386 FreeBSD.
Fixes: https://github.com/llvm/llvm-project/issues/57224
Differential Revision: https://reviews.llvm.org/D145237
David Spickett [Wed, 8 Mar 2023 10:03:10 +0000 (10:03 +0000)]
[lldb] Remove unused CrashReasonAsString function
The last user was ProcessMessage, which has itself been removed.
Reviewed By: emaste
Differential Revision: https://reviews.llvm.org/D145561
Nikolas Klauser [Fri, 17 Feb 2023 13:01:19 +0000 (14:01 +0100)]
[libc++] Add clang-tidy check for version checks
This check flags code which uses `_LIBCPP_STD_VER` the wrong way, or tries to use `__cplusplus`. It flags cases where we use `_LIBCPP_STD_VER >` instead of `_LIBCPP_STD_VER >=` and where wrong values are used (e.g. `_LIBCPP_STD_VER >= 24`).
Reviewed By: ldionne, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D144261
Shivam Gupta [Wed, 8 Mar 2023 09:03:38 +0000 (14:33 +0530)]
[Docs] Fix a link for cray-pointer documentation
Differential Revision: https://reviews.llvm.org/D145554
David Truby [Mon, 27 Feb 2023 16:41:26 +0000 (16:41 +0000)]
[flang] Implement atand intrinsic
This implements the atand intrinsic by performing a multiplication
by 180/pi to the result of a call to atan inline.
Differential Revision: https://reviews.llvm.org/D144885
Siva Chandra [Wed, 8 Mar 2023 13:47:14 +0000 (10:47 -0300)]
[libc] Add riscv64 fenv implementation and enable the fenv.h functions.
Reviewed By: mikhail.ramalho
Differential Revision: https://reviews.llvm.org/D145560
Viktoriia Bakalova [Wed, 8 Mar 2023 12:41:05 +0000 (12:41 +0000)]
Re-land [clangd] Add support for missing includes analysis.
This reverts commit
fd8c9ef20a9519dccd5b8178b29ed4574285d36f.
Differential Revision: https://reviews.llvm.org/D145577
Guillaume Chatelet [Thu, 9 Feb 2023 21:36:59 +0000 (21:36 +0000)]
[bazel] Add layering-check
In the same vein as https://reviews.llvm.org/D141553
Enable the feature globally to ensure layering and catch circular dependencies
(https://llvm.org/docs/CodingStandards.html#library-layering).
Differential Revision: https://reviews.llvm.org/D143678
David Spickett [Wed, 8 Mar 2023 09:51:45 +0000 (09:51 +0000)]
[lldb] Remove unused POSIX ProcessMessage files
The last use of these was removed in
cd443398566b953642ead7c81528ab5b4e211eb9.
Reviewed By: emaste
Differential Revision: https://reviews.llvm.org/D145559
Valentin Clement [Wed, 8 Mar 2023 12:51:41 +0000 (13:51 +0100)]
[flang][NFC] Fix typo
David Green [Wed, 8 Mar 2023 12:48:21 +0000 (12:48 +0000)]
[AArch64] Fix load-insert-zero patterns with i8 and negative offsets.
These should have been using the LDURBi instructions where the offset is
negative, as reported from the reproducer in D144086.
Viktoriia Bakalova [Wed, 8 Mar 2023 12:34:15 +0000 (12:34 +0000)]
Revert "Re-land [clangd] Add support for missing includes analysis."
This reverts commit
85a5c17b66768353b7fff717904e42805bb6a547.
Viktoriia Bakalova [Wed, 8 Mar 2023 12:29:43 +0000 (12:29 +0000)]
Revert "Re-land [clangd] Add support for missing includes analysis."
This reverts commit
7bd56ddaeeb578331d3dfc0c4a2fe2727d0d1861.
Viktoriia Bakalova [Wed, 8 Mar 2023 12:27:17 +0000 (12:27 +0000)]
Revert "Revert "Re-land [clangd] Add support for missing includes analysis.""
This reverts commit
9814b4d07f614e83e7a244f74fc562f2b5cc9b15.
Viktoriia Bakalova [Wed, 8 Mar 2023 12:24:51 +0000 (12:24 +0000)]
Revert "Re-land [clangd] Add support for missing includes analysis."
This reverts commit
85a5c17b66768353b7fff717904e42805bb6a547.
Viktoriia Bakalova [Wed, 8 Mar 2023 10:58:43 +0000 (10:58 +0000)]
Re-land [clangd] Add support for missing includes analysis.
This reverts commit
2eb5ac99a76dbbf8ac68c538211fabeaa5ac0bfd.
Differential Revision: https://reviews.llvm.org/D145576
Mikhail R. Gadelha [Tue, 7 Mar 2023 12:53:34 +0000 (09:53 -0300)]
[libc] Small improvements to libc cmake
This patch includes:
1. Better error message when cmake finds incompatible triple
2. Added missing header dependencies libc/include/CMakeLists.txt as per
app.td
3. Removed unused $LLVM_LIBC_INCLUDE_DIRS cmake variable
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D145496
Carl Ritson [Wed, 8 Mar 2023 11:42:17 +0000 (20:42 +0900)]
Revert "[IRLinker] Fix mapping of declaration metadata"
This reverts commit
be0ef4b95d947a324aaf58373691723a0307822b.
Investigating use after free issue.
Valery Pykhtin [Thu, 27 Oct 2022 06:55:16 +0000 (08:55 +0200)]
[AMDGPU] Scheduler: fix RP calculation for a MBB with one successor
We reuse live registers after tracking one MBB as live-ins to the successor MBB
if the successor is only one but we don't check if the successor has other predecessors.
`A B`
` \ /`
` C`
A and B have one successor but C has live-ins defined by A and B and therefore should be
initialized using LIS.
This fixes 83 lit tests out if 420 with EXPENSIVE_CHECK enabled.
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D136918
Florian Hahn [Wed, 8 Mar 2023 11:07:14 +0000 (12:07 +0100)]
[STLExtras] Use std::get in less_first,less_second to support more types
Update less_first,less_second to use std::get to access the first and
second component. This extends support to any type implementing
std::get, like tuples.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D145489
Viktoriia Bakalova [Wed, 8 Mar 2023 10:58:43 +0000 (10:58 +0000)]
Re-land [clangd] Add support for missing includes analysis.
This reverts commit
2eb5ac99a76dbbf8ac68c538211fabeaa5ac0bfd.
Alex Bradbury [Wed, 8 Mar 2023 10:48:01 +0000 (10:48 +0000)]
[docs] Document how frequently the staging buildmaster configuration is reconfigured
Differential Revision: https://reviews.llvm.org/D144465
Michael Buch [Wed, 8 Mar 2023 10:43:47 +0000 (10:43 +0000)]
[lldb][test][NFC] TestDataFormatterCpp.py: Remove redundant FIXME
This got fixed in D145241
Differential Revision: https://reviews.llvm.org/D145241
Florian Hahn [Wed, 8 Mar 2023 10:39:43 +0000 (11:39 +0100)]
[VPlan] Check if recipe is in ReplicateRegion for IfPredicateInstr (NFC)
Check if replicate recipe is in a replicate region when considering to
collect predicated instructions. This allows use IsPredicated for
recipes with a mask attached directly in D143865.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D145322
Adrian Kuegel [Wed, 8 Mar 2023 09:39:21 +0000 (10:39 +0100)]
[mlir] Apply ClangTidyLegacy findings (NFC)
- 'override' is redundant since the function is already declared 'final'.
- 'virtual' is redundant since the function is already declared 'override'.
Simon Pilgrim [Wed, 8 Mar 2023 09:32:12 +0000 (09:32 +0000)]
[InstCombine] Regenerate sub-minmax.ll
Reduces the superfluous diffs in D145540
Stanislav Mekhanoshin [Tue, 7 Mar 2023 20:39:49 +0000 (12:39 -0800)]
[AMDGPU] Skip buffer_wbl2 before atomic fence acquire
Memory models for gfx90a and gfx940 do not require buffer_wbl2
before the fence for acquire ordering, but we do insert the full
release.
Fixes: SWDEV-386785
Differential Revision: https://reviews.llvm.org/D145524
Valentin Clement [Wed, 8 Mar 2023 08:50:51 +0000 (09:50 +0100)]
[flang] Align same_type_as result to other compilers
Unallocated unlimited polymorphic entities do not have a dynamic type set
and do not have declared type. The standard notes that the result is
processor dependent when one of the arguments of same_type_as is in this
case. Align the result to other compiler (gfortran, nvfortran).
Reviewed By: jeanPerier, PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D145384
Chuanqi Xu [Wed, 8 Mar 2023 08:40:19 +0000 (16:40 +0800)]
[NFC] [C++20] [Modules] Add a test for pr60085
Close https://github.com/llvm/llvm-project/issues/60085
When I look into pr60085, I finf the issue gone away now surprisingly.
Leave a test for this to prevent it happen again.
Andrzej Warzynski [Sun, 5 Mar 2023 12:23:17 +0000 (12:23 +0000)]
[mlir][linalg] Refine how contiguous loads are identified
Vectorization of `tensor.extract` using contiguous loads
(`vector.transfer_read`) was introduced in [1]. This patch updates and
refines the existing logic (so that more cases of contiguous can be
identified), as well as adds more tests.
Specifically, contiguous load operations are identified by making sure
that:
1. non-trailing indices for `tensor.extract` are loop invariant (so,
e.g., there are no "jumps" from one row to the other between
iterations),
2. the trailing index for `tensor.extract` increments by 1 with every
loop iteration (so that it's always adjacent elements that are
loaded).
This patch introduces:
* `isLoopInvariantIdx` for step 1., and
* `isContiguousLoadIdx` for step 2.
These new methods replace:
* `isContiguousLoadIdx`, and `isBasedOnIndexOp`.
Both approaches lead to similar end-result (none of the existing tests
required updating). However, with the updated approach, it's much easier
to treat the trailing and non-trailing indices separately and to add
more cases for which contiguous loads can be used.
[1] https://reviews.llvm.org/D141998
Differential Revision: https://reviews.llvm.org/D145385
Yeting Kuo [Tue, 21 Feb 2023 11:54:05 +0000 (19:54 +0800)]
[InstCombine][debuginfo] Update valueCoversEntireFragment for fixed size fragment and scalable value.
Update valueCoversEntireFragment to handle new case and add regression test.
Reviewed By: sdesmalen, aprantl
Differential Revision: https://reviews.llvm.org/D144472
Michael Platings [Mon, 6 Mar 2023 22:53:54 +0000 (22:53 +0000)]
Use LLVM_USE_SYMLINKS option in install_symlink
The change to potentially use symlinks on Windows was added in
https://reviews.llvm.org/D99170.
LLVM_USE_SYMLINKS was added more recently in
https://reviews.llvm.org/D135578 and allows specifying at configure time
whether or not symlinks should be created. The benefit of using this
option is it allows building the package on a symlink-capable Windows
machine with symlinks disabled so that the resulting package can be used
on a Windows machine that doesn't support symlinks.
Differential Revision: https://reviews.llvm.org/D145443
esmeyi [Wed, 8 Mar 2023 07:19:35 +0000 (02:19 -0500)]
[PowerPC] Check if the latch block is in the value list for the PHI before get the incoming value.
Summary: Fixes #60990. There is a crash reported during Running pass 'Prepare loop for ppc preferred instruction forms'. The crash occurs in 32bit PowerPC.
Reviewed By: shchenz
Differential Revision: https://reviews.llvm.org/D145350
Carl Ritson [Wed, 8 Mar 2023 06:28:53 +0000 (15:28 +0900)]
[IRLinker] Fix mapping of declaration metadata
Ensure metadata for declarations copied during materialization
is properly mapped if declarations do not become definitions.
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D145318
Xiang1 Zhang [Wed, 8 Mar 2023 07:00:02 +0000 (15:00 +0800)]
[NFC] Remove dead code in ExtAddrMode::print checked by coverty tool
Mikael Holmen [Fri, 3 Mar 2023 13:20:26 +0000 (14:20 +0100)]
[ADCE] Preserve MemorySSA if only debug instructions are removed
As we've seen in
https://github.com/llvm/llvm-project/issues/58285
throwing away MemorySSA when only debug instructions are removed can lead
to different code when debug info is present or not present.
This is the second attempt at fixing the problem. The first one was
https://reviews.llvm.org/D145051
which was reverted due to a 15% compile time regression for tramp3d-v4
in NewPM-ReleaseLTO-g.
Differential Revision: https://reviews.llvm.org/D145478
Mikael Holmen [Wed, 8 Mar 2023 06:34:12 +0000 (07:34 +0100)]
Revert "[ADCE] Preserve MemorySSA if only debug instructions are removed"
This reverts commit
db7d8678bcdc440ffd0529f0d970cf10cbcbe984.
Mikael Holmen [Fri, 3 Mar 2023 13:20:26 +0000 (14:20 +0100)]
[ADCE] Preserve MemorySSA if only debug instructions are removed
As we've seen in
https://github.com/llvm/llvm-project/issues/58285
throwing away MemorySSA when only debug instructions are removed can lead
to different code when debug info is present or not present.
This is the second attempt at fixing the problem. The first one was
https://reviews.llvm.org/D145051
which was reverted due to a 15% compile time regression for tramp3d-v4
in NewPM-ReleaseLTO-g.
Vitaly Buka [Wed, 8 Mar 2023 06:26:07 +0000 (22:26 -0800)]
[fuzzer] Make sure we never delete Fuzzer
Wu, Yingcong [Wed, 8 Mar 2023 06:04:31 +0000 (22:04 -0800)]
Add test for Flags.data_flow_trace
`CollectDataFlow()` uses `Flags.collect_data_flow` and
`Flags.data_flow_trace` at the same time. But in the null check before
the invocation, only `Flags.collect_data_flow` is checked, and there is
no other method to make sure `Flags.data_flow_trace` is not null, so
adding a null check for `Flags.data_flow_trace`.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D145040
Wu, Yingcong [Wed, 8 Mar 2023 05:55:33 +0000 (21:55 -0800)]
Use the right printf format specifiers
Some printf format strings in libfuzzer are using the wrong specifizers, fix in this commit.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D145033
Bojun Seo [Wed, 8 Mar 2023 05:42:11 +0000 (21:42 -0800)]
[lsan] Initialize uptr value with number not boolean
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D145354
Dave MacLachlan [Wed, 8 Mar 2023 05:38:04 +0000 (21:38 -0800)]
[test] Remove fprintf argument after D144830
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D145461
Christopher Ferris [Wed, 8 Mar 2023 05:17:44 +0000 (05:17 +0000)]
[scudo] Do not instantiate Android svelte allocator.
The Android svelte allocator is not used, and will likely require
some configuration and experimentation to find a balanced config.
Leave the svelte config and size map so they can be used as the
basis for the future Android svelte config.
Reviewed By: Chia-hungDuan
Differential Revision: https://reviews.llvm.org/D145525
Argyrios Kyrtzidis [Tue, 7 Mar 2023 06:26:52 +0000 (22:26 -0800)]
[test/ARCMT/verify.m] Add lit test for `
5e035651fd3acbb2645abbe80cae332d90eac78a` commit
Differential Revision: https://reviews.llvm.org/D145473
Craig Topper [Wed, 8 Mar 2023 03:52:57 +0000 (19:52 -0800)]
[RISCV] Add test case for Zfa fli.s miscompile. NFC
The f32 matching code for fli was hacked to allow the f16 minimum value
to match for the fli.h instruction in the assembler. This was done
because the assembler parses the floating point literal for fli.h,
fli.s, and fli.d as a single precision value.
Unfortunately, this function is also used by CodeGen and causes
this value to be miscompiled for f32.
Jun Zhang [Wed, 8 Mar 2023 03:22:06 +0000 (11:22 +0800)]
Precommit tests for max(a,b) nsw/nuw - min(a,b) --> abs(a - b); NFC
Signed-off-by: Jun Zhang <jun@junz.org>
Nico Weber [Wed, 8 Mar 2023 03:14:11 +0000 (22:14 -0500)]
Revert "[clangd] Add support for missing includes analysis."
This reverts commit
38b9fb5a129db3e086610d53b534833273c5b4d0.
Breaks tests on Windows, see comments on https://reviews.llvm.org/D143496
Slava Zakharin [Wed, 8 Mar 2023 02:43:42 +0000 (18:43 -0800)]
[flang] Enable target rewrite for int args/rets of bind(c) functions.
BIND(C) subprograms must use the same target ABI as the C processor,
so 1/2-byte int args/rets must be rewritten to use signext attribute.
This change-set also sets fir.bindc_name for the math functions used
during lowering so that they can be fixed up as well (though, currently
none of them needs to be affected).
Differential Revision: https://reviews.llvm.org/D145537
Alina Sbirlea [Wed, 8 Mar 2023 01:08:36 +0000 (17:08 -0800)]
[lldb] Fix after __SVCount_t added for AArch64
Fix after
https://github.com/llvm/llvm-project/commit/
07158c54add927057690aa8c073d35d42eac7006
Differential Revision: https://reviews.llvm.org/D145533
Christudasan Devadasan [Wed, 1 Mar 2023 07:51:57 +0000 (13:21 +0530)]
[AMDGPU] Extend WorkGroupID* codegen for compute shaders
Currently, the codegen support for llvm.amdgcn.workgroup.id*
intrinsics are enabled only for compute kernels. In addition,
this patch enables their selection for compute shaders on
subtargets that have architected SGPRs.
Differential Revision: https://reviews.llvm.org/D145045
Konstantin Varlamov [Wed, 8 Mar 2023 01:51:42 +0000 (17:51 -0800)]
[libc++][ranges][NFC] Fix incorrect static asserts in `almost_satisfies_types.h`
Craig Topper [Wed, 8 Mar 2023 01:46:14 +0000 (17:46 -0800)]
[RISCV] Const correct some methods in RISCVOperand. NFC
Chen Zheng [Fri, 24 Feb 2023 08:16:50 +0000 (03:16 -0500)]
[DAGCombiner] don't use the pointer info for widen store
The merged store touches memory for other underlying objects, so mapping
the merged store to the first underlying object is not correct. For example
in https://github.com/llvm/llvm-project/issues/60744, the merged store is
not correctly analyzed as dependent with memory operations which are also
part of the merged store.
Fixes #60744
Reviewed By: foad
Differential Revision: https://reviews.llvm.org/D144711
Chen Zheng [Fri, 24 Feb 2023 09:24:19 +0000 (04:24 -0500)]
[DAGCombiner] add testcase for issue #60744; NFC
Alex MacLean [Wed, 8 Mar 2023 01:10:15 +0000 (17:10 -0800)]
[Inliner][NFC] Remove redundant nullptr check
Remove the null pointer check on Callee since it is guaranteed to pass by the check
at the top of the loop which continues if Callee is null. While this change is somewhat
trivial, for what it's worth this check triggers Coverity warnings because it implies that
Callee might be null at this point even though it is dereferenced in the preceding code.
Reviewed By: mtrofin
Differential Revision: https://reviews.llvm.org/D145463
Jie Fu [Wed, 8 Mar 2023 01:08:42 +0000 (09:08 +0800)]
[lldb] Add missing switch case for SveCount in TypeSystemClang::GetEncoding (NFC)
/data/llvm-project/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp:4841:13: error: enumeration value 'SveCount' not handled in switch [-Werror,-Wswitch]
switch (llvm::cast<clang::BuiltinType>(qual_type)->getKind()) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
Jez Ng [Fri, 3 Mar 2023 18:22:40 +0000 (10:22 -0800)]
[lld-macho][nfc] Convert more alignTo() to alignToPowerOf2()
Reviewed By: #lld-macho, smeenai
Differential Revision: https://reviews.llvm.org/D145261
Siva Chandra [Wed, 8 Mar 2023 00:46:08 +0000 (21:46 -0300)]
[libc] Add riscv64 syscall implementation.
All syscall wrapper functions which have unit tests have been enabled.
Reviewed By: kito-cheng
Differential Revision: https://reviews.llvm.org/D145452
Michael Jones [Sat, 4 Mar 2023 00:06:29 +0000 (16:06 -0800)]
[libc][docs] add link to join the discord
Previously we only linked to the channel within the discord.
Differential Revision: https://reviews.llvm.org/D145283
Mehdi Amini [Mon, 6 Mar 2023 17:09:51 +0000 (18:09 +0100)]
Make mlir-opt --show-dialects option print on a single line
Differential Revision: https://reviews.llvm.org/D145398
Jonas Devlieghere [Tue, 7 Mar 2023 23:59:30 +0000 (15:59 -0800)]
[lldb] Copy log files into diagnostic directory
This patch copies over log files to the diagnostic directory. The caveat
here is that this only works for logs that are redirected to a file. The
implementation piggybacks of the mapping kept by the debugger. The
advantage is that it's free until you generate the diagnostics, at which
point you only pay the price of copying over the file.
Differential revision: https://reviews.llvm.org/D135631
Craig Topper [Tue, 7 Mar 2023 23:33:50 +0000 (15:33 -0800)]
[RISCV] Don't accept '-min', '-inf' or '-nan' in RISCVAsmParser::parseFPImm.
We need to check for identifier before optionally parsing a minus sign.
Owen Pan [Tue, 7 Mar 2023 23:12:18 +0000 (15:12 -0800)]
[clang-format][NFC] Remove isCpp11AttributeSpecifier()
See https://reviews.llvm.org/D137486#3910570.
Michael Spencer [Tue, 7 Mar 2023 22:45:29 +0000 (14:45 -0800)]
[clang][DependencyScanner] Cache modulemap stat failures
Add `module.modulemap` as a file we cache stat failures for as there
are a lot of stats for this file.
Clang currently uses the files it should minimize as a proxy for files
it should cache stat failures for, but really we should cache stat
failures for all paths we don't expect to change during the build.
Unfortunately the VFS API does not know _why_ clang is trying to stat
a path, so we use the filename as a proxy.
Differential Revision: https://reviews.llvm.org/D145526
Daniel Thornburgh [Tue, 7 Mar 2023 00:02:29 +0000 (16:02 -0800)]
[Fuchsia] Add LLDB options to stage 1 cmake.
LLVM_ENABLE_PROJECTS is automatically forwarded from stage 1 builds to
stage 2 builds, so setting FUCHSIA_ENABLE_LLDB has no effect on
two-stage builds.
Instead, add FUCHSIA_ENABLE_LLDB to the stage one build as well.
This also disables curses and libedit by default for now in both stage1
and stage 2 builds; these should be opt-in.
Reviewed By: haowei
Differential Revision: https://reviews.llvm.org/D145449
Jez Ng [Tue, 7 Mar 2023 19:09:01 +0000 (11:09 -0800)]
[lld-macho] Warn on method name collisions from category definitions
This implements ld64's checks for duplicate method names in categories &
classes.
In addition, this sets us up for implementing Obj-C category merging.
This diff handles the most of the parsing work; what's left is rewriting
those category / class structures.
Numbers for chromium_framework:
base diff difference (95% CI)
sys_time 2.182 ± 0.027 2.200 ± 0.047 [ -0.2% .. +1.8%]
user_time 6.451 ± 0.034 6.479 ± 0.062 [ -0.0% .. +0.9%]
wall_time 6.841 ± 0.048 6.885 ± 0.105 [ -0.1% .. +1.4%]
samples 33 22
Fixes https://github.com/llvm/llvm-project/issues/54912.
Reviewed By: #lld-macho, thevinster, oontvoo
Differential Revision: https://reviews.llvm.org/D142916
Jeffrey Tan [Sat, 4 Feb 2023 01:09:09 +0000 (17:09 -0800)]
Add a new SBDebugger::SetDestroyCallback() API
Adding a new SBDebugger::SetDestroyCallback() API.
This API can be used by any client to query for statistics/metrics before
exiting debug sessions.
Differential Revision: https://reviews.llvm.org/D143520
Craig Topper [Tue, 7 Mar 2023 22:36:17 +0000 (14:36 -0800)]
[RISCV] Return MatchOperand_ParseFail instead of MatchOperand_NoMatch from parseFPImm.
MatchOperand_NoMatch will fall back to regular operand parsing.
Returning MatchOperand_ParseFail will prevent this.
We also printed our own error message which we should only do for
MatchOperand_ParseFail.
wren romano [Tue, 7 Mar 2023 20:26:20 +0000 (12:26 -0800)]
[mlir][sparse] Cleaning up code style for genCast
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D145432
Owen Pan [Tue, 7 Mar 2023 22:34:50 +0000 (14:34 -0800)]
[clang-format][NFC] Remove an obsolete case in parsing concepts
See https://reviews.llvm.org/D142412#4078127.
Han Zhu [Thu, 16 Feb 2023 23:19:50 +0000 (15:19 -0800)]
[SROA] Fix bug where RankVectorTypes is used in std::unique
`RankVectorTypes` is a not an equivalence relation so when it is used in
`std::unique`, the behavior is undefined. Create `RankVectorTypesEq` and use
that instead.
Chia-hung Duan [Sat, 4 Mar 2023 01:25:18 +0000 (01:25 +0000)]
[scudo] Simplify markFreeBlocks
With memory group, we always mark the free blocks from the same region.
Therefore, we don't need to calculate the offset from base and determine
the region index. Also improve the way we deal with the last block in
the region so that the loop body is simpler.
Reviewed By: cferris
Differential Revision: https://reviews.llvm.org/D143303
Peiming Liu [Tue, 7 Mar 2023 17:14:17 +0000 (17:14 +0000)]
[mlir][sparse] deduplicate non-unique coordinates when coiterating COO tensors
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D145518
David Green [Tue, 7 Mar 2023 21:24:16 +0000 (21:24 +0000)]
[AArch64] Prefer to fold dup into fmul/fma as opposed to ld1r
There is a fold to create LD1DUPpost from dup(load) that can be postinc. If the
dup is used by a "by element" operation such as fmul or fma then it can be
slightly better to fold the dup into the fmul instead, which produces slightly
fast code.
ld1r { v1.4s }, [x0], #4
fmul v0.4s, v1.4s, v0.4s
vs
ldr s1, [x0], #4
fmul v0.4s, v0.4s, v1.s[0]
This could also be done with integer operations such as smull/umull too, so
long as the load/dup gets correctly combined into the mul operation. Currently
this just operates on foating point types.
Differential Revision: https://reviews.llvm.org/D145184
Kazu Hirata [Tue, 7 Mar 2023 21:20:21 +0000 (13:20 -0800)]
[ControlHeightReduction] Freeze potentially poisonous conditions
This patch freezes potentially poisonous conditions in conditional
branches so that we do not "move up" conditional branches
"br i1 poison".
Differential Revision: https://reviews.llvm.org/D145008
Aaron Ballman [Tue, 7 Mar 2023 21:08:24 +0000 (16:08 -0500)]
Update the C status page for WG14 N2844
The proposal is about the behavior of the _Float16,
_Float32, and _Float64 types and whether they
undergo default argument promotions (they don't).
Clang doesn't yet support TS 18661 or the parts
that made it into C2x, so we don't implement this
paper.
Dave Lee [Sat, 18 Feb 2023 03:53:16 +0000 (19:53 -0800)]
Recommit "[lldb] Redefine p alias to dwim-print command"
Redefine the `p` alias to the `dwim-print` command instead of `expression`.
See https://reviews.llvm.org/D138315 for the introduction of `dwim-print`.
To summarize, `dwim-print` is, as the name suggests, a command for printing. How a value
gets printed, is decided by `dwim-print`. In some cases, `dwim-print` will print values
using the same means as `frame variable` (because it's generally more reliable and
faster that `expression` evaluation), and in other cases `dwim-print` uses the same code
path as `expression`.
This change has been tested in two different ways:
1. Re-aliasing `p` to `dwim-print`, as in this patch
2. Redefinining the `expression` command to `CommandObjectDWIMPrint`
Previously, many of the lldb's tests used `p`, and which meant a test run with `p`
aliases to `dwim-print` was a good way to test `dwim-print`. However most of those tests
were updated to use `expression` explicitly (in anticipation of this change). Now, the
best way to test `dwim-print` is the second approach:
```
diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp
index
373c894f34f5..
9c943cd30c7c 100644
--- a/lldb/source/Interpreter/CommandInterpreter.cpp
+++ b/lldb/source/Interpreter/CommandInterpreter.cpp
@@ -539,7 +539,7 @@ void CommandInterpreter::LoadCommandDictionary() {
REGISTER_COMMAND_OBJECT("diagnostics", CommandObjectDiagnostics);
REGISTER_COMMAND_OBJECT("disassemble", CommandObjectDisassemble);
REGISTER_COMMAND_OBJECT("dwim-print", CommandObjectDWIMPrint);
- REGISTER_COMMAND_OBJECT("expression", CommandObjectExpression);
+ REGISTER_COMMAND_OBJECT("expression", CommandObjectDWIMPrint);
REGISTER_COMMAND_OBJECT("frame", CommandObjectMultiwordFrame);
REGISTER_COMMAND_OBJECT("gui", CommandObjectGUI);
REGISTER_COMMAND_OBJECT("help", CommandObjectHelp);
```
When the test suite is run with this change, there are two main categories of test
failures for specific to features that `dwim-print` intentionally doesn't support:
1. Top level expressions (`--top-level`/`-p`)
2. Multiline expressions
In cases where the behavior of `expression` is needed, users can use `expression` at
those times.
Differential Revision: https://reviews.llvm.org/D145189
Alexey Bataev [Mon, 20 Feb 2023 21:26:11 +0000 (13:26 -0800)]
[SLP]Initial support for reshuffling of non-starting buildvector/gather nodes.
Previously only the very first gather/buildvector node might be probed for reshuffling of other nodes.
But the compiler may do the same for other gather/buildvector nodes too, just need to check the
dependency and postpone the emission of the dependent nodes, if the origin nodes were not emitted yet.
Part of D110978
Differential Revision: https://reviews.llvm.org/D144958
Snehasish Kumar [Tue, 7 Mar 2023 19:34:57 +0000 (19:34 +0000)]
[memprof] Update the isRuntime symbolization check.
Update the isRuntime check to only match against known memprof filenames
where interceptors are defined. This avoid issues where the path does
not include the directory based on how the runtime was compiled. Also
update the unittest.
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D145521
Mark de Wever [Tue, 7 Mar 2023 20:13:15 +0000 (21:13 +0100)]
[libc++] Fixes transitive includes.
Since the CI is broken, I didn't investigate why it happened. It just
fixes it.
Mitch Phillips [Tue, 7 Mar 2023 19:29:49 +0000 (11:29 -0800)]
Split getCompileUnitFor{Data,Code}Address.
Getting compile units for data addresses is much slower, as it often
requires a slow fallback path to walk every DWARF entry, as
data addresses don't fall into the compilation unit ranges.
Most lookups are code addresses, and don't need this logic. Split the
functionality out so that we restore the fast-path behaviour for the
code lookups.
More context at:
https://discourse.llvm.org/t/llvm-symbolizer-has-gotten-extremely-slow/67262
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D145009
James Y Knight [Wed, 8 Feb 2023 15:47:11 +0000 (10:47 -0500)]
[TableGen] Delete support for deprecated positional matching.
After the work in
a538d1f13a13 5351878ba196 372240dfe3d5, and
subsequently cleanup of all the in-tree targets, we can now delete the
support for positional operand matching!
This removes three options which could previously be set in a
Target's "InstrInfo" tablegen definition:
- useDeprecatedPositionallyEncodedOperands
- decodePositionallyEncodedOperands
- noNamedPositionallyEncodedOperands
(Also announced at https://discourse.llvm.org/t/tablegen-deleting-deprecated-positional-instruction-operand-matching-support/68524)
Differential Revision: https://reviews.llvm.org/D144210
Rahul Kayaith [Tue, 7 Feb 2023 21:07:50 +0000 (16:07 -0500)]
[mlir][python] Capture error diagnostics in exceptions
This updates most (all?) error-diagnostic-emitting python APIs to
capture error diagnostics and include them in the raised exception's
message:
```
>>> Operation.parse('"arith.addi"() : () -> ()'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
mlir._mlir_libs.MLIRError: Unable to parse operation assembly:
error: "-":1:1: 'arith.addi' op requires one result
note: "-":1:1: see current operation: "arith.addi"() : () -> ()
```
The diagnostic information is available on the exception for users who
may want to customize the error message:
```
>>> try:
... Operation.parse('"arith.addi"() : () -> ()')
... except MLIRError as e:
... print(e.message)
... print(e.error_diagnostics)
... print(e.error_diagnostics[0].message)
...
Unable to parse operation assembly
[<mlir._mlir_libs._mlir.ir.DiagnosticInfo object at 0x7fed32bd6b70>]
'arith.addi' op requires one result
```
Error diagnostics captured in exceptions aren't propagated to diagnostic
handlers, to avoid double-reporting of errors. The context-level
`emit_error_diagnostics` option can be used to revert to the old
behaviour, causing error diagnostics to be reported to handlers instead
of as part of exceptions.
API changes:
- `Operation.verify` now raises an exception on verification failure,
instead of returning `false`
- The exception raised by the following methods has been changed to
`MLIRError`:
- `PassManager.run`
- `{Module,Operation,Type,Attribute}.parse`
- `{RankedTensorType,UnrankedTensorType}.get`
- `{MemRefType,UnrankedMemRefType}.get`
- `VectorType.get`
- `FloatAttr.get`
closes #60595
depends on D144804, D143830
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D143869