Konstantin Varlamov [Fri, 3 Feb 2023 07:54:22 +0000 (23:54 -0800)]
[libc++][format] Fix a missing include in tests.
Jonas Hahnfeld [Tue, 24 Jan 2023 09:54:55 +0000 (10:54 +0100)]
[ORC] Drop Comdat when discarding IR symbol
According to the IR verifier, "Declaration[s] may not be in a Comdat!"
Differential Revision: https://reviews.llvm.org/D142443
Phoebe Wang [Fri, 3 Feb 2023 07:19:21 +0000 (15:19 +0800)]
[X86][FP16] Set Custom action for vector FROUND
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D143169
varconst [Thu, 2 Feb 2023 18:15:48 +0000 (10:15 -0800)]
[libc++] Make some tests in `math_nodiscard_extensions` Clang-only.
Clang implicitly adds the `[[gnu::const]]` attribute to many math
functions from the C standard library functions. Since this behavior is
Clang-specific, make sure the test only runs on Clang.
Differential Revision: https://reviews.llvm.org/D143033
Chuanqi Xu [Fri, 3 Feb 2023 06:29:14 +0000 (14:29 +0800)]
[NFC] [Serialization] Add static assert for Num*Declbits
This re-commits part of
c79635cce845. It is reverted since it contains
platform-inconsistent constant. Now the patch only contains constant
defined in DeclBase.h so it should be platform-independent. And this
should be still helpful.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D141992
gonglingqin [Fri, 3 Feb 2023 01:37:17 +0000 (09:37 +0800)]
[LoongArch] Override TargetLowering::hasAndNotCompare()
Override hasAndNotCompare() to use more `ANDN` instead of using `AND`
and `NOT`.
This patch enables the following transforms:
(X & Y) == Y ---> (~X & Y) == 0
(X & Y) != Y ---> (~X & Y) != 0.
Differential Revision: https://reviews.llvm.org/D143037
Fangrui Song [Fri, 3 Feb 2023 04:03:34 +0000 (20:03 -0800)]
[mlir] print-op-graph: StringMap=>map to stabilize iteration order
Shilei Tian [Fri, 3 Feb 2023 03:54:25 +0000 (22:54 -0500)]
[OpenMP] Guard the code if ITT is not used
`check_loc` is not used if ITT is disabled or debug is off, causing a
compiler warning.
Reviewed By: jlpeyton
Differential Revision: https://reviews.llvm.org/D143004
Changpeng Fang [Fri, 3 Feb 2023 02:57:26 +0000 (18:57 -0800)]
AMDGPU: Use module flag to get code object version at IR level
Summary:
This patch introduces a mechanism to check the code object version from the module flag, This avoids checking from command line.
In case the module flag is missing, we use the current default code object version supported in the compiler.
For tools whose inputs are not IR, we may need other approach (directive, for example) to check the code
object version, That will be in a separate patch later.
For LIT tests update, we directly add module flag if there is only a single code object version associated with all checks in one file.
In cause of multiple code object version in one file, we use the "sed" method to "clone" the checks to achieve the goal.
Reviewer: arsenm
Differential Revision:
https://reviews.llvm.org/D14313
Matt Arsenault [Tue, 31 Jan 2023 18:21:17 +0000 (14:21 -0400)]
X86: Add some baseline tests for broken is.fpclass handling with DAZ
If DAZ is enabled, a test against fcZero is not equivalent to a compare
with 0.
Matt Arsenault [Thu, 2 Feb 2023 13:59:08 +0000 (09:59 -0400)]
AMDGPU: Add additional tests for is.fpclass legalization
Matt Arsenault [Thu, 2 Feb 2023 13:49:54 +0000 (09:49 -0400)]
AMDGPU: Regenerate test checks
Use right prefix order to get merging.
Also drop -verify-machineinstrs and add -amdgpu-enable-delay-alu=0
Matt Arsenault [Wed, 14 Dec 2022 22:58:56 +0000 (17:58 -0500)]
AMDGPU: Factor out fneg fold predicate function
Matt Arsenault [Thu, 15 Dec 2022 15:20:01 +0000 (10:20 -0500)]
AMDGPU: Try to unfold fneg source when matching legacy fmin/fmax
This is NFC as it stands, since other combines will effectively
prevent this from being reachable. This will avoid regressions in a
future change which tries to make better use of select source
modifiers.
Didn't bother with the GlobalISel part for now, since the baseline
combine doesn't seem to work on the existing test.
Chuanqi Xu [Fri, 3 Feb 2023 02:27:02 +0000 (10:27 +0800)]
[C++20] [Modules] Pop Expression Evaluation Context when we skip its body during parsing
Close https://github.com/llvm/llvm-project/issues/60275
The root cause of issue 60275 is the imbalance of
PushExpressionEvaluationContext() and PopExpressionEvaluationContext().
See
https://github.com/llvm/llvm-project/blob/
f1c4f927f7c15b5efdc3589c050fd0513bf6b303/clang/lib/Parse/Parser.cpp#L1396-L1437
We will PushExpressionEvaluationContext() in ActOnStartOfFunctionDef()
in line 1396 and we should pop it in ActOnFinishFunctionBody later.
However if we skip the function body in line 1402, the expression
evaluation context will not be popped. Then here is the issue report. I
fix the issue by inserting codes to pop the expression evaluation
context explicitly if the function body is skipped. Maybe this looks
like an ad-hoc fix. But if we want to fix this in a pretty way, we
should refactor the current framework for pushing and popping expression
evaluation contexts. Currently there are 23
PushExpressionEvaluationContext() callsities and 21
PopExpressionEvaluationContext() callsites in the code. And it seems not
easy to balance them well and fast. So I suggest to land this fix first.
At least it can prevent the crash.
Reviewed By: cor3ntin
Differential Revision: https://reviews.llvm.org/D143053
Ting Wang [Fri, 3 Feb 2023 01:52:52 +0000 (20:52 -0500)]
[PowerPC] add a peephole to remove redundant swap instructions after vector splats on P8
Vector store on P8 little endian will have swap instruction added before
the store in PPCISelLowring. If the vector is generated by splat, the
swap instruction can be eliminated.
Reviewed By: shchenz
Differential Revision: https://reviews.llvm.org/D139691
LiaoChunyu [Fri, 3 Feb 2023 01:16:49 +0000 (09:16 +0800)]
[RISCV] Permit tail call to an externally-defined function with weak linkage
As described in D45395 `This has been modeled after ARM's tail call opt.`
ARM's abi seems to limit weak symbol.
I did not find the limitation for RISCV. (Please correct me if I am wrong)
gcc seems to use the tail-call opt: https://godbolt.org/z/bjWE68n5o
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D143137
Chris Bieneman [Fri, 3 Feb 2023 01:25:28 +0000 (19:25 -0600)]
[DX] Speculative big endian fix
I think this will get it this time.
Chris Bieneman [Fri, 3 Feb 2023 00:21:19 +0000 (18:21 -0600)]
[DX] Fix big-endian... again
Big endian is the bane of my existance today...
Mitch Phillips [Thu, 2 Feb 2023 23:48:50 +0000 (15:48 -0800)]
Revert "Add CFI integer types normalization"
This reverts commit
b1e9ab7438a098a18fecda88fc87ef4ccadfcf1e.
Reason: Looks like it broke the MSan buildbot, more details in the
phabricator review: https://reviews.llvm.org/D139395
Mitch Phillips [Thu, 2 Feb 2023 23:37:33 +0000 (15:37 -0800)]
[GWP-ASan] Remove thread clamping in tests.
It's better and easier for us to just have threads contend against each
other in the tests if it's more than the maximum supported number of
hardware threads available.
Specifically, the recoverable test fails on Android because the
GTEST_SKIP in a called function, and it only properly works from the
TEST_* harness function. Android tests run on cuttlefish, which can be a
single core with two hyperthreads.
Reviewed By: fmayer
Differential Revision: https://reviews.llvm.org/D143221
Ilia Diachkov [Mon, 30 Jan 2023 20:43:53 +0000 (23:43 +0300)]
[SPIRV][NFC] fix build warning and error
The patch fixes gcc's warning in SPIRVUtils.cpp after D142532.
Also it fixes compilation error by MSVC in SPIRVBuiltins.cpp.
Differential Revision: https://reviews.llvm.org/D142937
bixia1 [Thu, 2 Feb 2023 22:54:45 +0000 (14:54 -0800)]
[mlir][sparse] Implement heap sort for sparse_tensor.sort.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D142913
Med Ismail Bennani [Wed, 1 Feb 2023 22:52:50 +0000 (14:52 -0800)]
[lldb] Fix typo in ScriptedProcess python docstrings (NFC)
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Med Ismail Bennani [Thu, 2 Feb 2023 00:33:53 +0000 (16:33 -0800)]
[lldb/python] Fix scripted_platform python module creation
This patch should fix the creation and addition of the `scripted_platform`
python module into the `lldb.plugins` module.
Previously, we were creating the `plugins` submodule, each time with a
different source file (either `scripted_process` or `scripted_platform`).
The removes the redundant `create_python_package` call and group both
python source files toghether.
Differential Revision: https://reviews.llvm.org/D143122
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Steven Wu [Thu, 2 Feb 2023 23:07:16 +0000 (15:07 -0800)]
[DeclContext] Sort the Decls before adding into DeclContext
Fix a non-deterministic issue in clang module generation, which the
anonymous declaration number from a function context is not
deterministic. This is due to the unstable iteration order for decls in
scope so the order after moving the decls into function decl context is
not deterministic.
From https://reviews.llvm.org/D135118, we can't use a set that preserves
the order without the performance penalty. Fix the issue by sorting the
decls based on raw encoding of their source location.
rdar://
104097976
Reviewed By: akyrtzi, vsapsai
Differential Revision: https://reviews.llvm.org/D141625
Fangrui Song [Thu, 2 Feb 2023 23:13:04 +0000 (15:13 -0800)]
libRemarks.{so,dylib}: remove Remarks.dylib.exports
Remarks.exports is only intended for NOT (BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB)
builds.
For (unintended use case) BUILD_SHARED_LIBS OR LLVM_LINK_LLVM_DYLIB (the latter
is used by some Linux distros), the library defines just one symbol on ELF.
There is no need to use a version script.
I think this is a more proper solution than D139932 and fixes `symbol not
defined` errors after lld default change D135402.
Fangrui Song [Thu, 2 Feb 2023 22:51:35 +0000 (14:51 -0800)]
libLTO.{so,dylib}: remove unused non-LTO symbols
These dissembler symbols are not used by LTO (see Apple ld64's use
in check-llvm-tools-lto). On ELF platforms, these symbols are not defined and are
rejected by ld --no-undefined-version.
I think this is a more proper solution than D139932 and this fixes
-DBUILD_SHARED_LIBS=on for ELF as well.
Chris Bieneman [Thu, 2 Feb 2023 19:11:34 +0000 (13:11 -0600)]
[DX] Add support for PSV resource bindings
This patch continues implementing DirectX pipeline state validation
information by adding support for resource binding metadata.
Reviewed By: python3kgae
Differential Revision: https://reviews.llvm.org/D143130
Mircea Trofin [Thu, 2 Feb 2023 22:41:55 +0000 (14:41 -0800)]
[mlgo][nfc] Refactor the log_reader.py utility
Small refactoring in preparation for tests for the interactive mode.
This allows reading the header, and performing observations, as explicit
steps. The latter is in particular necessary because the exit condition
for the interactive host will be that the child process (the compiler)
exited.
Johannes Doerfert [Thu, 2 Feb 2023 21:05:20 +0000 (13:05 -0800)]
[Attributor][NFCI] Avoid spending time resolving kernel reachability queries
We know kernels (generally) cannot be called from within the module. Thus,
for reachability we would need to step back from a kernel which would allow
us to reach anything anyway. Even if a kernel is invoked from another
kernel, values like allocas and shared memory are not accessible. We
implicitly check for this situation to avoid costly lookups.
Johannes Doerfert [Fri, 27 Jan 2023 05:05:30 +0000 (21:05 -0800)]
[Attributor][NCFI] Explicitly state what interfering accesses to look for
We used to check the query instructions for effects but that does not
work well with complex accesses we will probably support in the future.
Now we simply let the user decide what accesses to look for.
Jim Ingham [Thu, 2 Feb 2023 21:46:42 +0000 (13:46 -0800)]
Add usage info for backtick to the lldb tutorial.
Fangrui Song [Thu, 2 Feb 2023 21:46:52 +0000 (13:46 -0800)]
[modularize] StringMap=>map to make iteration order deterministic
Fangrui Song [Thu, 2 Feb 2023 21:39:47 +0000 (13:39 -0800)]
[unittest] Use UnorderedElementsAre for StringMap keys
Joseph Huber [Thu, 2 Feb 2023 21:14:20 +0000 (15:14 -0600)]
[Libomptarget] Add new enum to the dynamically opened HSA implementation
Summary:
We added a new agent information enum in a previous commit. This was not
added to the dynamic HSA implementation so it failed to compile without
a local HSA install to use.
Joshua Batista [Thu, 2 Feb 2023 20:31:53 +0000 (12:31 -0800)]
Repair sphinx doc generation
mistake in the log commit neglected to place a space after the `` literal,
which messed up the build by incapacitating the sphinx generator.
Reviewed By: beanz
Differential Revision: https://reviews.llvm.org/D143208
Amir Ayupov [Wed, 4 May 2022 03:29:13 +0000 (20:29 -0700)]
[BOLT][NFC] Rename {MachO,}RewriteInstance::create methods
Follow the code style of fallible constructors in [LLVM Programmer's Manual]
(https://llvm.org/docs/ProgrammersManual.html#fallible-constructors)
and rename `RewriteInstance::createRewriteInstance` to `RewriteInstance::create`
Reviewed By: #bolt, rafauler
Differential Revision: https://reviews.llvm.org/D143119
James Y Knight [Tue, 8 Nov 2022 22:11:08 +0000 (17:11 -0500)]
[PowerPC] Switch to by-name matching for instructions (part 2 of 2).
This is a follow-on to https://reviews.llvm.org/D134073.
Currently, all of the "memri"-style complex operands, which contain
both a register and an immediate, are encoded into a single field in
the instruction definition. This requires complex encoders/decoders,
and instruction definitions that insert and extract the correct parts
of the bits.
Now, switch to naming and encoding/decoding the sub-operands
separately.
Thus, we can now disable useDeprecatedPositionallyEncodedOperands.
Reviewed By: barannikov88
Differential Revision: https://reviews.llvm.org/D137670
James Y Knight [Tue, 8 Nov 2022 22:11:05 +0000 (17:11 -0500)]
[PowerPC] Switch to by-name matching for instructions (part 1 of 2).
This is a follow-on to https://reviews.llvm.org/D134073.
After https://reviews.llvm.org/D137653 we can now switch the PPC
target away from positional operand matching.
This patch fixes all of the "easy" cases. While this changes a large
number of lines of tablegen source, it results in only a single
non-comment change in the code generated by tablegen: the (unused)
codegen-only "MTVRSAVEv" instruction was previously incorrectly
encoding operand 0, and now encodes (correctly) operand 1.
Changes which result in generated-code changes have been split off
into the next (smaller) patch, for ease of review.
Reviewed By: barannikov88
Differential Revision: https://reviews.llvm.org/D137661
Craig Topper [Thu, 2 Feb 2023 20:17:17 +0000 (12:17 -0800)]
[X86] Reflow comment to fit 80 columns. NFC
Tom Honermann [Thu, 26 Jan 2023 15:32:27 +0000 (07:32 -0800)]
[clang] Warn by default that implicit capture of 'this' is deprecated in C++20 and later.
Previously, a warning that C++20 deprecated implicit capture of 'this' for
lambda captures specified with a capture default of '=' was only issued when
'-Wdeprecated' or '-Wdeprecated-this-capture' was specified. This change
enables the warning by default (it is still only issued when compiling for
C++20 or later). This is consistent with gcc which warns by default (MSVC
requires '/Wall').
Reviewed By: erichkeane, shafik
Differential Revision: https://reviews.llvm.org/D142639
Amir Ayupov [Thu, 2 Feb 2023 20:03:44 +0000 (12:03 -0800)]
[BOLT][NFC] Simplify SW::checkStackPointerRestore
Reviewed By: rafauler
Differential Revision: https://reviews.llvm.org/D143117
Amir Ayupov [Thu, 2 Feb 2023 20:02:02 +0000 (12:02 -0800)]
[BOLT][NFC] Use llvm::make_second_range
Reviewed By: #bolt, rafauler
Differential Revision: https://reviews.llvm.org/D143019
Valentin Clement [Thu, 2 Feb 2023 19:47:19 +0000 (20:47 +0100)]
[flang] Do not finalize pointer function result
According to 7.5.6.3 point 5, only nonpointer function result
need to be finalized. Update the condition to exclude pointer
function result.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D143156
Joshua Batista [Thu, 2 Feb 2023 19:10:53 +0000 (11:10 -0800)]
Add builtin_elementwise_log
Add codegen for llvm log elementwise builtin
The log elementwise builtin is necessary for HLSL codegen.
Tests were added to make sure that the expected errors are encountered when these functions are given inputs of incompatible types.
The new builtin is restricted to floating point types only.
Reviewed By: beanz
Differential Revision: https://reviews.llvm.org/D140489
Craig Topper [Thu, 2 Feb 2023 19:20:43 +0000 (11:20 -0800)]
[RISCV] Merge rv32-vsetvli-intrinsics.ll and rv64-vsetvli-intrinsics.ll into a single test using sed. NFC
YongKang Zhu [Thu, 2 Feb 2023 19:21:58 +0000 (11:21 -0800)]
[NFC] Add split-file as runtime test dependency
Here is a similar change that adds `split-file` as compiler-rt test dependency: https://reviews.llvm.org/rG0eb01a9c4581a24c163f3464cebdb20534fbda35
Reviewed By: thevinster
Differential Revision: https://reviews.llvm.org/D143123
Joseph Huber [Thu, 2 Feb 2023 16:29:47 +0000 (10:29 -0600)]
[Libomptarget] Improve next-gen AMDGPU plugin error messages
The next-gen plugin properly prints errors. This patch improves the
error messages by including the Node-ID of the GPU that failed as well
as a textual representation of the enumeration values.
Reviewed By: kevinsala
Differential Revision: https://reviews.llvm.org/D143192
Joseph Huber [Thu, 2 Feb 2023 17:31:48 +0000 (11:31 -0600)]
[LLVM][Runtimes] Hide unused CMake variable messages for runtimes builds
The LLVM runtime build is used to bootstrap projects with the built LLVM
toolchain. This effectively re-runs CMake with the current build
directory. One problem is that this passes every common CMake variable
to the projects individually, some of which are not necessarily used.
This patch suppresses the unused variable warnings for the runtimes.
The standard CMake invocation should still be able to print out the
unused variables so it should not impact code quality.
Reviewed By: thieta
Differential Revision: https://reviews.llvm.org/D143199
Mariya Podchishchaeva [Thu, 2 Feb 2023 18:40:26 +0000 (13:40 -0500)]
[clang][driver] Fix test fail on Mac after
fe082124
`--` should be added before input.
Nemanja Ivanovic [Thu, 2 Feb 2023 18:38:08 +0000 (12:38 -0600)]
[PowerPC] Don't crash when disassembling invalid immediate
There is an assert in the disassembler functions to ensure
that the immediate is the appropriate width. However,
sometimes what is being disassembled is not instructions
but data that happens to have the bit pattern of an existing
instruction but invalid operands. It is valid for such
things to exist in the text section so we don't want
to crash when disassembling such a thing.
This patch removes the asserts and produces a disassembler
failure for such cases.
Craig Topper [Thu, 2 Feb 2023 18:18:17 +0000 (10:18 -0800)]
[RISCV][Driver] Add -mrvv-vector-bits= option similar to -msve-vector-bits=
This option will control the vscale min/max.
I have left out the '+' support that SVE supports for now. We already
have minimum controlled by the Zvl*b extension so this didn't seem that
useful.
I've added "scalable" from SVE to allow the option to be cancelled later on
command line. Though this name might make less sense for RISC-V since
the word "scalable" does not appear in the V spec. Maybe something like
"unknown" or "runtime" or "variable" would be better?
In addition to "scalable", 64, 128, 256, 512, ..., 65536, I have added an extra
value "zvl" that will use the value from Zvl*b as the min and max.
This avoids repeating the numeric value in two places or to get
min/max from -mcpu.
The primary effect of this option today is simplification of stack
address calculations for RVV vectors and avoiding the use of
vrgatherei16 in some cases if we know there are less than 256 elements.
Future patches may add something similar to the arm_sve_vector_bits
attribute to allow RVV vectors to be used in structs and global
variables.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D142144
Tom Honermann [Wed, 25 Jan 2023 22:57:15 +0000 (17:57 -0500)]
[libc++] Remove use of internal glibc macros to determine if c8rtomb() and mbrtoc8() are present.
When support for declaring the c8rtomb() and mbrtoc8() functions within the
std namespace was added in commit
7e7013c5d4b1b3996c8dba668c5a94bb33b2999b,
internal glibc macros were used to determine if C2X extensions are enabled.
Specifically, a check for whether `__GLIBC_USE` is defined and whether
`__GLIBC_USE(ISOC2X)` is non-0 was added. `__GLIBC_USE` is an internal
detail of the glibc implementation that may be changed or removed in the
future potentially leading to inconsistency or compilation failures. This
change removes the use of the internal glibc macro to avoid such problems.
Unfortunately, without another mechanism to determine if C2X extensions are
enabled, this removal will result in inconsistent declarations of the
c8rtomb() and mbrtoc8() functions; when C++ char8_t support is not enabled, but
C2X extensions are, these functions will be declared in the global namespace
but not in the std namespace. This situation will improve when C23 support
is finalized and the check can be re-implemented using `__STDC_VERSION__`.
lipracer [Thu, 2 Feb 2023 18:23:24 +0000 (10:23 -0800)]
[mlir][affine] fix affine LICM pass for has effected memory's user
When the memory is written by dma, its user is moved
Reviewed By: bondhugula
Differential Revision: https://reviews.llvm.org/D141106
Kirill Stoimenov [Thu, 2 Feb 2023 17:35:27 +0000 (17:35 +0000)]
[LSAN] Enable more tests which are passing as is in HWASAN.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D143126
Craig Topper [Thu, 2 Feb 2023 17:58:08 +0000 (09:58 -0800)]
[RISCV] Add CoveredBySubRegs to the X*_PD register class.
Not completely sure what effect this has, but it's certainly true.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D143103
Nemanja Ivanovic [Thu, 2 Feb 2023 18:01:04 +0000 (12:01 -0600)]
[SelectionDAG] Correctly widen bitcast of scalar to vector for big endian
For big endian targets that need a node such as this:
v2i8 = bitcast i16:tN
legalized by:
1. Promoting the i16 input type
2. Widening the v2i32 result type
The result will be incorrect because the legalizer will promote
the input type and then produce a scalar_to_vector from that
wider type to a vector of N elements of that type. That puts
the desired bits into the low order bytes of element zero and
they need to be in the high order bytes on big endian systems.
This patch changes the legalization to widen to a vector with
elements of the original scalar size.
Differential revision: https://reviews.llvm.org/D140365
Jay Foad [Thu, 2 Feb 2023 12:18:41 +0000 (12:18 +0000)]
[flang] Disable libstdc++ assertions in the runtime library
Differential Revision: https://reviews.llvm.org/D143168
Christian Sigg [Thu, 2 Feb 2023 17:24:13 +0000 (18:24 +0100)]
[MLIR] NFC: fully scope use FastMathFlag.
Kirill Stoimenov [Thu, 2 Feb 2023 17:10:34 +0000 (17:10 +0000)]
Revert "[LSAN] Enable more tests which are passing as is in HWASAN."
This reverts commit
b4abbf17572dce3993402f2e00e72678518ef6e1.
Jay Foad [Thu, 2 Feb 2023 13:38:37 +0000 (13:38 +0000)]
[AMDGPU] GFX11: accept global_atomic_csub as an alias
GFX11 renamed this instruction to global_atomic_csub_u32 but should
accept the old name as an alias, for consistency with the other global
atomics and with buffer_atomic_csub.
Differential Revision: https://reviews.llvm.org/D143176
Valentin Clement [Thu, 2 Feb 2023 17:02:01 +0000 (18:02 +0100)]
[flang] Avoid double finalization in Assign
First call to Assign is issuing finalization for the
LHS and its components. Avoid calling finalization for components
again when doing the component by component assignment.
Reviewed By: klausler
Differential Revision: https://reviews.llvm.org/D143187
Mariya Podchishchaeva [Thu, 2 Feb 2023 16:41:11 +0000 (11:41 -0500)]
[clang][driver] Emit an error for `/clang:-x`
`/clang:-x` emits an error instead of a warning. And if the error is suppressed,
`/clang:-x` takes no effect.
Considering that `/clang:` is a recent addition in 2018-11 and there are MSVC
style alternatives, therefore `/clang:-x` doesn't seem useful and we just reject
it since properly supporting it would add lots of complexity.
Fixes #59307
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D142757
Mircea Trofin [Thu, 2 Feb 2023 16:03:35 +0000 (08:03 -0800)]
Kirill Stoimenov [Thu, 2 Feb 2023 01:19:35 +0000 (01:19 +0000)]
[LSAN] Enable more tests which are passing as is in HWASAN.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D143126
Utkarsh Saxena [Mon, 23 Jan 2023 18:15:46 +0000 (19:15 +0100)]
[C++20] Fix a crash with modules.
Differential Revision: https://reviews.llvm.org/D142384
Florian Hahn [Thu, 2 Feb 2023 16:03:26 +0000 (16:03 +0000)]
[ConstraintSystem] Remove last variable, use move instead of copy. (NFC)
At the moment, a large amount of time is spent construction vectors
by pushing back all elements except the first variable. For large
inputs, such as discussed in https://reviews.llvm.org/D135915#4057050
this can result in excessive compile-time.
Instead, it is more efficient to remove the last variable. Then the
original vector can be re-used by simply popping the last element and
then moving the contents to the new system.
This improves time spent in ConstraintElimination for the linked
reproducer from ~43s to ~3s.
Mircea Trofin [Thu, 2 Feb 2023 16:02:33 +0000 (08:02 -0800)]
Revert "[mlgo][nfc] Better pretty printing of interactive mode reply"
This reverts commit
9cffabc68ca380be937e192be909feff7b144822.
Broke windows builds
Mircea Trofin [Thu, 2 Feb 2023 15:51:29 +0000 (07:51 -0800)]
[mlgo][nfc] Better pretty printing of interactive mode reply
Also simplified the `-interactive-model-runner-echo-reply` flag to a
bool, because the header will contain the advice spec, so there is an
explicit agreement between the compiler and the host as to what that
should be shaped as.
Joseph Huber [Mon, 30 Jan 2023 23:40:26 +0000 (17:40 -0600)]
[libc] Remove OpenMP and build the GPU libc directly
The current `libcgpu.a` is actually an archive of fatbinaries. The host
file contains nothing but a section called `LLVM_OFFLOADING` that
contains embedded device code. This used to be handled implicitly by
borrowing the OpenMP toolchain, which did this packaging internally.
Passing the OpenMP flags causes problems with trying to move to testing.
This patch pulls this logic out into the CMake and handles it manually.
This patch is a lot of noise, but it fundamentally comes down to the
following changes.
1. Build the source for every GPU architecture (GPU architectures are
generally not backwards compatible)
2. Combine all of these files into a single binary blob
3. Embed that binary blob into a host file
4. Package these host files into a `.a` archive.
5. The device code will be extracted and managed by the offloading
linker.
Another important point. Right now we are maintaining an important
distinction with the GPU build. That is, when we build the exported
library we will build for many GPU architectures. However, the internal
version will only be built for a single GPU architecture, one that was
found on the user's system. This is intended to be used for internal
testing, very similar to the current path where `libc` is compiled for a
single target triple.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D143089
Joseph Huber [Thu, 2 Feb 2023 15:45:19 +0000 (09:45 -0600)]
[Libomptarget] Fix the NVPTX Libomptarget test
Summary:
This was broken, we weren't adding these for the NVPTX tests.
David Green [Thu, 2 Feb 2023 15:40:32 +0000 (15:40 +0000)]
[AArch64] Add tests for reassociating to mls. NFC
Whisperity [Thu, 2 Feb 2023 15:30:14 +0000 (16:30 +0100)]
[NFC][clang-tidy] Disable test for `bugprone-unsafe-functions` for PlayStation
As discussed in [D91000](http://reviews.llvm.org/D91000) with @dyung, the
PlayStation-specific targets are using some custom standard library for
which the current written tests are not appropriate. Even though the
test code defines the `__STDC_LIB_EXT1__` and `__STDC_WANT_LIB_EXT1__`
macros and expected *Annex K.* support, the actual Clang
parser/preprocessor will report these macros as not existing, and thus
fail the tests.
The check reports the **non**-Annex K. functions as suggestions, such as
`fgets()` instead of `gets_s()` to replace `gets()`, so some safe
library suggestions are still there.
This patch is primarily done to unblock the relevant buildbot
[`llvm-clang-x86_64-sie-ubuntu-fast`](http://lab.llvm.org/buildbot/#/builders/139).
This commit partially reverts
ed740e741ec22f9aaea09bfc0b87d0801a7c492f,
as the changes to the "caching logic" was not fixing anything.
Erich Keane [Thu, 2 Feb 2023 14:39:53 +0000 (06:39 -0800)]
Add a new modules test to ensure we dont rebreak diagnostic
Fixes: 60336
Seemingly the concepts sugaring patch caused us to not catch this
situation, which has been confirmed to be a valid error. Make sure that
we catch this situation in the future, particularly if the concepts
sugaring patch gets re added.
Xiang Li [Thu, 2 Feb 2023 15:14:22 +0000 (10:14 -0500)]
[NFC] [mlir] fix file header for SCFToControlFlow.h
Fill description and fix filename mismatch.
Whisperity [Thu, 2 Feb 2023 14:22:04 +0000 (15:22 +0100)]
[clang-tidy] Attempt fixing wrong caching result in `bugprone-unsafe-functions`
There is a supposedly platform-specific crash related to not recognising
the availability of *Annex K.* properly? This patch is an attempt for
fixing this by moving the reset logic for the cache to a different
place.
It's really a coin-flip at this point whether this is really a fix...
Chris Bieneman [Thu, 2 Feb 2023 14:13:26 +0000 (08:13 -0600)]
[DX] Hopefully really fix the big endian bots
Slly mistake in my first attempt. Hopefully this will do it.
Nico Weber [Thu, 2 Feb 2023 13:59:27 +0000 (08:59 -0500)]
Revert "[Clang] Add builtin_nondeterministic_value"
This reverts commit
4a1832a5c801a61bf4c30891aaebe63993712fd9.
Test fail on (at least) macOS and Windows, see
https://reviews.llvm.org/D142388#4099441
Simon Pilgrim [Thu, 2 Feb 2023 13:48:42 +0000 (13:48 +0000)]
[X86] canonicalizeShuffleWithBinOps - all merging shuffles with INSERT_SUBVECTOR as well as generic target shuffles.
We can probably expand this to more faux shuffles as time goes on.
Aaron Ballman [Thu, 2 Feb 2023 13:25:21 +0000 (08:25 -0500)]
Bump CINDEX_VERSION_MINOR due to additional APIs
0a51bc731bcc2c27e4fe97957a83642d93d989be added a new API to libclang
but forgot to bump the minor version number.
There is no reasonable way to test this change, hence the lack of test
coverage.
Sergey Kachkov [Thu, 2 Feb 2023 09:49:04 +0000 (12:49 +0300)]
[NFC] Fix function naming conventions in PHITransAddr methods
Differential Revision: https://reviews.llvm.org/D143166
Hassnaa Hamdi [Thu, 2 Feb 2023 11:46:11 +0000 (11:46 +0000)]
[AArch64][CostModel]: Add costs for zero/sign extend.
Add cost for extending to illegal scalable vector types.
Add testing file for the extend operations.
Reviewed By: sdesmalen
Differential Revision: https://reviews.llvm.org/D142456
LLVM GN Syncbot [Thu, 2 Feb 2023 13:12:41 +0000 (13:12 +0000)]
[gn build] Port
f27c8ac83e7c
Gergely Fűtő [Mon, 29 Nov 2021 08:56:48 +0000 (09:56 +0100)]
[clang-tidy] Add the `bugprone-unsafe-functions` check
Checks for unsafe functions, mostly those listed in the
SEI CERT C Coding Standard Recommendation `MSC24-C` and Rule `MSC33-C`.
For the listed functions, an alternative, more secure replacement is
suggested, if such is available. The checker heavily relies on the
functions from "Annex K" (Bounds-checking interfaces) from C11, but
there are several other recommendations not directly from Annex K.
Differential Revision: http://reviews.llvm.org/D91000
Reviewed-By: aaron.ballman, dkrupp, steakhal, whisperity
Co-Authored-By: Tamás Koller <koller.tamas1996@gmail.com>
Co-Authored-By: Balázs Benics <balazs.benics@sigmatechnology.se>
Co-Authored-By: Whisperity <whisperity@gmail.com>
Simon Pilgrim [Thu, 2 Feb 2023 12:28:56 +0000 (12:28 +0000)]
[X86] combineConcatVectorOps - add FADD/FSUB/FMUL/FDIV handling
Simon Pilgrim [Thu, 2 Feb 2023 12:14:21 +0000 (12:14 +0000)]
[X86] Add test coverage showing failure to load/binop combine adjacent v2f32 float ops
Pulled out of Issue #60441 - we really need that handling in the middle-end, but there's some obvious DAG cleanups we can try as well
LLVM GN Syncbot [Thu, 2 Feb 2023 12:37:18 +0000 (12:37 +0000)]
[gn build] Port
ad93908e3b55
LLVM GN Syncbot [Thu, 2 Feb 2023 12:37:18 +0000 (12:37 +0000)]
[gn build] Port
8a8f77c1b849
Phoebe Wang [Thu, 2 Feb 2023 12:16:29 +0000 (20:16 +0800)]
[X86][FP16][NFC] Add round and fptosi tests to show suboptimal codegen
Michael Buch [Wed, 1 Feb 2023 13:42:24 +0000 (13:42 +0000)]
[lldb][SymbolFileDWARF] Support by-name lookup of global variables in inline namespaces
Currently evaluating an expression involving a global variable inside
an inline namespace will fail to lookup said variable. This is because
the `SymbolFileDWARF::FindGlobalVariables` discards from consideration
all DIEs whose decl_context doesn't exactly match that of the lookup.
This patch relaxes this restriction by checking whether C++ rules
would permit the lookup. This is permitted by the DWARFv5 spec in
chapter `3.2.2 Namespace Entries`:
```
A namespace may have a DW_AT_export_symbols attribute which is a flag
which indicates that all member names defined within the namespace may be
referenced as if they were defined within the containing namespace.
```
The motivation for this is evaluating `std::ranges` expressions, which
heavily rely on global variables inside inline namespaces. E.g.,
`std::views::all(...)` is just an invocation of the `operator()`
on `std::ranges::views::__cpo::all`.
**Testing**
* Added API tests
Differential Revision: https://reviews.llvm.org/D143068
Michael Buch [Tue, 31 Jan 2023 18:05:41 +0000 (18:05 +0000)]
[lldb][Test] Fix import-std-module and data-formatter tests on older compilers
Fixes API tests for older compilers.
Since https://reviews.llvm.org/D141828 defaulted
arguments will be omitted, but older Clang's won't.
Differential Revision: https://reviews.llvm.org/D143022
David Spickett [Wed, 7 Dec 2022 14:25:42 +0000 (14:25 +0000)]
[runtimes] Don't override LLVM_ENABLE_PER_TARGET_RUNTIME_DIR set from llvm
LLVM_ENABLE_PER_TARGET_RUNTIME_DIR is set in llvm/CMakeLists.txt
and in llvm/runtimes/CMakeLists.txt.
This meant that anything you passed down, or any platform not using
this layout yet would have it enabled despite it being OFF earlier.
To fix this, check if we have already defined the variable
and if so, use that value.
bultin_register_target I don't fully understand the purpose of.
So for now I have left it setting the value to ON. The rest will
respect what was previously set.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D139536
Sander de Smalen [Tue, 31 Jan 2023 22:20:46 +0000 (22:20 +0000)]
[InstCombine] Promote expression tree with @llvm.vscale when zero-extending result.
The LoopVectorizer emits the (scaled) element count as i32, which for
scalable VFs results in calls to @llvm.vscale.i32(). This value is scaled
and further zero-extended to i64.
The zero-extend can be folded away by executing the whole expression in i64
type using @llvm.vscale.i64(). Any logical `and` that would needed to mask
the result can be further folded away by KnownBits analysis when
vscale_range is set.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D143016
ManuelJBrito [Thu, 2 Feb 2023 10:11:53 +0000 (10:11 +0000)]
[Clang] Add builtin_nondeterministic_value
Differential Revision: https://reviews.llvm.org/D142388
Andrew Gozillon [Wed, 1 Feb 2023 18:29:59 +0000 (12:29 -0600)]
[FLANG][MLIR] Update all module symbol references after changing FuncOp symbol during external name mangling
This fixes an issue where the symbols for operations that were not directly
handled by the rewriting in ExternalNameConversion.cpp were not updated
accurately when a FuncOp symbol was modified. Resulting in a name
mismatch between the FuncOp and the operation holding a symbol to
the FuncOp.
This fix works by updating all of the symbols relating to a FuncOp in a
module, this did not show up as an issue previously as fir::CallOps were
getting specific handling and only fir::CallOps were being tested. So
as the more larger case is now being handled the specific handling for
fir::CallOps has been removed (but is still handled by the fix).
Reviewers:
clementval
Differential Revision: https://reviews.llvm.org/D142918
Serguei Katkov [Thu, 2 Feb 2023 09:56:13 +0000 (16:56 +0700)]
[TTI][NFC] Introduce option to set predictable branch threshold
Currently TargetTransformInfo::getPredictableBranchThreshold() method
returns hardcoded value 99. This value affects the decision whether to
convert select instruction to branch or not in several passes:
SelectOptimize, CodeGenPrepare, SimplifyCFG.
It would be useful to make possible to play with that threshold in order
to test select-optimize heuristics.
Option was originally introduced in the TargetLoweringBase, but was
removed in the revision
664d0c052c315 and not restored in the TTI
Patch Author: aleksandr.popov
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D143060
Iain Sandoe [Fri, 27 Jan 2023 10:56:45 +0000 (10:56 +0000)]
[C++20][Modules] Handle template declarations in header units.
This addresses part of https://github.com/llvm/llvm-project/issues/60079
The test for external functions was not considering function templates.
Differential Revision: https://reviews.llvm.org/D142704
Quentin Colombet [Tue, 24 Jan 2023 10:29:37 +0000 (11:29 +0100)]
[mlir][tensor|memref] Harden the checks on dim op
Prior to this patch it was possible to use the dim operation on a 0-D
memref/tensor.
Unless we want to change the semantic of a 0-D shape, this doesn't make
sense because, paraphrasing the dim op semantic, this is guaranteed to
produce something that is undefined. (The requested index is guaranteed
to be equal to or greater than the rank.)
Harden the type requirements for the dim op by disallowing 0-D shaped
types.
This "fixes" llvm.org/PR60195 by rejecting dim op on 0-D shapes instead of
crashing during LLVM conversion.
Differential Revision: https://reviews.llvm.org/D142445
Johannes Doerfert [Thu, 2 Feb 2023 10:10:07 +0000 (02:10 -0800)]
[Attributor][NFC] Improve debug messages