Simi Pallipurath [Thu, 20 Jul 2023 09:26:45 +0000 (10:26 +0100)]
[clang][driver][NFC] Call IsARMBigEndain function only for isARM and isThumb.
IsARMBIgEndian function returns true only if:
1. The triples are either arm or thumb and the
commandline has the option -mbig-endian
2. The triples are either armeb or thumbeb.
Missing the checking of arm or thumb triples in the
first case pass through the --be8 endian flag to
linker For AArch64 as well which is not expected.
This is the regression happened from the previous
patch https://reviews.llvm.org/D154786.
It is better to refactor to only call IsARMBigEndian
for isARM and isthumb satisfying conditions which
keeps ARM and AArch64 separate.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D155808
Jim Lin [Tue, 25 Jul 2023 05:14:27 +0000 (13:14 +0800)]
[RISCV] Merge rv32/rv64 vector narrowing integer right shift intrinsic tests that have the same content. NFC.
Jie Fu [Tue, 25 Jul 2023 07:56:40 +0000 (15:56 +0800)]
[AMDGPU] Remove unused variable 'CNI' in /AMDGPUMachineCFGStructurizer.cpp (NFC)
/Users/jiefu/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp:2603:10: error: variable 'CNI' set but not used [-Werror,-Wunused-but-set-variable]
auto CNI = CI;
^
1 error generated.
Fangrui Song [Tue, 25 Jul 2023 07:39:17 +0000 (00:39 -0700)]
[Support] Change SetVector's default template parameter to SmallVector<*, 0>
Similar to D156016 for MapVector.
Martin Storsjö [Tue, 25 Jul 2023 07:27:56 +0000 (10:27 +0300)]
Revert "[LV] Re-use existing broadcast value for live-ins."
This reverts commit
eea9258648ce73507f6f85c395de978af659d498.
That commit triggered crashes in the following testcase:
$ cat reduced.c
typedef struct {
int a[8]
} b;
typedef struct {
b *c;
short d
} e;
void f() {
int g;
char *h;
e *i = f;
short j = i->d;
int a = i->c->a[0];
for (;;)
for (; g < a; g++) {
*h = j * i->d >> 8;
h++;
}
}
$ clang -target aarch64-linux-gnu -w -c -O2 reduced.c
Craig Topper [Tue, 25 Jul 2023 07:20:05 +0000 (00:20 -0700)]
[DAGCombiner] Minor improvements to foldAndOrOfSETCC. NFC
Reduce the scope of some variables.
Replace an if with an assertion.
Reviewed By: kmitropoulou
Differential Revision: https://reviews.llvm.org/D156140
Craig Topper [Tue, 25 Jul 2023 05:55:24 +0000 (22:55 -0700)]
[RISCV] Don't print a tab after mnemonics that don't have operands.
Reviewed By: wangpc
Differential Revision: https://reviews.llvm.org/D156200
LiaoChunyu [Tue, 25 Jul 2023 06:07:01 +0000 (14:07 +0800)]
[RISCV] Match ext_vl+sra_vl/srl_vl+trunc_vector_vl to vnsra.wv/vnsrl.wv
similar to D117454, try to add vl patterns and testcases.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D155466
Freddy Ye [Tue, 25 Jul 2023 05:47:45 +0000 (13:47 +0800)]
[X86] Support -march=graniterapids-d and update -march=graniterapids
Reviewed By: pengfei, RKSimon, skan
Differential Revision: https://reviews.llvm.org/D155798
pvanhout [Wed, 19 Jul 2023 13:33:28 +0000 (15:33 +0200)]
[AMDGPU] Allow vector access types in PromoteAllocaToVector
Depends on D152706
Solves SWDEV-408279
Reviewed By: #amdgpu, arsenm
Differential Revision: https://reviews.llvm.org/D155699
pvanhout [Wed, 28 Jun 2023 10:22:26 +0000 (12:22 +0200)]
[AMDGPU] Use SSAUpdater in PromoteAlloca
This allows PromoteAlloca to not be reliant on a second SROA run to remove the alloca completely. It just does the full transformation directly.
Note PromoteAlloca is still reliant on SROA running first to
canonicalize the IR. For instance, PromoteAlloca will no longer handle aggregate types because those should be simplified by SROA before reaching the pass.
Reviewed By: #amdgpu, arsenm
Differential Revision: https://reviews.llvm.org/D152706
Richard Smith [Tue, 25 Jul 2023 05:21:49 +0000 (22:21 -0700)]
Don't perform dynamic_cast optimization at -O0.
It seems preferable to avoid this optimization under -O0, and we're not
set up to emit speculative references to vtables at -O0 in general
anyway.
For #64088.
Johannes Doerfert [Fri, 3 Mar 2023 02:35:15 +0000 (18:35 -0800)]
[OpenMP] Add the `ompx_attribute` clause for target directives
CUDA and HIP have kernel attributes to tune the code generation (in the
backend). To reuse this functionality for OpenMP target regions we
introduce the `ompx_attribute` clause that takes these kernel
attributes and emits code as if they had been attached to the kernel
fuction (which is implicitly generated).
To limit the impact, we only support three kernel attributes:
`amdgpu_waves_per_eu`, for AMDGPU
`amdgpu_flat_work_group_size`, for AMDGPU
`launch_bounds`, for NVPTX
The existing implementations of those attributes are used for error
checking and code generation. `ompx_attribute` can be attached to any
executable target region and it can hold more than one kernel attribute.
Differential Revision: https://reviews.llvm.org/D156184
Fangrui Song [Tue, 25 Jul 2023 05:04:03 +0000 (22:04 -0700)]
[Support] Change MapVector's default template parameter to SmallVector<*, 0>
SmallVector<*, 0> is often a better replacement for std::vector :
both the object size and the code size are smaller.
(SmallMapVector uses SmallVector as well, but it is not common.)
clang size decreases by 0.0226%.
instructions:u decreases 0.037% when compiling a sqlite3 amalgram.
Reviewed By: JDevlieghere
Differential Revision: https://reviews.llvm.org/D156016
Fangrui Song [Tue, 25 Jul 2023 04:50:29 +0000 (21:50 -0700)]
[mlir-tblgen] Fix IWYU
Right now std::vector is instantiated with an incomplete element type,
which is ok but best to avoid.
Amir Ayupov [Tue, 25 Jul 2023 04:32:44 +0000 (21:32 -0700)]
[BOLT] Add blocks order kind to YAML profile header
Specify blocks order used in YAML profile. Needed to ensure profile backwards
compatibility with pre-D155514 DFS order by default.
Reviewed By: #bolt, maksfb
Differential Revision: https://reviews.llvm.org/D156176
Kevin Gleason [Tue, 25 Jul 2023 03:39:40 +0000 (20:39 -0700)]
[mlir] Fix for MSVC bool splat issue encountered.
When building MLIR using bazel on windows with MSVC2019, bool splats
were being created incorrectly:
```
dense<[true,true,true,true]> : tensor<4xi1>
-(parse with mlir-opt)-> dense<[true, false, false, false]> : tensor<4xi1>
```
Appears that a Windows bazel build produces a corrupt DenseIntOrFPElementsAttr.
Unable to repro using MSVC and cmake.
Issue first discovered here:
https://github.com/google/jax/issues/16394
Added test point for reproduction:
```
$ bazel test @llvm-project//mlir/unittests:ir_tests --test_arg=--gtest_filter=DenseSplatTest.BoolSplatSmall
```
Differential Revision: https://reviews.llvm.org/D155745
David Blaikie [Tue, 25 Jul 2023 02:32:04 +0000 (02:32 +0000)]
test/.../print-dot-dom.ll: Avoid writing to cwd of test by creating/cding into %t instead
The cwd of the test might not be writable.
David Blaikie [Wed, 19 Jul 2023 18:42:57 +0000 (18:42 +0000)]
ADT: ArrayRef: Assert that begin <= end
This came up in the context of #63169 - if this assert were in place it
would've been much easier to reduce the test case.
Chuanqi Xu [Tue, 25 Jul 2023 02:55:15 +0000 (10:55 +0800)]
Revert "[C++20] [Modules] Use CanonicalType for base classes"
Close https://github.com/llvm/llvm-project/issues/64091
This reverts commit
f82df0b285acd8a7115f0bfc55ce44474251c2d1 and add a
test from https://github.com/llvm/llvm-project/issues/64091
Freddy Ye [Tue, 25 Jul 2023 03:00:04 +0000 (11:00 +0800)]
[X86] Update features for sierraforest, grandridge
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D155784
Zheng Qian [Tue, 25 Jul 2023 02:49:58 +0000 (22:49 -0400)]
Add new option -fkeep-persistent-storage-variables to Clang release notes
This patch updates the Clang release notes with the new option
-fkeep-persistent-storage-variables added in
bb6ab91b1dcd.
Reviewed By: hubert.reinterpretcast
Differential Revision: https://reviews.llvm.org/D155501
Mehdi Amini [Tue, 25 Jul 2023 02:47:23 +0000 (19:47 -0700)]
Fix MLIR test pass crash
The pass tried to fold in reverse-post-order, but it cause an issue
when a parent is folded before the chilren as they will still be
present in the worklist.
Use reverse-preorder instead here.
Fixes #64089
Nikolas Klauser [Tue, 25 Jul 2023 02:53:39 +0000 (19:53 -0700)]
[libc++] Fix template parameter naming and enforce it through readability-identifier-naming
Reviewed By: #libc, Mordante
Spies: Mordante, aheejin, libcxx-commits
Differential Revision: https://reviews.llvm.org/D156059
Advenam Tacet [Mon, 24 Jul 2023 19:00:56 +0000 (21:00 +0200)]
[NFC] Fix release notes about ASan
Existing notes were not fully correct and were missing a detail:
- `std::vector` was annotated long time ago,
- `std::deque` annotations are new,
- now container annotations were extended to all allocators (support in ASan API exists since LLVM16).
Reviewed By: philnik, #libc
Differential Revision: https://reviews.llvm.org/D156162
Jordan Rupprecht [Tue, 25 Jul 2023 02:33:33 +0000 (19:33 -0700)]
[bazel] Add UPToSPIRV library/dep
Added in D156163
Gedare Bloom [Tue, 25 Jul 2023 02:13:33 +0000 (19:13 -0700)]
[clang-format] Add SpacesInParens with SpacesInParensOptions
This is a refactoring of:
- SpacesInConditionalStatement
- SpacesInCStyleCastParentheses
- SpaceInEmptyParentheses
- SpacesInParentheses
These are now options under the new Style Option: SpacesInParens. The
existing options are maintained for backward compatibility.
Within SpacesInParens, there are currently options for:
- Never
- Custom
The currently available options for Custom are:
- InConditionalStatements
- InCStyleCasts
- InEmptyParentheses
- Other
Setting InConditionalStatements and Other to true enables the same space
additions as SpacesInParentheses.
This refactoring does not add or remove any existing features, but it makes
it possible to more easily extend and maintain the addition of spaces within
parentheses.
Related to #55428.
Differential Revision: https://reviews.llvm.org/D155239
Jim Lin [Tue, 25 Jul 2023 00:31:04 +0000 (08:31 +0800)]
[RISCV] Add a common class for cm.push, cm.popret, cm.popretz and cm.pop.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D156092
WANG Rui [Tue, 25 Jul 2023 01:39:47 +0000 (09:39 +0800)]
[LoongArch] Implement isSExtCheaperThanZExt
Implement isSExtCheaperThanZExt.
Signed-off-by: WANG Rui <wangrui@loongson.cn>
Differential Revision: https://reviews.llvm.org/D154919
Galen Elias [Tue, 25 Jul 2023 01:05:51 +0000 (18:05 -0700)]
[clang-format] Add AlignConsecutiveShortCaseStatements
This adds a new AlignConsecutiveShortCaseStatements option in line with the
existing AlignConsecutive* options , which when
AllowShortCaseLabelsOnASingleLine is enabled will align the tokens after the
case statement's colon. This also adds a AlignCaseColons option to allow
aligning the case label colon itself rather than the token after it.
Fixes #55475.
Differential Revision: https://reviews.llvm.org/D151761
Owen Pan [Tue, 25 Jul 2023 01:36:53 +0000 (18:36 -0700)]
Revert "[clang-format] Add AlignConsecutiveShortCaseStatements"
This reverts commit
4ba00844174db562d2bd8b15dab6aac605eddf57.
WANG Rui [Tue, 25 Jul 2023 01:22:18 +0000 (09:22 +0800)]
[LoongArch] Add test case showing suboptimal codegen when zero extending
Add test case showing suboptimal codegen when zero extending.
Signed-off-by: WANG Rui <wangrui@loongson.cn>
Reviewed By: xen0n
Differential Revision: https://reviews.llvm.org/D154918
Owen Pan [Tue, 25 Jul 2023 01:24:30 +0000 (18:24 -0700)]
Revert "Revert "[clang-format] Add AlignConsecutiveShortCaseStatements""
This reverts commit
4f093b31669a4f8e417259583141159586a05b28.
Owen Pan [Tue, 25 Jul 2023 01:18:27 +0000 (18:18 -0700)]
Revert "[clang-format] Add AlignConsecutiveShortCaseStatements"
This reverts commit
4ba00844174db562d2bd8b15dab6aac605eddf57 due to missing
authorship.
Weining Lu [Tue, 25 Jul 2023 01:16:28 +0000 (09:16 +0800)]
Revert "[Clang][LoongArch] Fix ABI handling of empty structs in C++ to match GCC behaviour"
This reverts commit
c299efbf284fae92bb8d7d29110f76912f089daf.
Reason to revert: D142327 has been reverted which is depended by this
change.
Mehdi Amini [Fri, 21 Jul 2023 05:51:35 +0000 (22:51 -0700)]
Update ODS variadic segments "magic" attributes to use native Properties
The operand_segment_sizes and result_segment_sizes Attributes are now inlined
in the operation as native propertie. We continue to support building an
Attribute on the fly for `getAttr("operand_segment_sizes")` and setting the
property from an attribute with `setAttr("operand_segment_sizes", attr)`.
A new bytecode version is introduced to support backward compatibility and
backdeployments.
Differential Revision: https://reviews.llvm.org/D155919
Owen Pan [Tue, 25 Jul 2023 01:05:51 +0000 (18:05 -0700)]
[clang-format] Add AlignConsecutiveShortCaseStatements
This adds a new AlignConsecutiveShortCaseStatements option in line with the
existing AlignConsecutive* options , which when
AllowShortCaseLabelsOnASingleLine is enabled will align the tokens after the
case statement's colon. This also adds a AlignCaseColons option to allow
aligning the case label colon itself rather than the token after it.
Fixes #55475.
Differential Revision: https://reviews.llvm.org/D151761
chenli [Tue, 25 Jul 2023 01:02:14 +0000 (09:02 +0800)]
[LoongArch] Support InlineAsm for LSX and LASX
The author of the following files is licongtian <licongtian@loongson.cn>:
- clang/lib/Basic/Targets/LoongArch.cpp
- llvm/lib/Target/LoongArch/LoongArchAsmPrinter.cpp
- llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
The files mentioned above implement InlineAsm for LSX and LASX as follows:
- Enable clang parsing LSX/LASX register name, such as $vr0.
- Support the case which operand type is 128bit or 256bit when the
constraints is 'f'.
- Support the way of specifying LSX/LASX register by using constraint,
such as "={$xr0}".
- Support the operand modifiers 'u' and 'w'.
- Support and legalize the data types and register classes involved in
LSX/LASX in the lowering process.
Reviewed By: xen0n, SixWeining
Differential Revision: https://reviews.llvm.org/D154931
Weining Lu [Tue, 25 Jul 2023 00:58:41 +0000 (08:58 +0800)]
[Clang][LoongArch] Fix ABI handling of empty structs in C++ to match GCC behaviour
GCC doesn't ignore non-zero-length array of empty structures in C++
while clang does. What this patch did is to match GCC's behaviour
although this rule is not documented in psABI.
Similar to D142327 for RISCV.
Reviewed By: xry111, xen0n
Differential Revision: https://reviews.llvm.org/D156116
Weining Lu [Tue, 25 Jul 2023 00:58:32 +0000 (08:58 +0800)]
[Clang][LoongArch] Pre-commit test for D156116
Differential Revision: https://reviews.llvm.org/D156114
Mehdi Amini [Tue, 25 Jul 2023 00:57:55 +0000 (17:57 -0700)]
Cleanup CMake dependencies from unnecessary libraries in mlir/test/lib/Dialect/GPU/CMakeLists.txt (NFC)
Michael Halkenhaeuser [Tue, 25 Jul 2023 00:35:16 +0000 (20:35 -0400)]
[OpenMP] Add OMPT release note
OMPT release note addition for LLVM 17
Differential Revision: https://reviews.llvm.org/D156191
Michael Halkenhaeuser [Mon, 24 Jul 2023 23:56:02 +0000 (19:56 -0400)]
[OpenMP] [OMPT] [7/8] Invoke tool-supplied callbacks before and after target launch and data transfer operations
Implemented RAII objects, initialized at target entry points, that
invoke tool-supplied callbacks. Updated status of target callbacks as
implemented.
Depends on D127365
Patch from John Mellor-Crummey <johnmc@rice.edu>
With contributions from:
Dhruva Chakrabarti <Dhruva.Chakrabarti@amd.com>
Jan-Patrick Lehr <janpatrick.lehr@amd.com>
Reviewed By: jdoerfert, dhruvachak
Differential Revision: https://reviews.llvm.org/D127367
Mehdi Amini [Tue, 25 Jul 2023 00:18:55 +0000 (17:18 -0700)]
Revert "[mlir][gpu][transforms] Only depend on ExecutionEngine if MLIR_ENABLE_CUDA_RUNNER is true"
This reverts commit
68b7d3fffd7e8ebc40fdcb0acdcf2e88a93ea5c3.
The mlir-nvidia bot is broken.
Fangrui Song [Tue, 25 Jul 2023 00:21:28 +0000 (17:21 -0700)]
[llvm-objdump][test] Improve elf-aarch64-mapping-symbols.test
Kai Luo [Tue, 25 Jul 2023 00:08:53 +0000 (08:08 +0800)]
[PowerPC][AIX] Enable quadword atomics by default for AIX
On AIX, a libatomic supporting inline quadword atomic operations has been released, so that compatibility is not an issue now, we can enable quadword atomics by default.
Reviewed By: #powerpc, nemanjai
Differential Revision: https://reviews.llvm.org/D151312
Alex Richardson [Mon, 24 Jul 2023 23:41:44 +0000 (16:41 -0700)]
[builtins] Avoid using CRT_LDBL_128BIT in implementation. NFC
Currently the *tf builtin functions can only be built if long double is an
IEEE float, which prevents them from being available e.g. for x86 targets
(unlike libgcc which has them). This non-functional change prepares the
builtins library *tf functions for being able to target x86 by decoupling
their presence from CRT_LDBL_128BIT and instead checking for a
CRT_HAS_TF_MODE macro. This change is NFC since the CRT_HAS_TF_MODE is
currently only set if long double is an IEEE 128-bit float.
Reviewed By: compnerd
Differential Revision: https://reviews.llvm.org/D153812
Alex Richardson [Mon, 26 Jun 2023 21:58:29 +0000 (14:58 -0700)]
[builtins] Drop -fnested-functions flag from tests
This flag does nothing for clang and is apparently not supported by GCC:
aarch64-linux-gnu-gcc: error: unrecognized command-line option '-fnested-functions'; did you mean '-Wunused-function'?
It looks like it was maybe supported by Apple GCC, but that is no longer
a supported compiler.
Differential Revision: https://reviews.llvm.org/D153819
Alex Richardson [Mon, 26 Jun 2023 18:09:34 +0000 (11:09 -0700)]
[builtins] Fix building trunc*fhf2_test with GCC
GCC does not support __fp16, use the TYPE_FP16 macro instead.
Differential Revision: https://reviews.llvm.org/D153813
Matt Arsenault [Sat, 22 Jul 2023 12:12:23 +0000 (08:12 -0400)]
ConstantFolding: Constant fold denormal inputs to canonicalize for IEEE
This makes it possible to use canonicalize to perform a dynamic check
for whether denormal flushing is enabled, which will fold out when the
denormal mode is known. Previously it would only fold if denormal
flushing were known enabled.
https://reviews.llvm.org/D156107
Nicolas Vasilache [Mon, 24 Jul 2023 23:26:00 +0000 (01:26 +0200)]
[mlir][gpu][transforms] Only depend on ExecutionEngine if MLIR_ENABLE_CUDA_RUNNER is true
This fixes a compilation bug where we would try to depend on ExecutionEngine but it wasn't actually built.
Nicolas Vasilache [Mon, 24 Jul 2023 22:50:42 +0000 (00:50 +0200)]
[mlir][linalg] NFC - Move some utils in preparation for revamping mapping of scf.forall
Vitaly Buka [Mon, 24 Jul 2023 22:52:16 +0000 (15:52 -0700)]
[NFC] Add MprotectReadWrite
It's unused, but I need it for debuging.
Seems usefull for completeness.
Reviewed By: thurston
Differential Revision: https://reviews.llvm.org/D156180
Ivan Butygin [Mon, 24 Jul 2023 19:35:28 +0000 (21:35 +0200)]
[mlir][spirv] Convert `ub.poison` to `spirv.undef`
SPIR-V doesn't have poison, but poison can be converted to undef.
Differential Revision: https://reviews.llvm.org/D156163
varconst [Mon, 24 Jul 2023 21:56:44 +0000 (14:56 -0700)]
[libc++][hardening] Categorize more assertions.
Differential Revision: https://reviews.llvm.org/D155873
Cyndy Ishida [Mon, 24 Jul 2023 21:25:21 +0000 (14:25 -0700)]
[TextAPI] Remove TBD file attributes that aren't used anymore.
UUID's & `installapi` flag are no longer useful in recent apple linker/tapi.
The reason for removing them is that these are attributes that record
how a library was built but not really about the library itself. TBD
files now only track information this is important as link time
dependencies.
Reviewed By: ributzka
Differential Revision: https://reviews.llvm.org/D149861
Joshua Batista [Mon, 24 Jul 2023 20:09:21 +0000 (13:09 -0700)]
clang: Add elementwise pow builtin
Add codegen for llvm pow elementwise builtin
The pow 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, or too many inputs.
The new builtin is restricted to floating point types only.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D153310
Jonathan Peyton [Thu, 6 Jul 2023 20:05:59 +0000 (15:05 -0500)]
[OpenMP] Move KMP_VERSION printout logic to post-serial-init
Get the KMP_VERSION printout logic out of environment variable file
(kmp_settings.cpp) and move to end of serial initialization where
KMP_SETTINGS and OMP_DISPLAY_ENV are.
Differential Revision: https://reviews.llvm.org/D154652
Jonathan Peyton [Mon, 24 Jul 2023 21:01:03 +0000 (16:01 -0500)]
[OpenMP] Restore comment accidently deleted in D154650
Jonathan Peyton [Thu, 6 Jul 2023 18:50:34 +0000 (13:50 -0500)]
[OpenMP] Re-use affinity raii class in worker spawning
Get rid of explicit mask alloc, getthreadaffinity, set temp affinity,
reset to old affinity, dealloc steps in favor of existing
kmp_affinity_raii_t to push/pop a temporary affinity.
Differential Revision: https://reviews.llvm.org/D154650
Jacek Caban [Mon, 24 Jul 2023 20:49:58 +0000 (22:49 +0200)]
Revert "[llvm-objdump] [NFC] Factor out DisassemblerTarget class."
This reverts commit
6c48f57c14dcfe2410afcb4c6778dcbb40d294b5.
Build broken on GCC.
Nick Desaulniers [Mon, 24 Jul 2023 20:40:14 +0000 (13:40 -0700)]
[clang][ConstantEmitter] have tryEmitPrivate[ForVarInit] try ConstExprEmitter fast-path first
As suggested by @efriedma in:
https://reviews.llvm.org/D76096#4370369
This should speed up evaluating whether an expression is constant or
not, but due to the complexity of these two different implementations,
we may start getting different answers for edge cases for which we do
not yet have test cases in-tree (or perhaps even performance regressions
for some cases). As such, contributors have carte blanche to revert if
necessary.
For additional historical context about ExprConstant vs CGExprConstant,
here's snippets from a private conversation on discord:
ndesaulniers:
why do we have clang/lib/AST/ExprConstant.cpp and
clang/lib/CodeGen/CGExprConstant.cpp? Does clang constant fold during
ast walking/creation AND during LLVM codegen?
efriedma:
originally, clang needed to handle two things: integer constant
expressions (the "5" in "int x[5];"), and constant global initializers
(the "5" in "int x = 5;"). pre-C++11, the two could be handled mostly
separately; so we had the code for integer constants in AST/, and the
code for globals in CodeGen/. C++11 constexpr sort of destroyed that
separation, though. so now we do both kinds of constant evaluation on
the AST, then CGExprConstant translates the result of that evaluation
to LLVM IR. but we kept around some bits of the old cgexprconstant to
avoid performance/memory usage regressions on large arrays.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D151587
Craig Topper [Mon, 24 Jul 2023 20:38:51 +0000 (13:38 -0700)]
[RISCV] Add lowering for scalar fmaximum/fminimum.
Unlike fmaxnum and fminnum, these operations propagate nan and
consider -0.0 to be less than +0.0.
Without Zfa, we don't have a single instruction for this. The
lowering I've used forces the other input to nan if one input
is a nan. If both inputs are nan, they get swapped. Then use
the fmax or fmin instruction.
New ISD nodes are needed because fmaxnum/fminnum to not define
the order of -0.0 and +0.0.
This lowering ensures the snans are quieted though that is probably not
required in default environment). Also ensures non-canonical nans
are canonicalized, though I'm also not sure that's needed.
Another option could be to use fmax/fmin and then overwrite the
result based on the inputs being nan, but I'm not sure we can do
that with any less code.
Future work will handle nonans FMF, and handling the case where
we can prove the input isn't nan.
This does fix the crash in #64022, but we need to do more work
to avoid scalarization.
Reviewed By: fakepaper56
Differential Revision: https://reviews.llvm.org/D156069
Jacek Caban [Wed, 19 Apr 2023 21:39:53 +0000 (23:39 +0200)]
[llvm-objdump] [NFC] Factor out DisassemblerTarget class.
This is a preparation for ARM64EC/ARM64X binaries, which may contain both ARM64
and x86_64 code in the same file. llvm-objdump already has partial support for
mixing disassemblers for ARM thumb mode support. However, for ARM64EC we can't
share MCContext, MCInstrAnalysis and PrettyPrinter instances. This patch
provides additional abstraction which makes adding mixed code support later in
the series easier.
Reviewed By: jhenderson, MaskRay
Differential Revision: https://reviews.llvm.org/D149093
Piotr Zegar [Mon, 24 Jul 2023 19:43:47 +0000 (19:43 +0000)]
[clang-tidy] Initialize DiagnosticEngine in ExpandModularHeaders
Fix issue preventing suppression of compiler warnings with
-Wno-<warning> under C++20 and above. Add call to
ProcessWarningOptions and propagate DiagnosticOpts more properly.
Fixes: #56709, #61969
Reviewed By: carlosgalvezp
Differential Revision: https://reviews.llvm.org/D156056
Anton Dukeman [Mon, 24 Jul 2023 19:14:35 +0000 (19:14 +0000)]
[clang-tidy] Add folly::Optional to unchecked-optional-access
The unchecked-optional-access check identifies attempted value
unwrapping without checking if the value exists. These changes extend
that support to checking folly::Optional.
Reviewed By: gribozavr2
Differential Revision: https://reviews.llvm.org/D155890
Philip Reames [Mon, 24 Jul 2023 19:30:25 +0000 (12:30 -0700)]
[RISCV] Adjust memcpy lowering test coverage w/V
This is fixing a mistake in
4f4f49137.
Mehdi Amini [Mon, 24 Jul 2023 19:27:01 +0000 (12:27 -0700)]
Revert "Update ODS variadic segments "magic" attributes to use native Properties"
This reverts commit
20b93abca6516bbb23689c3777536fea04e46e14.
One python test is broken, WIP.
Fangrui Song [Mon, 24 Jul 2023 19:27:14 +0000 (12:27 -0700)]
[Driver][test] Remove XRay/lit.local.cfg
This was needed when XRay/* tests relied on the default target triple.
Now that we set a default target triple for every test we can remove
this customization.
This cleanup is intrigued by D156090.
Philip Reames [Mon, 24 Jul 2023 19:18:04 +0000 (12:18 -0700)]
[RISCV] Add memcpy lowering test coverage with and without V
LLVM GN Syncbot [Mon, 24 Jul 2023 19:02:32 +0000 (19:02 +0000)]
[gn build] Port
0882c70df222
Cyndy Ishida [Mon, 24 Jul 2023 18:55:01 +0000 (11:55 -0700)]
[TextAPI] Introduce SymbolSet
SymbolSet is a structure that acts as a simple container class for exported symbols that
belong to a library interface. It allows tapi to decouple the globals
from the other library attributes. It's uniqued by symbol name and `kind`, which all contain their assigned target triples.
Reviewed By: zixuw
Differential Revision: https://reviews.llvm.org/D149860
Jacek Caban [Mon, 24 Jul 2023 18:55:49 +0000 (20:55 +0200)]
[llvm-objdump] [NFC] Add missing REQUIRES to arm64ec.yaml.
Differential Revision: https://reviews.llvm.org/D149091
Jacek Caban [Wed, 12 Apr 2023 19:18:37 +0000 (21:18 +0200)]
Recognize ARM64EC binaries in COFFObjectFile::getMachine.
ARM64EC/ARM64X binaries use ARM64 or AMD64 machine types, but provide
additional CHPE metadata that may be used to distinguish them from
pure ARM64/AMD64 binaries.
Reviewed By: jhenderson, MaskRay, mstorsjo
Differential Revision: https://reviews.llvm.org/D149091
Jacek Caban [Fri, 28 Apr 2023 12:35:38 +0000 (14:35 +0200)]
[yaml2obj] Add support for load config section data.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D149440
Mehdi Amini [Fri, 21 Jul 2023 05:51:35 +0000 (22:51 -0700)]
Update ODS variadic segments "magic" attributes to use native Properties
The operand_segment_sizes and result_segment_sizes Attributes are now inlined
in the operation as native propertie. We continue to support building an
Attribute on the fly for `getAttr("operand_segment_sizes")` and setting the
property from an attribute with `setAttr("operand_segment_sizes", attr)`.
A new bytecode version is introduced to support backward compatibility and
backdeployments.
Differential Revision: https://reviews.llvm.org/D155919
Advenam Tacet [Mon, 24 Jul 2023 17:57:22 +0000 (19:57 +0200)]
[NFC][libc++] Update comments to reflect changes in ASan
ASan capabilities were extended, but some comments were not updated and describe old behavior. This commit updates outdated comments, which I found.
Mentioned changes are:
- All allocators in containers (`std::vector` and `std::deque`; D146815 D136765) are supported, but it's possible to turn off annotations for a specific allocator (D145628).
- Buffers don't have to be aligned (D132522).
Reviewed By: #libc, philnik
Differential Revision: https://reviews.llvm.org/D156155
Joseph Huber [Mon, 24 Jul 2023 18:25:53 +0000 (13:25 -0500)]
[OpenMP] Add a few release notes
Summary:
Release notes
Reid Kleckner [Mon, 24 Jul 2023 17:17:35 +0000 (10:17 -0700)]
Add Adrian and David as owners for debug info
Reviewed By: aprantl, probinson
Differential Revision: https://reviews.llvm.org/D156143
Kelvin Li [Tue, 11 Jul 2023 03:13:34 +0000 (23:13 -0400)]
[flang] Add PowerPC vec_abs, vec_nmadd, vec_msub and vec_sel intrinsics
Co-authored-by: Paul Scoropan <1paulscoropan@gmail.com>
Differential Revision: https://reviews.llvm.org/D154985
Michael Maitland [Sat, 22 Jul 2023 21:02:23 +0000 (14:02 -0700)]
[LAA] Make MaxSafeDepDistBytes private in LoopAccessAnalysis. NFC
Any users of LoopAccessAnalysis should use MaxSafeVectorWidthInBits.
Differential Revision: https://reviews.llvm.org/D156034
Paul Robinson [Fri, 21 Jul 2023 20:34:41 +0000 (13:34 -0700)]
[DWARF] Make sure file entry for artificial functions has an MD5 checksum
The DIFile cache was keyed on a string pointer instead of string content,
which was causing misses and resulted in an entry without a checksum.
In DWARF v5 if any checksum is missing, we can't write any to the output
file, so this had consequences.
Fixes https://github.com/llvm/llvm-project/issues/63955
Differential revision: https://reviews.llvm.org/D155991
Paul Robinson [Thu, 20 Jul 2023 15:56:39 +0000 (08:56 -0700)]
[Headers][doc] Add misc non-AVX2 intrinsic descriptions
Adds descriptions for adxintrin.h, bmi2intrin.h, clflushoptintrin.h,
clzerointrin.h, rdseedintrin.h, and xsavecintrin.h.
Differential revision: https://reviews.llvm.org/D155859
Alex Langford [Tue, 18 Jul 2023 22:36:15 +0000 (15:36 -0700)]
[lldb][NFCI] Add some missing SB class forward declarations
I noticed these were missing.
Differential Revision: https://reviews.llvm.org/D155653
Po-yao Chang [Mon, 24 Jul 2023 17:30:23 +0000 (01:30 +0800)]
[Clang] Reject programs declaring namespace std to be inline
Fixes #64041
Differential Revision: https://reviews.llvm.org/D156063
Mehdi Amini [Mon, 24 Jul 2023 17:20:02 +0000 (10:20 -0700)]
Revert "[mlir][gpu] Fallback to JIT compilation" "[mlir][gpu] Increase default SM version from 35 to 50" and "[mlir][gpu] Improving Cubin Serialization with ptxas Compiler"
This reverts commit
2e0e00ed841951e358a85a871647be9b3a622f51
and reverts commit
a6eb40692c795a9cc29266779ceca2e304141114
and reverts commit
585cbe3f639783bf0307b47504acbd205f135310.
15 tests are broken on the mlir-nvidia buildbot:
'cuModuleLoadData(&module, data)' failed with 'CUDA_ERROR_INVALID_SOURCE'
'cuModuleGetFunction(&function, module, name)' failed with 'CUDA_ERROR_INVALID_HANDLE'
'cuLaunchKernel(function, gridX, gridY, gridZ, blockX, blockY, blockZ, smem, stream, params, extra)' failed with 'CUDA_ERROR_INVALID_HANDLE'
'cuModuleUnload(module)' failed with 'CUDA_ERROR_INVALID_HANDLE'
Benjamin Kramer [Mon, 24 Jul 2023 17:21:18 +0000 (19:21 +0200)]
Benjamin Kramer [Mon, 24 Jul 2023 17:15:26 +0000 (19:15 +0200)]
[bazel] Turn off layering_check for //llvm/unittests:target_aarch64_tests
llvm/unittests/Target/AArch64/AArch64SVESchedPseudoTest.cpp:38:10: error: module @llvm-project//llvm/unittests:target_aarch64_tests does not depend on a module exporting 'AArch64GenInstrInfo.inc'
Test was added in
57329ca94630742ce3b0f6b239b263d757a9eb4a
Slava Zakharin [Mon, 24 Jul 2023 16:22:38 +0000 (09:22 -0700)]
[flang][hlfir] Fixed KindMapping for HLFIR intrinsics lowering.
hlfir.count lowering was using incorrect default integer kind
by ignoring the kind specified in the ModuleOp.
Reviewed By: tblah
Differential Revision: https://reviews.llvm.org/D156017
Slava Zakharin [Mon, 24 Jul 2023 16:22:13 +0000 (09:22 -0700)]
[flang][hlfir] Inherit constant length for the result of hlfir.transpose.
Character length may be unknown for the type of Fortran::evaluate::FunctionRef
expression, but we can try to propagate it from the argument of
TRANSPOSE if it is known constant. Alternatively, we could relax
hlfir.transpose verification (i.e. allow character types mismatch
for the argument and the result).
Depends on D155912
Reviewed By: tblah
Differential Revision: https://reviews.llvm.org/D155913
Fangrui Song [Mon, 24 Jul 2023 17:05:34 +0000 (10:05 -0700)]
[Driver][test] Clean up some xray tests
Add explicit --target= so that the tests run on all targets, not some
that support XRay, similar to commit
e1051414a16e970c2e36c2ab7dfe2b17353c4751.
For option testing, we often use a placeholder architecture (e.g., x86_64).
Fix https://github.com/llvm/llvm-project/issues/64028
Piotr Zegar [Mon, 24 Jul 2023 16:53:11 +0000 (16:53 +0000)]
[clang-tidy][NFC] Improve release notes
Fix formating, merge few entrys.
LLVM GN Syncbot [Mon, 24 Jul 2023 16:49:12 +0000 (16:49 +0000)]
[gn build] Port
7c36b416b6b1
Fangrui Song [Mon, 24 Jul 2023 16:47:49 +0000 (09:47 -0700)]
[SLP] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds after D154891
Ivan Butygin [Fri, 21 Jul 2023 12:16:41 +0000 (14:16 +0200)]
[mlir] Convert `ub.poison` to `llvm.poison`
Differential Revision: https://reviews.llvm.org/D155945
Podchishchaeva, Mariya [Mon, 24 Jul 2023 16:28:09 +0000 (09:28 -0700)]
[clang] Fix specialization of non-templated member classes of class templates
Explicit specialization doesn't increase depth of template parameters,
so need to be careful when gathering template parameters for
instantiation.
For the case:
```
template<typename T>
struct X {
struct impl;
};
template <>
struct X<int>::impl {
template<int ct>
int f() { return ct; };
};
```
instantiation of `f` used to crash because type template parameter
`int` of explicit specialization was taken into account, but non-type
template parameter `ct` had zero depth and index so wrong parameter
ended up inside of a wrong handler.
Fixes https://github.com/llvm/llvm-project/issues/61159
Reviewed By: aaron.ballman, shafik
Differential Revision: https://reviews.llvm.org/D155705
Valentin Clement [Mon, 24 Jul 2023 16:34:00 +0000 (09:34 -0700)]
[flang][openacc] Keep original array size in reduction init region with slice
Keep the original array size when materializing the private copy.
Depends on D155882
Reviewed By: razvanlupusoru
Differential Revision: https://reviews.llvm.org/D155893
Valentin Clement [Mon, 24 Jul 2023 16:33:09 +0000 (09:33 -0700)]
[flang][openacc] Update materialization recipe for private copy in reduction init region
Update the code generated in the init region to materialize the private
copy.
Reviewed By: razvanlupusoru
Differential Revision: https://reviews.llvm.org/D155882
Alexey Bataev [Mon, 10 Jul 2023 20:49:26 +0000 (13:49 -0700)]
[SLP]Check scalars before trying scheduling.
Need to check the scalars if they can be vectorized before trying to
schedule them. It may save compile time and improve vectorization on
large functions/basic blocks.
Differential Revision: https://reviews.llvm.org/D154891
Owen Pan [Sun, 23 Jul 2023 20:45:22 +0000 (13:45 -0700)]
[clang-format] Insert namespace comments with leading spaces
Insert missing namespace comments with SpacesBeforeTrailingComments
leading spaces.
Fixes #64051.
Differential Revision: https://reviews.llvm.org/D156065