Rainer Orth [Wed, 9 Feb 2022 21:01:55 +0000 (22:01 +0100)]
[MLIR][Presburger] Disambiguate call to floor
While testing LLVM 14.0.0 rc1 on Solaris, compilation of `FAIL`ed with
/var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/lib/Analysis/Presburger/Utils.cpp: In lambda function:
/var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/lib/Analysis/Presburger/Utils.cpp:48:58: error: call of overloaded ‘floor(int64_t)’ is ambiguous
48 | [gcd](int64_t &n) { return floor(n / gcd); });
| ^
...
/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.3.0/include-fixed/iso/math_iso.h:201:21:
note: candidate: ‘long double std::floor(long double)’
201 | inline long double floor(long double __X) { return __floorl(__X); }
| ^~~~~
/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.3.0/include-fixed/iso/math_iso.h:165:15:
note: candidate: ‘float std::floor(float)’
165 | inline float floor(float __X) { return __floorf(__X); }
| ^~~~~
/usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.3.0/include-fixed/iso/math_iso.h:78:15:
note: candidate: ‘double std::floor(double)’
78 | extern double floor __P((double));
| ^~~~~
The same issue had already occured in the past, cf. D108750
<https://reviews.llvm.org/D108750>, and the solution is the same: cast the
`floor` arg to `double`.
Tested on `amd64-pc-solaris2.11` and `sparcv9-sun-solaris2.11`.
Differential Revision: https://reviews.llvm.org/D119324
Martin Storsjö [Wed, 9 Feb 2022 17:36:58 +0000 (19:36 +0200)]
[libunwind] Avoid a warning in 32 bit builds. NFC.
The warning was introduced with the recently merged SPARCv9
support in
2b9554b8850192bdd86c02eb671de1d866df8d87.
The cast matches the existing surrounding cases.
Differential Revision: https://reviews.llvm.org/D119353
Rainer Orth [Wed, 9 Feb 2022 20:59:52 +0000 (21:59 +0100)]
[mlir][sparse] Rename index_t to index_type again
While testing LLVM 14.0.0 rc1 on Solaris, I ran into a compile failure:
from /var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/lib/ExecutionEngine/SparseTensorUtils.cpp:22:
/usr/include/sys/types.h:103:16: error: conflicting declaration ‘typedef short int index_t’
103 | typedef short index_t;
| ^~~~~~~
In file included from
/var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/lib/ExecutionEngine/SparseTensorUtils.cpp:17:
/var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/include/mlir/ExecutionEngine/SparseTensorUtils.h:26:7:
note: previous declaration as ‘using index_t = uint64_t’
26 | using index_t = uint64_t;
| ^~~~~~~
The same issue had already occured in the past and fixed in D72619
<https://reviews.llvm.org/D72619>. More detailed explanation can also be
found there.
Tested on `amd64-pc-solaris2.11` and `sparcv9-solaris2.11`.
Differential Revision: https://reviews.llvm.org/D119323
Philip Reames [Wed, 9 Feb 2022 20:16:10 +0000 (12:16 -0800)]
[SCEV] Unwind SCEVUnionPredicate from getPredicatedBackedgeTakenCount [NFC]
For those curious, the whole reason for tracking the predicate set seperately as opposed to just immediately registering the dependencies appears to be allowing the printing code to print a result without changing the PSE state. It's slightly questionable if this justifies the complexity, but since we can preserve it with local ugliness, I did so.
Guillaume Chatelet [Tue, 8 Feb 2022 14:52:50 +0000 (14:52 +0000)]
[libc] undefined reference in LibcTest.cpp
GCC complains about undefined reference in LibcTest.cpp and indeed the wrong version of the template has been explicitly instanciated.
This is necessary to get llvm-libc compile with GCC.
Mentionning D119002 here for navigability.
Differential Revision: https://reviews.llvm.org/D119242
Peter Steinfeld [Wed, 9 Feb 2022 19:17:18 +0000 (11:17 -0800)]
[flang] Upstream runtime changes for inquiry intrinsics
This change adds runtime routines and tests for LBOUND when passed a DIM argument, SIZE, and UBOUND when not passed a DIM argument.
Associated changes for lowering have already been merged into fir-dev.
Differential Revision: https://reviews.llvm.org/D119360
Joseph Huber [Wed, 9 Feb 2022 18:43:56 +0000 (13:43 -0500)]
[Libomptarget] Increase stack size for bug49779 test
The 'bug49779.cpp' test has been failing recently. This is because the
runtime is sufficiently complex when using nested parallelism without
optimizations that the CUDA tools cannot statically determine the stack
size. Because of this the kernel can exceed the thread stack size and
crash. Work around this using the 'LIBOMPTARGET_STACK_SIZE' environment
variable and add an FAQ entry for this situation.
Fixes #53670
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D119357
Craig Topper [Wed, 9 Feb 2022 20:03:22 +0000 (12:03 -0800)]
[RISCV] Teach RISCVDAGToDAGISel::selectShiftMask to replace sub from constant with neg.
If the shift amount is (sub C, X) where C is 0 modulo the size of
the shift, we can replace it with neg or negw.
Similar is is done for AArch64 and X86.
Reviewed By: khchen
Differential Revision: https://reviews.llvm.org/D119089
Saurabh Jha [Wed, 9 Feb 2022 20:10:30 +0000 (20:10 +0000)]
[mlir] Use sparse-compiler pass in sparse benchmark
This patch uses sparse-compiler option in mlir sparse tensor benchmark
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D118579
Philip Reames [Wed, 9 Feb 2022 20:04:25 +0000 (12:04 -0800)]
[SCEV] Remove conversion to SCEVUnionPredicate in ExitNotTakenInfo [NFC]
This removes one of the places where we mutate an existing union predicate.
Sanjay Patel [Wed, 9 Feb 2022 20:05:12 +0000 (15:05 -0500)]
[InstCombine] improve test name and cleanup; NFC
The last test was intended to be a negative test with D114272,
but a more general fold can reduce it, so that is renamed.
These are all single-block tests, so remove the unnecessary labels.
David Green [Wed, 9 Feb 2022 20:02:54 +0000 (20:02 +0000)]
Revert "[LV] Remove `LoopVectorizationCostModel::useEmulatedMaskMemRefHack()`"
This reverts commit
77a0da926c9ea86afa9baf28158d79c7678fc6b9 as we've
received multiple reports of this significantly impacting performance,
in ways that don't seem to just be target specific cost models going
wrong. I would offer some reproducers, but the test changes here seem to
be full of them!
Reverting for now and hopefully we can remove the "hack" more carefully
as we go.
Alexander Yermolovich [Wed, 9 Feb 2022 19:51:32 +0000 (11:51 -0800)]
[DWARF][codegen] Fix for Aranges when split inlining is present
When we enable -fsplit-dwarf-inlining we end up with two entries
in .debug_aranges for each CU. Because it processes Skeleton CU
inline information and DWO CU.
Furthermore address calculations were incorrect because we were processing sections in Skeleton CU.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D118857
Craig Topper [Wed, 9 Feb 2022 19:37:26 +0000 (11:37 -0800)]
[RISCV] Add a really basic cost model for SK_Splice.
While testing scalable vectors I found that if we generate a
vector splice intrinsic and run the code through the loop unroller,
we'll crash due to an invalid cost.
This adds a basic cost based on the 2 slide instructions used by the
lowering in D119303.
We probably need to factor LMUL into this, but that's true for
arithmetic instructions too. So I've ignored for the moment.
Reviewed By: ABataev
Differential Revision: https://reviews.llvm.org/D119316
Andy Yankovsky [Wed, 9 Feb 2022 19:40:50 +0000 (20:40 +0100)]
[lldb] Disable failing test on Windows
Test was introduced in https://reviews.llvm.org/D113498.
Fangrui Song [Wed, 9 Feb 2022 19:38:28 +0000 (11:38 -0800)]
[MC] clang-format llvm/MC/MCContext.h. NFC
People get clang-format lints when changing declarations in the large block,
e.g.
ef736a1c39f27ef4777bbe6cf3af68c1fd588c8a Cleanup LLVMMC headers.
Just format it to reduce hassle in the future.
Craig Topper [Wed, 9 Feb 2022 19:08:24 +0000 (11:08 -0800)]
[RISCV][VP] Lower VP_FMA to RVV instructions.
We already had FMA_VL node, but we didn't have masked patterns.
I have not added the fneg variations. I'll do those after I add
llvm.vp.fneg.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D119196
Erich Keane [Wed, 9 Feb 2022 19:25:58 +0000 (11:25 -0800)]
[NFC] Fix sign-compare warning in GrammarBNF thanks to int promotion
Craig Topper [Wed, 9 Feb 2022 18:56:39 +0000 (10:56 -0800)]
[RISCV] Lower VP_FNEG to RVV instructions
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D119269
Fangrui Song [Wed, 9 Feb 2022 18:38:36 +0000 (10:38 -0800)]
[ELF][docs] Remove ignore -dc from ld.lld.1
Fangrui Song [Wed, 9 Feb 2022 18:35:53 +0000 (10:35 -0800)]
[ELF] Remove obscure -dp and GNU ld incompatible --[no-]define-common, ignore -d/-dc
https://maskray.me/blog/2022-02-06-all-about-common-symbols#no-define-common
In GNU ld, -dc only affects -r links and causes COMMON symbols to be allocated.
--no-define-common is defined to make COMMON symbols undefined for -shared.
AIUI --no-define-common is a workaround around glibc 2.1 time and not really useful.
gold confuses --define-common with -d/FORCE_COMMON_ALLOCATION and implements
--define-common with -d semantics. Its --no-define-common is incompatible with
GNU ld.
In ld.lld,
b2a23cf3c08cee45614f27eb2c6d044e506aa6a6 fixed the default -r
behavior for COMMON symbols but ported the incompatible gold
--[no-]define-common. To the best of my knowledge, no project uses -dp
--[no-]define-common. So just remove these options.
-d/-dc are used by the following projects:
* grub grub-core/genmod.sh.in uses -Wl,-r,-d (https://lists.gnu.org/archive/html/grub-devel/2022-02/msg00088.html)
* FreeBSD crunchgen uses -Wl,-dc (https://reviews.freebsd.org/D34215)
A no-op implementation works for them. Only when a program inspects relocatable
output by itself and does not recognize COMMON symbols, there may be a problem.
This is an extremely unlikely case.
Reviewed By: peter.smith
Differential Revision: https://reviews.llvm.org/D119108
Philip Reames [Tue, 8 Feb 2022 19:39:22 +0000 (11:39 -0800)]
[SCEV] Add interface for constructing generic SCEVComparePredicate [NFC}
Florian Hahn [Wed, 9 Feb 2022 18:00:03 +0000 (18:00 +0000)]
[ConstraintElimination] Remove redundant lookup (NFC).
Matthias Springer [Wed, 9 Feb 2022 16:21:55 +0000 (01:21 +0900)]
[mlir][GPU] Add ShuffleOp builder for constant offset/width
Differential Revision: https://reviews.llvm.org/D119345
LLVM GN Syncbot [Wed, 9 Feb 2022 17:34:07 +0000 (17:34 +0000)]
[gn build] Port
f1984b143367
LLVM GN Syncbot [Wed, 9 Feb 2022 17:34:06 +0000 (17:34 +0000)]
[gn build] Port
46a6f5ae148a
Florian Hahn [Wed, 9 Feb 2022 17:29:48 +0000 (17:29 +0000)]
[ConstraintElimination] Move some definitions closer to uses (NFC).
Arthur Eubanks [Wed, 9 Feb 2022 17:22:21 +0000 (09:22 -0800)]
[LoopLoadElim] Support opaque pointers
With typed pointers the pointer operand type checks the address space
and the load/store type. With opaque pointers we have to check the
load/store type separately.
Arthur Eubanks [Tue, 8 Feb 2022 02:16:08 +0000 (18:16 -0800)]
[OpaquePtr][LoopAccessAnalysis] Support opaque pointers
Previously we relied on the pointee type to determine what type we need
to do runtime pointer access checks.
With opaque pointers, we can access a pointer with more than one type,
so now we keep track of all the types we're accessing a pointer's
memory with.
Also some other minor getPointerElementType() removals.
Reviewed By: #opaque-pointers, nikic
Differential Revision: https://reviews.llvm.org/D119047
Arthur Eubanks [Wed, 9 Feb 2022 17:10:54 +0000 (09:10 -0800)]
[gn build] Port
a1862d78eb45
Jay Foad [Wed, 9 Feb 2022 17:05:19 +0000 (17:05 +0000)]
[AMDGPU] Remove dead code from shrinkScalarLogicOp
It looks like this code has been dead since shrinkScalarLogicOp
was introduced in svn r348601.
Pavel Labath [Wed, 9 Feb 2022 16:38:27 +0000 (17:38 +0100)]
[lldb] Account for extra threads in TestGdbRemoteThreadsInStopReply on windows
After
9611282c, TestGdbRemoteThreadsInStopReply is not non-deterministic
-- instead it deterministically fails due to extra threads created by
std::thread thread pool.
Adjust the tests to account for that.
Andy Yankovsky [Tue, 9 Nov 2021 18:41:56 +0000 (19:41 +0100)]
[lldb] Constant-resolve operands to `getelementptr`
Operands to `getelementptr` can be constants or constant expressions. Check
that all operands can be constant-resolved and resolve them during the
evaluation. If some operands can't be resolved as constants -- the expression
evaluation will fallback to JIT.
Fixes: https://bugs.llvm.org/show_bug.cgi?id=52449
Reviewed By: #lldb, shafik
Differential Revision: https://reviews.llvm.org/D113498
Mark de Wever [Tue, 8 Feb 2022 17:32:08 +0000 (18:32 +0100)]
[libc++] Enables put_long_double test for glibc.
Glibc adds a +-sign for NaN-values when showpos fmtflags are set.
[tab:ios.fmtflags]
showpos generates a + sign in non-negative generated numeric output
Since NaNs aren't negative this behaviour seems correct. Enable the test
for glibc and add ifdefs to make sure the existing tests still pass.
This was noticed while working on D118971.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D119260
Mark de Wever [Thu, 3 Feb 2022 18:02:36 +0000 (19:02 +0100)]
[libc++][format][nfc] Header cleanup.
Remove the unneeded macro protection, forward declarations, and
includes.
Reviewed By: #libc, Quuxplusone, ldionne, philnik
Differential Revision: https://reviews.llvm.org/D118925
Craig Topper [Wed, 9 Feb 2022 16:05:42 +0000 (08:05 -0800)]
[RISCV] Pre-process integer ISD::SPLAT_VECTOR to RISCISD::VMV_V_X_VL before isel.
This allows us to remove some isel patterns that exist for both
operations. Saving nearly 3000 bytes from the isel table.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D119197
Mark de Wever [Wed, 2 Feb 2022 18:28:04 +0000 (19:28 +0100)]
[libc++][nfc] Use TEST_HAS_NO_WIDE_CHARACTERS.
This avoids using an libc++ internal macro in our tests.
Reviewed By: #libc, Quuxplusone
Differential Revision: https://reviews.llvm.org/D119263
Craig Topper [Wed, 9 Feb 2022 15:54:07 +0000 (07:54 -0800)]
[VP] llvm.vp.fneg intrinsic and LangRef
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D119262
Mircea Trofin [Wed, 9 Feb 2022 15:25:37 +0000 (07:25 -0800)]
[nfc][mlgo] Make error message macro
`llvm_unreachable` is itself a macro, so using a constant for its
message renders that constant unused in non-debug builds.
Pavel Labath [Wed, 9 Feb 2022 15:14:15 +0000 (16:14 +0100)]
[lldb] Stabilize threaded windows lldb-server tests
The tests enabled in
9e699595 are not passing reliably -- sometimes they
report seeing fewer threads than expected.
Based on my (limited) research, this is not a lldb bug, but simply a
consequence of the operating system reporting their presence
asynchronously -- they're reported when they are scheduled to run (or
something similar), and not at the time of the CreateThread call.
To fix this, I add some additional synchronization to the test inferior,
which makes sure that the created thread is alive before continuing to
do other things.
Pavel Labath [Wed, 9 Feb 2022 13:56:45 +0000 (14:56 +0100)]
[lldb] Simplify SBCommandInterpreter::SourceInitFileInHomeDirectory
just have it delegate to the new overload.
Alexey Bataev [Wed, 9 Feb 2022 15:00:43 +0000 (07:00 -0800)]
[SLP][NFC]Fix comment, NFC.
Sven van Haastregt [Wed, 9 Feb 2022 15:12:49 +0000 (15:12 +0000)]
[OpenCL][Docs] Update OpenCL 3.0 status info
Update the table to reflect recently committed work.
Chris Bieneman [Wed, 9 Feb 2022 15:11:17 +0000 (09:11 -0600)]
[NFC] Fixing test requirements I broke
I broke these in
7a0cbe11fb26, thanks @ikudrin for catching it!
Louis Dionne [Wed, 9 Feb 2022 15:07:27 +0000 (10:07 -0500)]
[libc++] Try to fix the quoting of -isystem on Windows bots
Simon Pilgrim [Wed, 9 Feb 2022 15:04:27 +0000 (15:04 +0000)]
[X86] Refresh funnel/rotate AVX512 VBMI tests
Assume that if VBMI2 is enabled then VBMI is as well - correctly shows the fallback and widening code that real world targets will actually see
Sander de Smalen [Mon, 24 Jan 2022 17:45:39 +0000 (17:45 +0000)]
[AArch64][SVE] NFC: Add test file for predicate vector reductions.
This adds some tests for vector reductions which can and should
be implemented with ptest as opposed to promoted ANDV/ORV reduction.
Sander de Smalen [Fri, 4 Feb 2022 08:46:26 +0000 (08:46 +0000)]
[AArch64] NFC: Autogen check lines for sve-setcc.ll
Sander de Smalen [Wed, 9 Feb 2022 09:54:53 +0000 (09:54 +0000)]
[DAGCombiner] Fold `ty1 extract_vector(ty2 splat(V)) -> ty1 splat(V)`
This seems like an obvious fold, which leads to a few improvements.
Reviewed By: david-arm
Differential Revision: https://reviews.llvm.org/D118920
Alexander Belyaev [Wed, 9 Feb 2022 14:20:04 +0000 (15:20 +0100)]
[mlir][nfc] Expose linalg tiling helpers.
Differential Revision: https://reviews.llvm.org/D119330
Valentin Clement [Wed, 9 Feb 2022 14:11:55 +0000 (15:11 +0100)]
[flang] Add type conversion for !fir.box<none>
`none` is used in `fir.box` type to specify a polymorphic type.
This patch add the conversion from `!fir.box<none>` to LLVM.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D119325
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
Aaron Ballman [Wed, 9 Feb 2022 14:10:10 +0000 (09:10 -0500)]
Use functions with prototypes when appropriate; NFC
A significant number of our tests in C accidentally use functions
without prototypes. This patch converts the function signatures to have
a prototype for the situations where the test is not specific to K&R C
declarations. e.g.,
void func();
becomes
void func(void);
This is the fifth batch of tests being updated (there are a significant
number of other tests left to be updated).
Note, the behavior of -ast-print is broken. It prints functions with a
prototype (void) as if they have no prototype () in C. Some tests need
to disable strict prototype checking when recompiling the results of an
-ast-print invocation.
Jonathan Peyton [Wed, 9 Feb 2022 14:04:47 +0000 (08:04 -0600)]
[OpenMP][libomp] Replace accidental VLA with KMP_ALLOCA
MSVC does not support variable length arrays. Replace with KMP_ALLOCA
which is already used in the same file for stack-allocated variables.
Louis Dionne [Tue, 8 Feb 2022 16:38:29 +0000 (11:38 -0500)]
[runtimes] Remove support for standalone builds
Standalone build have been deprecated for some time now, so this
commit removes support for those builds entirely from libc++, libc++abi
and libunwind.
This, along with the removal of other legacy ways to build, will allow
for major build system simplifications.
Differential Revision: https://reviews.llvm.org/D119255
Louis Dionne [Wed, 9 Feb 2022 13:38:06 +0000 (08:38 -0500)]
[libc++] Avoid -Wmacro-redefined in libc++ headers in the legacy test config
serge-sans-paille [Wed, 9 Feb 2022 13:26:30 +0000 (08:26 -0500)]
Add missing MC includes in bolt/
Changes needed after
ef736a1c39f27ef4 that removes some implicit
dependencies from MrCV headers.
Nikita Popov [Wed, 9 Feb 2022 13:19:24 +0000 (14:19 +0100)]
[Bitcode] Fix size check for DIImportedEntity record
This was using && instead of ||.
Nikita Popov [Wed, 9 Feb 2022 13:14:04 +0000 (14:14 +0100)]
[Bitcode] Check minimum size of constant GEP record
Checking this early, because we may end up reading up to two
records before the operands.
Muhammad Omair Javaid [Wed, 9 Feb 2022 12:35:33 +0000 (17:35 +0500)]
[LLDB] Port toolchain-msvc.test for Arm/AArch4 Windows
This patch updates toolchain-msvc.test to cater for Arm64 windows platform.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D117676
Tong Zhang [Wed, 9 Feb 2022 11:51:57 +0000 (19:51 +0800)]
[X86] TCRETURNmi fix for 32bit platform
This fix is similar to
3cf3ffce240e("Fix the TCRETURNmi64 bug differently.")
after allocating register for index+base, we will only have one register left
This bug affects linux kernel compilation for x86 target. Error happens when compiling kmod_si476x_core.
clang complains:
error: ran out of registers during register allocation
The full command is:
clang -Wp,-MMD,drivers/mfd/.si476x-cmd.o.d -nostdinc -isystem /opt/toolchain/main/lib/clang/14.0.0/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -Qunused-arguments -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -no-integrated-as --prefix=/usr/bin/ -Werror=unknown-warning-option -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m32 -msoft-float -mregparm=3 -freg-struct-return -fno-pic -mstack-alignment=4 -march=atom -mtune=atom -mtune=generic -Wa,-mtune=generic32 -ffreestanding -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-address-of-packed-member -O2 -Wframe-larger-than=1024 -fno-stack-protector -Wno-format-invalid-specifier -Wno-gnu -mno-global-merge -Wno-unused-but-set-variable -Wno-unused-const-variable -fomit-frame-pointer -ftrivial-auto-var-init=pattern -fno-stack-clash-protection -falign-functions=32 -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-array-bounds -fno-strict-overflow -fno-stack-check -Werror=date-time -Werror=incompatible-pointer-types -Wno-initializer-overrides -Wno-format -Wno-sign-compare -Wno-format-zero-length -Wno-pointer-to-enum-cast -Wno-tautological-constant-out-of-range-compare -DKBUILD_MODFILE='"drivers/mfd/si476x-core"' -DKBUILD_BASENAME='"si476x_cmd"' -DKBUILD_MODNAME='"si476x_core"' -D__KBUILD_MODNAME=kmod_si476x_core -c -o drivers/mfd/si476x-cmd.o drivers/mfd/si476x-cmd.c
-------------
LLVM cannot compile the following code for x86 32bit target, the reason is tail call(TCRETURNmi) is using 2 registers for index+base and we want to use more than one registers for passing function args and that is impossible.
This fix is similar to
3cf3ffce240e("Fix the TCRETURNmi64 bug differently.").
We will only use tail call when it is using <=1 registers for passing args.
```
struct BIG_PARM {
int ver;
};
static struct {
int (*foo) (struct BIG_PARM* a, void *b);
int (*bar) (struct BIG_PARM* a);
int (*zoo0) (void);
int (*zoo1) (void);
int (*zoo2) (void);
int (*zoo3) (void);
int (*zoo4) (void);
} vtable[] = {
[0] = {
.foo = (int (*)(struct BIG_PARM* a, void *b))0xdeadbeef,
},
};
int something(struct BIG_PARM *a, void* b) {
return vtable[a->ver].foo(a,b);
}
```
```
$ clang -std=gnu89 -m32 -mregparm=3 -mtune=generic -fno-strict-overflow -O2 -c t0.c -o t0.c.o
error: ran out of registers during register allocation
1 error generated.
```
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D118312
Tim Northover [Wed, 9 Feb 2022 12:33:17 +0000 (12:33 +0000)]
Revert "X86: gate all vmovsh instructions on FP16 support."
This reverts commit
3fc40b6e6628cd3206d5aaf2bfb864add7d74fe1.
It was pushed unintentionally.
Tim Northover [Wed, 9 Feb 2022 11:42:36 +0000 (11:42 +0000)]
AArch64: do not use xzr for ldxp -> stxp dataflow.
If the result of a cmpxchg is unused, regalloc chooses `xzr` for the defs of
CMP_SWAP_128*. However, on the failure path this gets expanded to a LDXP ->
STXP to store the original value (to ensure no tearing occurred). This
unintentionally nulls out half of the value.
So instead use GPR64common for these defs, so regalloc has to choose a real
one.
Tim Northover [Mon, 7 Feb 2022 11:19:59 +0000 (11:19 +0000)]
X86: gate all vmovsh instructions on FP16 support.
Previously the `let Predicates = ...` line only applied to the rr version, and
so VMOVSH was being emitted whenever HasAVX512 (the default) applied. This is
not right.
Jay Foad [Wed, 9 Feb 2022 12:02:06 +0000 (12:02 +0000)]
[AMDGPU] Remove irrelevant comments on V_BFE_I32 instructions
These comments explain the encoding of the immediate operand of S_BFE_*
which is not relevant for V_BFE_I32.
Matthias Springer [Wed, 9 Feb 2022 11:55:25 +0000 (20:55 +0900)]
[mlir][bufferize] OpOperands can have multiple aliasing OpResults
This makes getAliasingOpResult symmetric to getAliasingOpOperand. The previous implementation was confusing for users and implemented in such a way only because there are currently no bufferizable ops that have multiple aliasing OpResults.
Differential Revision: https://reviews.llvm.org/D119259
Matthias Springer [Wed, 9 Feb 2022 11:44:02 +0000 (20:44 +0900)]
[mlir][linalg][bufferize] Print results of FuncOp read/write analysis
Print more information with test-analysis-only.
Differential Revision: https://reviews.llvm.org/D119118
OCHyams [Wed, 9 Feb 2022 11:32:29 +0000 (11:32 +0000)]
[cross-project-tests] Make GDB version string parsing more robust
Follow up to D118468 (
5257efdc5b30212b62a9d68857dc8e66d0e1a863).
When built from source, gdb's version string looks like this:
GNU gdb (GDB) 9.2
...
But for installed versions it looks different. E.g.
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
...
Use a regex rather than str.parition in the version string parsing in order to
handle this case too.
Pavel Labath [Wed, 9 Feb 2022 11:30:57 +0000 (12:30 +0100)]
[lldb] Restore original meaning to test_qThreadStopInfo_only_reports_one_thread_stop_reason_during_interrupt
D119167 changed the meaning of that test by removing the use of the
interrupt packet. I did not notice this because the interrupting
happened in a shared utility function.
This patch restores the original meaning of the test, but (almost)
avoids sleeps by using process stdout to synchronize. Sadly, this means
the test stays disabled on windows, as it does not implement output
forwarding.
Simon Pilgrim [Wed, 9 Feb 2022 11:31:24 +0000 (11:31 +0000)]
[clang] Fix sphinx "start-string without end-string" warning
This looks to introduced in D110869
Simon Pilgrim [Wed, 9 Feb 2022 11:21:16 +0000 (11:21 +0000)]
[clang] Remove duplicate doc index for ClangLinkerWrapper
This looks to be a merge error from D118815
Lian Wang [Wed, 9 Feb 2022 11:16:35 +0000 (19:16 +0800)]
[RISCV][NFC] Remove useless code
Reviewed By: craig.topper, asb
Differential Revision: https://reviews.llvm.org/D119317
Florian Hahn [Wed, 9 Feb 2022 11:12:44 +0000 (11:12 +0000)]
[LV] Pass step to emitTransformedIndex (NFC).
Move out the induction step creation from emitTransformedIndex to the
callers. In some places (e.g. widenIntOrFpInduction) the step is already
created. Passing the step in ensures the steps are kept in sync.
Pavel Labath [Wed, 9 Feb 2022 11:01:30 +0000 (12:01 +0100)]
[lldb] Adjust windows xfails for D119167
A couple of additional tests pass with that patch. One new test fails
(because it's not testing a slightly different thing). I'll update it
later to restore the original meaning (I don't want to revert as the net
effect is still very positive), but for now this gets the bot green.
OCHyams [Wed, 9 Feb 2022 10:47:07 +0000 (10:47 +0000)]
[cross-project-tests] XFAIL llgdb-tests when gdb can't read clang's DWARF
Tests in the `cross-project-tests/debuginfo-tests/llgdb-tests` directory run
gdb on non-darwin platforms. gdb versions less than 10.1 cannot parse the DWARF
v5 emitted by clang, and DWARF v5 is now the default, so these tests fail on
Linux with gdb versions less than 10.1. This patch lets us XFAIL the tests
under these conditions.
Add `gdb-clang-incompatibility` to the `available_features` in
`cross-project-tests/lit.cfg.py` when clang's default DWARF version is 5 or
greater and the gdb (if found) version is less than 10.1.
Discourse discussion:
https://llvm.discourse.group/t/gdb-10-1-cant-read-clangs-dwarf-v5/6035
Reviewed By: jmorse
Differential Revision: https://reviews.llvm.org/D118468
Kirill Bobyrev [Wed, 9 Feb 2022 10:52:03 +0000 (11:52 +0100)]
[clang] Fix the tooling build after D119130
New StandardLibrary.cpp depends on Clang AST, add the dependency to
CMakeLists.txt
Broken builbot: https://lab.llvm.org/buildbot/#/builders/57/builds/14892
Sven van Haastregt [Wed, 9 Feb 2022 10:47:45 +0000 (10:47 +0000)]
[OpenCL] Fix atomic_fetch_add/sub with half type
An error in the tablegen description affects the declarations
provided by `-fdeclare-opencl-builtins` for `atomic_fetch_add` and
`atomic_fetch_sub`.
The atomic argument should be an atomic_half, not an atomic_float.
Benjamin Kramer [Wed, 9 Feb 2022 10:27:48 +0000 (11:27 +0100)]
[bazel] Sync llvm-config.h.cmake after
a1862d78eb45
Benjamin Kramer [Wed, 9 Feb 2022 10:25:33 +0000 (11:25 +0100)]
[bazel] Port 46a6f5a
Valentin Clement [Wed, 9 Feb 2022 10:21:27 +0000 (02:21 -0800)]
[flang][NFC] Reorder conversions
During upstreaming the alphabetical order was not respected.
Sheng [Wed, 9 Feb 2022 10:22:01 +0000 (18:22 +0800)]
[NFC] test commit
Empty test commit, check commit access
Haojian Wu [Mon, 7 Feb 2022 14:21:45 +0000 (15:21 +0100)]
[pseudo] Implement LRGraph
LRGraph is the key component of the clang pseudo parser, it is a
deterministic handle-finding finite-state machine, which is used to
generated the LR parsing table.
Separate from https://reviews.llvm.org/D118196.
Differential Revision: https://reviews.llvm.org/D119172
Matthias Springer [Wed, 9 Feb 2022 10:14:42 +0000 (19:14 +0900)]
[mlir][linalg][bufferize][NFC] Allow passing custom BufferizationOptions to pass
Differential Revision: https://reviews.llvm.org/D118891
serge-sans-paille [Tue, 8 Feb 2022 14:32:21 +0000 (15:32 +0100)]
Cleanup LLVMMC headers
There's a few relevant forward declarations in there that may require downstream
adding explicit includes:
llvm/MC/MCContext.h no longer includes llvm/BinaryFormat/ELF.h, llvm/MC/MCSubtargetInfo.h, llvm/MC/MCTargetOptions.h
llvm/MC/MCObjectStreamer.h no longer include llvm/MC/MCAssembler.h
llvm/MC/MCAssembler.h no longer includes llvm/MC/MCFixup.h, llvm/MC/MCFragment.h
Counting preprocessed lines required to rebuild llvm-project on my setup:
before:
1052436830
after:
1049293745
Which is significant and backs up the change in addition to the usual benefits of
decreasing coupling between headers and compilation units.
Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup
Differential Revision: https://reviews.llvm.org/D119244
serge-sans-paille [Wed, 9 Feb 2022 08:53:00 +0000 (09:53 +0100)]
Prepare for LLVMMC headers cleanup
Be more explicit about which headers should be included in MC files generated by
tblgen.
See also: https://reviews.llvm.org/D119244
Bill Wendling [Wed, 9 Feb 2022 10:05:13 +0000 (02:05 -0800)]
[X86] Specify Undef for the registers we xor
Fixes expensive check failures from D110869.
Kirill Bobyrev [Wed, 9 Feb 2022 10:05:58 +0000 (11:05 +0100)]
[llvm] Add IWYU pragmas to GTest
This will allow using tools like Include-What-You-Use and clangd
IncludeCleaner. The tools will correctly identify the public headers
responsible for importing symbols in the testing code.
This is a backport of https://github.com/google/googletest/commit/
100f6fbf5f81a82d163c1e29735e8a2936eacd4f
The only untouched file from that patch is
googletest/include/gtest/gtest_prod.h because the change is unrelated.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D119320
Kirill Bobyrev [Wed, 9 Feb 2022 10:04:58 +0000 (11:04 +0100)]
[clangd] NFC: Move stdlib headers handling to Clang
This will allow moving the IncludeCleaner library essentials to Clang
and decoupling them from the majority of clangd.
The patch itself just moves the code, it doesn't change existing
functionality.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D119130
Pavel Labath [Mon, 7 Feb 2022 19:04:42 +0000 (20:04 +0100)]
[lldb/test] Remove sleeps from some lldb-server tests
Instead of using sleeps, have the inferior notify us (via a trap opcode) that
the requested number of threads have been created.
This allows us to get rid of some fairly dodgy test utility code --
wait_for_thread_count seemed like it was waiting for the threads to
appear, but it never actually let the inferior run, so it only succeeded
if the threads were already started when the function was called. Since
the function was called after a fairly small delay (1s, usually), this
is probably the reason why the tests were failing on some bots.
Differential Revision: https://reviews.llvm.org/D119167
Matthias Springer [Wed, 9 Feb 2022 09:55:28 +0000 (18:55 +0900)]
[mlir][bufferize][NFC] Make PostAnalysisSteps a function
They used to be classes with a virtual `run` function. This was inconvenient because post analysis steps are stored in BufferizationOptions. Because of this design choice, BufferizationOptions were not copyable.
Differential Revision: https://reviews.llvm.org/D119258
Diana Picus [Wed, 26 Jan 2022 09:08:49 +0000 (09:08 +0000)]
[flang] Add runtime interface for GET_COMMAND
Use a single entry point with several optional parameters.
Differential Revision: https://reviews.llvm.org/D118776
Kiran Chandramohan [Tue, 8 Feb 2022 23:01:39 +0000 (23:01 +0000)]
[Flang] Add support for lowering the goto statement
This patch adds support for lowering the Fortran goto statement from
parse-tree to MLIR. The goto statement in Fortran is a form of
unstructured control flow. The statement transfers control to the
code starting at the label specified in the statement. This can be
faithfully represented in MLIR by a branch instruction.
To assist the lowering of code with unstructured control flow, blocks
are created in advance and associated with the relevant pre-fir tree
evaluations.
This is part of the upstreaming effort from the fir-dev branch in [1].
[1] https://github.com/flang-compiler/f18-llvm-project
Reviewed By: clementval, vdonaldson, schweitz, awarzynski
Differential Revision: https://reviews.llvm.org/D118983
Co-authored-by: V Donaldson <vdonaldson@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Muhammad Omair Javaid [Wed, 9 Feb 2022 09:26:15 +0000 (14:26 +0500)]
Set LLVM_FORCE_USE_OLD_TOOLCHAIN to disable VS2019 checks
VS2019 version 1920 in now the default and get tested in
llvm/include/llvm/Support/Compiler.h. This patch propagates
LLVM_FORCE_USE_OLD_TOOLCHAIN macro to disable testing for VS2019.
Differential Revision: https://reviews.llvm.org/D114639
Roman Lebedev [Wed, 9 Feb 2022 09:27:01 +0000 (12:27 +0300)]
ProfileDataTests: fix BUILD_SHARED_LIBS build
Balazs Benics [Wed, 9 Feb 2022 09:22:28 +0000 (10:22 +0100)]
[analyzer][docs][NFC] Fix some broken links and some cosmetic changes
- We should report bugs to the GitHub Issues
- We should advocate using Discourse instead of the superseded cfe-dev
mailing list.
There are a couple of other cosmetic changes such as preferring `using`
instead of `typedef` and quoting the `-analyze-function` parameter's
payload for escaping the braces.
Thanks @loic-joly-sonarsource for reporting this on Discord!
Reviewed By: NoQ, Szelethus
Differential Revision: https://reviews.llvm.org/D119245
Nikita Popov [Wed, 2 Feb 2022 14:06:01 +0000 (15:06 +0100)]
Reapply [sanitizers] Avoid macro clash in SignalContext::WriteFlag (NFC)
D116208 may cause a macro clash on older versions of linux, where
fs.h defines a READ macro. This is resolved by switching to a more
typical casing style for non-macro symbols.
Reapplying with changes to the symbol names in various platform
specific code, which I missed previously.
Differential Revision: https://reviews.llvm.org/D118783
Nikolas Klauser [Tue, 8 Feb 2022 23:07:14 +0000 (00:07 +0100)]
[libc++] Add papers from February 2022 plenary meeting
Reviewed By: ldionne, Quuxplusone, #libc
Spies: arichardson, libcxx-commits
Differential Revision: https://reviews.llvm.org/D119189
Valentin Clement [Wed, 9 Feb 2022 09:07:21 +0000 (10:07 +0100)]
[flang] Add missing CFI case for REAL and COMPLEX
ISO_Fortran_binding.h was updated with missing entries for CFI
types for REAL and COMPLEX kinds 2,3,10,16. This patch updates TypeCode.h
to use these new types.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D119283
Nikita Popov [Wed, 9 Feb 2022 09:06:56 +0000 (10:06 +0100)]
Revert "[sanitizers] Avoid macro clash in SignalContext::WriteFlag (NFC)"
This reverts commit
fda29264f360820859587acdfb0ad9392c944bd6.
This breaks the sanitizer build on windows, will reapply with
additional changes.
Qiu Chaofan [Wed, 9 Feb 2022 08:46:51 +0000 (16:46 +0800)]
[NFC] Fix SSE3 intrinsics test for PowerPC
Previous test in ppc-pmmintrin.c did not check IR of intrinsic function
definition. Add them and simplify.
These tests shouldn't be auto-generated, because we don't want to check
wrapper functions.
Muhammad Omair Javaid [Tue, 8 Feb 2022 15:25:41 +0000 (20:25 +0500)]
[clang-cl] Bump default -fms-compatibility-version to 19.14
clang-cl MSVC required version is 19.20 now. Update the default
-fms-compatibility-version to 19.14.
Differential Revision: https://reviews.llvm.org/D114639