- Apr 29, 2024
-
-
Owen Pan authored
Fixes #37705. Fixes #47333. Fixes #47624. Fixes #58850. Fixes #75929. Fixes #87885. Fixes #89916.
-
Owen Pan authored
-
Florian Hahn authored
This avoids the need for using getVPSingleValue/getDefiningRecipe at the place the return value is used.
-
Christian Sigg authored
…ted. (#89998)" (#90250) This partially reverts commit 7aedd7dc. This change removes calls to the deprecated member functions. It does not mark the functions deprecated yet and does not disable the deprecation warning in TypeSwitch. This seems to cause problems with MSVC.
-
Kazu Hirata authored
commit 4c8ec8f8 Author: Kazu Hirata <kazu@google.com> Date: Wed Apr 24 16:25:35 2024 -0700 introduced the idea of serializing/deserializing a subset of the fields in PortableMemInfoBlock. While it reduces the size of the indexed MemProf profile file, we now could inadvertently access unavailable fields and go without noticing. To protect ourselves from the risk, this patch adds access checks to PortableMemInfoBlock::get* methods by embedding a bit set representing available fields into PortableMemInfoBlock.
-
Kazu Hirata authored
Currently, we convert FrameId to Frame and CallStackId to a call stack at several places. This patch unifies those into function objects -- FrameIdConverter and CallStackIdConverter. The existing implementation of CallStackIdConverter, being removed in this patch, handles both FrameId and CallStackId conversions. This patch splits it into two phases for flexibility (but make them composable) because some places only require the FrameId conversion. This iteration fixes a problem uncovered with ubsan, where we were dereferencing an uninitialized std::unique_ptr.
-
cor3ntin authored
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p0609r3.pdf We support this feature in all language mode. maybe_unused applied to a binding makes the whole declaration unused.
-
Théo Degioanni authored
Before #87193, the canonicalizer in arith crashed when attempting signed extension on an i0 value. To hopefully avoid it happening again, this PR introduces tests for canonicalization of arith operations with i0 values, focusing on operations related to bit width or signedness.
-
Fangrui Song authored
So that `clang -c -mrelax-all a.s` sets MCRelaxAll and assembles JMP/JCC to a near jump instead of silently ignoring `-mrelax-all`.
-
Simon Pilgrim authored
Split ndd/no-ndd check prefix cases
-
- Apr 28, 2024
-
-
Simon Pilgrim authored
-
Sameer Sahasrabuddhe authored
- Clarify convergence of threads v/s convergence of operations. - Explicitly address operations that are not in any cycle. This was inspired by a discussion on Discourse: https://discourse.llvm.org/t/llvm-convergence-semantics/77642
-
Renato Golin authored
Adding `min` that was already implemented but not exposed. Adding a few additional unary ops: * Reciprocal as `arith.div(1,arg)` * Round as `math.round(arg)` * Sqrt as `math.sqrt(arg)` * Rsqrt as `math.rsqrt(arg)` * Square as `math.powf(arg, 2)` * TanH as `math.tanh(arg)` All with the agreed semantics at the round table: no implicit broadcast/type cast.
-
Fabian Mora authored
This patch removes the `offloadingHandler` option from the `ModuleToBinary` pass. The option is removed as it cannot be parsed from textual form. This fixes issue #90344.
-
Florian Hahn authored
If we vectorize a loop with multiple exits, all exiting branches should be considered uniform, as the resulting loop will be controlled by the canonical IV only. Previously we were overestimating the cost of values contributing to the other exits.
-
Mark de Wever authored
This was suggested during the review of https://github.com/llvm/llvm-project/pull/89413 This does not change the experimental state of modules.
-
Kiran Chandramohan authored
Remove OpenMP FIR lowering tests. These are now replaced by HLFIR based tests. This might hopefully speedup testing as well.
-
Joseph Huber authored
-
Chuanqi Xu authored
external decls This patch fixes a FIXME in StoredDeclList::replaceExternalDecls. StoredDeclList::replaceExternalDecls will iterate the list first to remove some declarations and iterate the list again to get the tail of the list. It should be better to avoid the second iterations.
-
Mark de Wever authored
The previous patch implemented - P2713R1 Escaping improvements in std::format - LWG3965 Incorrect example in [format.string.escaped] p3 for formatting of combining characters These changes were correct, but had a size and performance penalty. This patch improves the size and performance of the previous patch. The performance is still worse than before since the lookups may require two property lookups instead of one before implementing the paper. The changes give a tighter coupling between the Unicode data and the algorithm. Additional tests are added to notify about changes in future Unicode updates. Before ``` ----------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------- BM_ascii_escaped<char> 110704 ns 110696 ns 6206 BM_unicode_escaped<char> 101371 ns 101374 ns 6862 BM_cyrillic_escaped<char> 63329 ns 63327 ns 11013 BM_japanese_escaped<char> 41223 ns 41225 ns 16938 BM_emoji_escaped<char> 111022 ns 111021 ns 6304 BM_ascii_escaped<wchar_t> 112441 ns 112443 ns 6231 BM_unicode_escaped<wchar_t> 102776 ns 102779 ns 6813 BM_cyrillic_escaped<wchar_t> 58977 ns 58975 ns 11868 BM_japanese_escaped<wchar_t> 36885 ns 36886 ns 18975 BM_emoji_escaped<wchar_t> 115885 ns 115881 ns 6051 ``` The first change is to manually encode the entire last area and make a manual exception for the 240 excluded entries. This reduced the table from 1077 to 729 entries and gave the following benchmark results. ``` ----------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------- BM_ascii_escaped<char> 104777 ns 104776 ns 6550 BM_unicode_escaped<char> 96980 ns 96982 ns 7238 BM_cyrillic_escaped<char> 60254 ns 60251 ns 11670 BM_japanese_escaped<char> 44452 ns 44452 ns 15734 BM_emoji_escaped<char> 104557 ns 104551 ns 6685 BM_ascii_escaped<wchar_t> 107456 ns 107454 ns 6505 BM_unicode_escaped<wchar_t> 96219 ns 96216 ns 7301 BM_cyrillic_escaped<wchar_t> 56921 ns 56904 ns 12288 BM_japanese_escaped<wchar_t> 39530 ns 39529 ns 17492 BM_emoji_escaped<wchar_t> 108494 ns 108496 ns 6408 ``` An entry in the table can only contain 2048 code points. For larger ranges there are multiple entries split in chunks with a maximum size of 2048 entries. To encode the entire Unicode code point range 21 bits are required. The manual part starts at 0x323B0 this means all entries in the table fit in 18 bits. This allows to allocate 3 additional bits for the range. This allows entries to have 16384 elements. This range always avoids splitting the range in multiple chunks. This reduces the number of table elements from 729 to 711 and gives the following benchmark results. ``` ----------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------- BM_ascii_escaped<char> 104289 ns 104289 ns 6619 BM_unicode_escaped<char> 96682 ns 96681 ns 7215 BM_cyrillic_escaped<char> 59673 ns 59673 ns 11732 BM_japanese_escaped<char> 41983 ns 41982 ns 16646 BM_emoji_escaped<char> 104119 ns 104120 ns 6683 BM_ascii_escaped<wchar_t> 104503 ns 104505 ns 6693 BM_unicode_escaped<wchar_t> 93426 ns 93423 ns 7489 BM_cyrillic_escaped<wchar_t> 54858 ns 54859 ns 12742 BM_japanese_escaped<wchar_t> 36385 ns 36384 ns 19259 BM_emoji_escaped<wchar_t> 105608 ns 105610 ns 6592 ```
-
Chen Zheng authored
-
Piyou Chen authored
Currently, the vsetvli pass tracks the define instruction through `MRI->getVRegDef` due to the SSA form. This patch keeps the AVLReg DefMI within VSETVLInfo during construction. And replace `MRI->getVRegDef(AVLReg)` with `getAVLRegDefMI()`. This information is useful when vsetvli pass live in post-ra situation. The testcases don't change because the VReg always has a unique def in SSA.
-
Chuanqi Xu authored
Close https://github.com/llvm/llvm-project/issues/88400 For the reproducer: ``` //--- header.h namespace N { template<typename T> concept X = true; template<X T> class Y { public: template<X U> friend class Y; }; inline Y<int> x; } //--- bar.cppm module; export module bar; namespace N { // To make sure N::Y won't get elided. using N::x; } //--- foo.cc // expected-no-diagnostics import bar; void y() { N::Y<int> y{}; }; ``` it will crash. The root cause is that in `StoredDeclsList::replaceExternalDecls`, we will replace the existing declarations with external declarations. Then for the reproducer, the redecl chain for Y is like: ``` Y (Local) -> Y (Local, friend) -> Y (Imported) -> Y(Imported, friend) ``` Before the lookup, the stored lookup result is `Y(Local)` then we find `Y(Imported)`. And now we repalce `Y(Local)` with `Y(Imported)`. But `Y(Imported)` is not visible. So we tried to find if there is any redeclarations visible but we find `Y(Local, friend)`, then problem happens. The solution is try to avoid the replace to happen if the external declaration has lower visibility then we can always find the local declarations. This may help the lookup performance slightly. Also I found the implementation of `StoredDeclsList::replaceExternalDecls` is not efficiency. It has an `O(n*m)` complexities. But let's improve that in the future.
-
Zhijin Zeng authored
In RISC-V ISel, the instruction `czero.eqz a0, a0, a0` is meaningless. This patch does the following folds in ISel: ``` czero_eqz x, (setcc x, 0, ne) -> x czero_nez x, (setcc x, 0, eq) -> x ``` --------- Signed-off-by:Zhijin Zeng <zhijin.zeng@spacemit.com>
-
Pengcheng Wang authored
This PR includes: * vsadd.vv/vsaddu.vv * vaadd.vv/vaaddu.vv * vsmul.vv
-
Pengcheng Wang authored
So we can only mantain one place. Reviewers: preames, yetingk, topperc Reviewed By: topperc Pull Request: https://github.com/llvm/llvm-project/pull/90187
-
Pengcheng Wang authored
This may simplify the usage of tools like `opt`, `llc`, etc. Reviewers: michaelmaitland, 4vtomat, preames, asb Reviewed By: michaelmaitland, preames, 4vtomat Pull Request: https://github.com/llvm/llvm-project/pull/84877
-
Pengcheng Wang authored
We should remove the `experimental-` prefix when printing march string. We didn't meet this problem because there is no processor containing experimental extensions. Reviewers: fpetrogalli, asb, topperc Reviewed By: topperc, asb Pull Request: https://github.com/llvm/llvm-project/pull/90185
-
LLVM GN Syncbot authored
-
Congcong Cai authored
`llvm.trap` will be convert as unreachable which is terminator. Instruction after terminator will cause validation failed. This PR introduces a pass to clean instruction after terminator. Fixes: https://github.com/llvm/llvm-project/issues/68770 Reapply: #90207
-
Nathan Lanza authored
-
Tom Stellard authored
Set this in the cache file directly instead of via the test-release.sh script so that the release builds can be reproduced with just the cache file.
-
Owen Pan authored
-
Florian Hahn authored
Add test coverage for cost-model code-paths not covered by current unit tests in preparation for https://github.com/llvm/llvm-project/pull/67934.
-
Mehdi Amini authored
Reverts llvm/llvm-project#90207 LLD Bots are broken.
-
Piotr Zegar authored
Fix minor style problems in release notes.
-
Björn Svensson authored
C23 introduces the `nullptr` constant similar to C++11 which means that the checker `modernize-use-nullptr` can be used on C23 code as well. This PR enables the checker to be run on C23 and adds testcases. See N3042: https://open-std.org/JTC1/SC22/WG14/www/docs/n3042.htm
-
Matt Arsenault authored
These did not have proper floating point uses so weren't representative samples. The bitcast inserted by lowering could be absorbed by the load/store on the source/use.
-
- Apr 27, 2024
-
-
Congcong Cai authored
`llvm.trap` will be convert as `unreachable` which is terminator. Instruction after terminator will cause validation failed. This PR introduces a pass to clean instruction after terminator. Fixes: #68770.
-
XChy authored
Fixes #90286
-