- May 22, 2024
-
-
John Brawn authored
This adds the -z gcs and -z gcs-report options, which behave similarly to -z shtk and -z cet-report, except that -z gcs accepts a parameter: * -z gcs=implicit is the default behaviour, where the GCS bit is inferred from the input objects. * -z gcs=never clears the GCS bit, ignoring the input objects. * -z gcs=always sets the GCS bit, ignoring the input objects. This is so that there's a means of explicitly disabling GCS even when all input objects have the GCS bit set.
-
Fangrui Song authored
This follows up to SHT_LLVM_LTO (https://reviews.llvm.org/D153215) and resolves the comment of the FatLTO patch https://reviews.llvm.org/D146776#4430626
-
Jeffrey Byrnes authored
In the case of larger vectors, we should still prefer the vectorized version (i.e. shufflevector vs extract/insert chains). In arithmetic chains, vectorization results in chains of packed math instructions (as opposed to unpack/repack & scalarized arithmetic): https://godbolt.org/z/c5onaf6G5 In chains with PHIs, vectorization again removes the unnecessary pack / repack code around BBs: https://godbolt.org/z/vz7zYzvhs
-
Momchil Velikov authored
-
Steven Wu authored
Change the ModuleFlag type for target_variant to warning to avoid error out when the value is different. This matches the linker behavior when linking object files. rdar://125874272
-
- May 21, 2024
-
-
Yingwei Zheng authored
This patch adds support for G_FREEZE on riscv. It will be selected into a copy instruction. The ll test is copied from the AArch64 patch: https://github.com/llvm/llvm-project/commit/665da596854bf07ee25f368855156dde43845013.
-
jofrn authored
#91578 implements `HasOneUse` predicate on `PatFrag`, so this commit uses it within AMDGPU.
-
Nikita Popov authored
In this case the shuffle mask checks should already guarantee a single-source shuffle, so this is just for clarity.
-
Vlad Serebrennikov authored
Another take at fixing https://lab.llvm.org/buildbot/#/builders/123/builds/26920 and https://lab.llvm.org/buildbot/#/builders/123/builds/26913 caused by #92888
-
Nikita Popov authored
In this case, the isIdentityWithExtract() checks should already guarantee that these are single-source shuffles, so this is just for clarity.
-
Nikita Popov authored
Otherwise we'll convert undef to poison. Alive2 was already flagging the existing test8 test as a miscompile.
-
Erich Keane authored
'reduction' has a few restrictions over normal 'var-list' clauses: 1- On parallel, a num_gangs can only have 1 argument when combined with reduction. These two aren't able to be combined on any other of the compute constructs however. 2- The vars all must be 'numerical data types' types of some sort, or a 'composite of numerical data types'. A list of types is given in the standard as a minimum, so we choose 'isScalar', which covers all of these types and keeps types that are actually numeric. Other compilers don't seem to implement the 'composite of numerical data types', though we do. 3- Because of the above restrictions, member-of-composite is not allowed, so any access via a memberexpr is disallowed. Array-element and sub-arrays (aka array sections) are both permitted, so long as they meet the requirements of #2. This patch implements all of these for compute constructs.
-
Nikita Popov authored
In this case, isIdentityWithExtract() should already ensure that this is a single-source shuffle. This just makes things more explicit.
-
Qiongsi Wu authored
`memrchr` is not available on AIX. This patch turns it off so the optimizer will not generate it to cause link errors.
-
Nikita Popov authored
Otherwise this may not actually be a single-source shuffle.
-
Nikita Popov authored
-
Nikita Popov authored
I believe that in these cases other conditions already ensure that the second operand is not used, this is mostly for clarity.
-
Nikita Popov authored
We can't canonicalize these to a splat shuffle, as doing so would convert undef -> poison.
-
Nikita Popov authored
-
Krzysztof Parzyszek authored
When lowering IfConstruct, CaseConstruct, and SelectTypeConstruct, emit branches that exit the construct in each block that is still unterminated after the FIR has been generated in it. The same thing may be needed for SelectRankConstruct, once it's supported. This eliminates the need for inserting branches in `genFIR(Evaluation)`. Follow-up to PR https://github.com/llvm/llvm-project/pull/91614.
-
Nikita Popov authored
This transform works on single-source shuffles, which require that the second operand is poison, not undef. Otherwise we may convert undef to poison. Fixes https://github.com/llvm/llvm-project/issues/92887.
-
Nikita Popov authored
-
Jay Foad authored
I do not understand what optimization this was supposed to implement. It has never been enabled. I suspect it no longer applies to GCN/RDNA architectures.
-
Vlad Serebrennikov authored
Addresses buildbot failure https://lab.llvm.org/buildbot/#/builders/123/builds/26913 caused by #92888
-
Jay Foad authored
-
Jay Foad authored
We insert required waits for fences in SIMemoryLegalizer.
-
YunQiang Su authored
Commit: d59bc6b5 Clang/MIPS: Add +fp64 if MSA and no explicit -mfp option (#91949) added +fp64 for `clang`, while not for `clang -cc1`. So clang -cc1 -triple=mips -target-feature +msa -S will emit an asm source file without ".module fp=64".
-
Vlad Serebrennikov authored
This patch moves `Sema` functions that handle pseudo-objects into the new `SemaPseudoObject` class. This continues previous efforts to split `Sema` up. Additional context can be found in #84184. As usual, in order to help reviewing this, formatting changes are split into a separate commit.
-
Timm Bäder authored
-
Jacek Caban authored
-
Timm Bäder authored
-
Timm Bäder authored
-
Tom Eccles authored
This means that this pass will also run on hlfir elemental operations which are not inside of functions. See RFC: https://discourse.llvm.org/t/rfc-add-an-interface-for-top-level-container-operations Some of the changes are from moving the declaration and definition of the constructor into tablegen (as requested during code review of another pass). While I was updating the tests I noticed that the optimized bufferization pass and some cse were missing from the optimized pipeline in flang/test/Driver/mlir-pass-pipeline.f90. I fixed this in this commit.
-
Vlad Serebrennikov authored
This patch reduces template instantiation depth in `infinite-instantiations.test`, because it doesn't seem to be concerned with the default instantiation depth in particular, but has a very material impact on testing times of clangd. Which subsequently affects CI run times for all Clang changes. The following numbers are taken from https://buildkite.com/llvm-project/github-pull-requests/builds/65299, but they are the same for any CI run with clangd: Linux: ``` Slowest Tests: -------------------------------------------------------------------------- 35.19s: Clangd :: infinite-instantiation.test 5.53s: Clangd :: protocol.test 1.48s: Clang Tools :: clang-tidy/checkers/modernize/use-emplace.cpp 1.40s: Clang Tools :: clang-tidy/checkers/misc/non-private-member-variables-in-classes.cpp 1.17s: Clang Tools :: clang-tidy/checkers/google/upgrade-googletest-case.cpp 1.15s: Clang Tools :: clang-tidy/checkers/bugprone/unsafe-functions.c 1.10s: Clang Tools :: clang-tidy/infrastructure/check_clang_tidy.cpp 1.07s: Clang Tools :: clang-tidy/checkers/readability/redundant-casting.cpp 1.06s: Clang Tools :: clang-tidy/checkers/misc/const-correctness-values.cpp 1.02s: Clang Tools :: clang-tidy/checkers/bugprone/implicit-widening-of-multiplication-result-char.cpp 1.00s: Clang Tools :: clang-tidy/checkers/modernize/loop-convert-reverse.cpp 0.97s: Clang Tools :: clang-tidy/checkers/modernize/loop-convert-basic.cpp 0.95s: Clang Tools :: clang-tidy/checkers/modernize/use-std-print.cpp 0.93s: Clang Tools :: clang-tidy/checkers/modernize/loop-convert-extra.cpp 0.92s: Clang Tools :: clang-tidy/checkers/altera/single-work-item-barrier.cpp 0.90s: Clang Tools :: clang-tidy/checkers/readability/identifier-naming-hungarian-notation-lower-case-prefix.cpp 0.90s: Clang Tools :: clang-tidy/checkers/modernize/use-auto-min-type-name-length.cpp 0.89s: Clang Tools :: clang-tidy/checkers/readability/identifier-naming-hungarian-notation-cfgfile.cpp 0.88s: Clang Tools :: clang-tidy/checkers/readability/identifier-naming-hungarian-notation.cpp 0.85s: Clangd Unit Tests :: ./ClangdTests/Hover/All ``` Windows: ``` Slowest Tests: -------------------------------------------------------------------------- 244.74s: Clangd :: infinite-instantiation.test 11.42s: Clangd :: protocol.test 8.97s: Clang Tools :: clang-tidy/checkers/misc/non-private-member-variables-in-classes.cpp 7.44s: Clang Tools :: clang-tidy/checkers/altera/single-work-item-barrier.cpp 6.71s: Clang Tools :: clang-tidy/checkers/bugprone/unsafe-functions.c 6.61s: Clang Tools :: clang-tidy/checkers/bugprone/implicit-widening-of-multiplication-result-char.cpp 6.42s: Clang Tools :: clang-tidy/infrastructure/check_clang_tidy.cpp 6.32s: Clang Tools :: clang-tidy/checkers/modernize/loop-convert-reverse.cpp 6.01s: Clang Tools :: clang-tidy/checkers/readability/redundant-casting.cpp 5.62s: Clang Tools :: clang-tidy/checkers/modernize/use-auto-min-type-name-length.cpp 5.58s: Clang Tools :: clang-tidy/checkers/modernize/replace-disallow-copy-and-assign-macro.cpp 5.46s: Clang Tools :: clang-tidy/checkers/readability/function-cognitive-complexity-flags.cpp 5.08s: Clang Tools :: clang-tidy/checkers/readability/avoid-return-with-void-value.cpp 5.07s: Clang Tools :: clang-tidy/checkers/readability/redundant-declaration.cpp 4.99s: Clang Tools :: clang-tidy/checkers/readability/identifier-naming-hungarian-notation-lower-case-prefix.cpp 4.91s: Clang Tools :: clang-tidy/checkers/bugprone/implicit-widening-of-multiplication-result-pointer-offset.cpp 4.87s: Clang Tools :: clang-tidy/checkers/readability/identifier-naming-hungarian-notation-cfgfile.cpp 4.79s: Clang Tools :: clang-tidy/checkers/google/upgrade-googletest-case.cpp 4.78s: Clang Tools :: clang-tidy/infrastructure/clean-up-code.cpp 4.76s: Clang Tools :: clang-tidy/checkers/bugprone/implicit-widening-of-multiplication-result-int.cpp ```
-
Timm Bäder authored
We need to create the temporary earlier so the visitZeroRecordInitializer() call has access to it.
-
Pavel Labath authored
-
Pavel Labath authored
DWARFDebugInfo only knows how to resolve references in its own file, but in split dwarf, the index entries will refer to DIEs in the separate (DWO) file. To resolve the DIERef correctly we'd either need to go through the SymbolFileDWARF to get the full logic for resolving a DIERef, or use the fact that ToDIERef already looks up the correct unit while computing its result. This patch does the latter. This bug manifested itself in not being able to find type definitions for types in namespaces, so I've modified one of our type resolving test cases to run with debug_names, and added a namespaced class into it (it originally contained only a top-level class).
-
Timm Bäder authored
-
Lukacma authored
This patch extends https://reviews.llvm.org/D68611 and emits lifetime markers for temporary allocas of non-aggregate types as well.
-
Timm Bäder authored
-