- Mar 25, 2023
-
-
Mikhail R. Gadelha authored
This patch implements setjmp and longjmp in riscv using inline asm. The following changes were required: * Omit frame pointer: otherwise gcc won't allow us to use s0 * Use __attribute__((naked)): otherwise both gcc and clang will generate function prologue and epilogue in both functions. This doesn't happen in x86_64, so we guard it to only riscv Furthermore, using __attribute__((naked)) causes two problems: we can't use `return 0` (both gcc and clang) and the function arguments in the function body (clang only), so we had to use a0 and a1 directly. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D145584
-
Florian Hahn authored
The logic in ConstraintElimination should trivially apply to GEP constant expressions as well, so update code to deal with GEPOperator instead.
-
Denis Revunov authored
When computing symbol hashes in BinarySection::hash, we try to find relocations in the section which reference the passed BinaryData. We do so by doing lower_bound on data begin offset and upper_bound on data end offset. Since offsets are relative to the current section, if it is a data from the previous section, we get underflow when computing offset and lower_bound returns Relocations.end(). If this data also ends where current section begins, upper_bound on zero offset will return some valid iterator if we have any relocations after the first byte. Then we'll try to iterate from lower_bound to upper_bound, since they're not equal, which in that case means we'll dereference Relocations.end(), increment it, and try to do so until we reach the second valid iterator. Of course we reach segfault earlier. In this patch we stop BOLT from searching relocations for symbols outside of the current section. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D146620
-
Jonas Paulsson authored
Support bitcasting between int/fp/vector values and 'r'/'f'/'v' inline assembly operands. This is intended to match GCCs beahvior. Reviewed By: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D146059
-
Felipe de Azevedo Piovezan authored
This reverts commit 72073fc9.
-
Paul Kirth authored
This is still breaking on some platforms. The underlying implementation doesn't seem to be the cause, rather the test is not robust across platforms. So, we'll just disable this for the time being, to unblock builds until we have a proper fix. Reviewed By: abhina.sreeskantharajan Differential Revision: https://reviews.llvm.org/D146834
-
Doru Bercea authored
Review: https://reviews.llvm.org/D145831
-
Julian Lettner authored
* Avoid unnecessary frame & tag push/pops if memory access is ignored * Rename function and add comment to make it clearer what the code does * Make helper functions static and move inside `#if !SANITIZER_GO` Differential Revision: https://reviews.llvm.org/D146670
-
David Green authored
Without this the function will be use an Arm subtarget, meaning the instructions in it will be invalid for the current subtarget. Differential Revision: https://reviews.llvm.org/D144733
-
Min-Yih Hsu authored
Put the value into A0 instead of data registers. And remove the redundant `RetCC_M68kCommon` as there aren't many rules shared between existing CCs other than the pointer one. This change is tested by existing tests.
-
Alex Langford authored
I accidentally broke the FreeBSD lldb-server build in 0c5cee77 because it now depends on PlatformFreeBSD. PlatformFreeBSD depends on PlatformPOSIX but this dependency was not explicitly tracked in CMake. As a result, the FreeBSD lldb-server build broke. Credit to John F. Carr <jfc@mit.edu> for pointing out the issue and providing a fix.
-
-
Artem Belevich authored
It turns out, 4GB+ large arrays are a thing and a 32-bit integer is just not enough to handle them. Differential Revision: https://reviews.llvm.org/D146767
-
Luke Lau authored
Selects get lowered to a vmerge with a mask, and insertsubvectors get lowered to a vslideup. Differential Revision: https://reviews.llvm.org/D146747
-
Luke Lau authored
They are functionally equivalent but currently one fails to vectorize because the cost of an insert subvector shuffle is too expensive. D146747 will update the cost of these types of shuffles, so add a test case for it.
-
Luke Lau authored
Horizontal reduction can still kick in even when the max VF is set to 0, but strange stuff can happen as it affects the cost model. Enable it for these tests as eventually the goal will be to have SLP enabled.
-
Luke Lau authored
These map to SK_InsertSubvector and SK_Select shuffle kinds
-
Luke Lau authored
Since they no longer involve a merge
-
Luke Lau authored
A shuffle with an insert subvector mask is functionally equivalent to: (insert_subvector v0, (extract_subvector v1, len), index) We can emulate by doing a vslideup on v1 into the right index, and carefully selecting VL so that we don't overwrite any more destination elements than what we have to. This avoids the need for a select with a mask.
-
Sergio Afonso authored
This patch adds support for producing MLIR files when using -save-temps on flang. One MLIR file will be produced before lowering and optimization passes, containing the operations produced by the PFT-to-MLIR lowering bridge, and another at the end of the process, just before LLVM IR generation. This is accomplished by forwarding the -save-temps flag from the driver to the frontend, and modifying it to output MLIR files accordingly. Differential Revision: https://reviews.llvm.org/D146075
-
Chia-hung Duan authored
Tracking the pushed bytes between to releaseToOSMaybe calls may lead to a overestimated case that if we do malloc 2KB -> free 2KB -> malloc 2KB -> free 2KB, we may think we have released 4KB but it only releases 2KB actually. Switch to use bytes-in-freelist excludes more cases that can't release the pages Reviewed By: cferris Differential Revision: https://reviews.llvm.org/D146400
-
yijia1212 authored
Remove unused header file in VectorTransformOps.h Differential Revision: https://reviews.llvm.org/D146825
-
Kazu Hirata authored
This patch fixes: clang/lib/Driver/ToolChains/OHOS.cpp:410:18: warning: unused variable ‘A’ [-Wunused-variable] clang-tools-extra/clangd/refactor/tweaks/AddUsing.cpp:293:15: warning: unused variable ‘II’ [-Wunused-variable] llvm/lib/ProfileData/RawMemProfReader.cpp:364:68: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
-
Doru Bercea authored
Patch: https://reviews.llvm.org/D146812
-
Paul Kirth authored
NaN and Inf are still causing some problems in a formatting test. This patch makes the checked format string exactly match the internal JSON format string. If there are still problems, we should disable testing Inf and NaN values until we can come to a portable solution. Reviewed By: abhina.sreeskantharajan Differential Revision: https://reviews.llvm.org/D146818
-
Tomas Matheson authored
As described in a comment on D140637, PluginInlineOrderTest.NoInlineFoo will fail with: InlineOrderPlugin.so: undefined symbol: _ZN4llvm13AllAnalysesOnINS_6ModuleEE6SetKeyE The symbol is unique in libLLVMCore and ends up local in AnalysisTests. Fix this by exporting all unique symbols found in libraries. AnalysisTests.symbols change in line count: 12464 -> 12499 Differential Revision: https://reviews.llvm.org/D146731
-
- Mar 24, 2023
-
-
Quinn Dawkins authored
Differential Revision: https://reviews.llvm.org/D146816
-
Augie Fackler authored
-
Mariusz Sikora authored
Differential Revision: https://reviews.llvm.org/D146808
-
Nikita Popov authored
Nowadays MSSA is required for LICM/LoopSink, so drop the checks for whether its available or not.
-
Alvin Wong authored
When `llvm-symbolizer.exe` is on the PATH in an entry containing two consecutive backslashes, sanitizers will try to launch llvm-symbolizer with its absolute path containing these consecutive backslashes. This fails a sanity check in `sanitizer_symbolizer_win.cpp`. According to the documentation of `CommandLineToArgvW` [1] and a MS blog post [2], backslashes in general, regardless of how many of them in a row, do not have any special effect, unless when immediately followed by a double quote. There already exists a check that fails when the command line arguments contains double quote, therefore the check for double backslashes can simply be removed. [1]: https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw [2]: https://learn.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way Differential Revision: https://reviews.llvm.org/D146621
-
Xiaodong Liu authored
Fix the lld link error on ppc64le builders: ``` ld.lld: error: undefined symbol: llvm::createLoopDataPrefetchPass() >>> referenced by LoongArchTargetMachine.cpp >>> lib/Target/LoongArch/CMakeFiles/LLVMLoongArchCodeGen.dir/LoongArchTargetMachine.cpp.o:((anonymous namespace)::LoongArchPassConfig::addIRPasses()) collect2: error: ld returned 1 exit status` ``` Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D146806
-
Nemanja Ivanovic authored
This DAG combine is correct on little endian targets but is incorrect on big endian targets. Add big endian code to correct it. Differential revision: https://reviews.llvm.org/D146460
-
Joseph Huber authored
Summary: These stored previously used `RELEASE`. This was done originally to ensure that the stores to the shared memory buffer were flushed prior to signaling that the other side can begin accessing it. However, this should be accomplished by the memory fence above the store. This change is required because NVPTX does not support non-relaxed atomics used on unified shared memory.
-
Sander de Smalen authored
[AArch64][SME] SelectSMETileSlice should also match to 'reg+0' when slice is ADD with non-constant RHS. It would decompose an address into a `reg + 0` when the slice was not an ADD, but when the RHS of the ADD was not a constant, it would simply not match. This patch fixes that, by always resolving to a `reg + 0` slice.
-
Vlad Serebrennikov authored
Extend `#pragma clang __debug dump` to support not only single identifier, but an expression as well. This makes it possible to test ADL and overload resolution directly, without being creative to make them observable via diagnostics (e.g. when [[ http://eel.is/c++draft/over.match.best | over.match.best ]] is involved). This implementation has a known limitation of not supporting dependent expressions properly, but it's quite useful even without such support. Differential Revision: https://reviews.llvm.org/D144115
-
Nikita Popov authored
-
Dmitry Makogon authored
-
Dmitry Makogon authored
Currently it fails as LSR doesn't preserve LCSSA in some cases.
-
Nicolas Vasilache authored
This revision adds vector transform operations that allow us to better inspect the composition of various lowerings that were previously very opaque. This commit is NFC in that it does not change patterns beyond adding `rewriter.notifyFailure` messages and it does not change the tests beyond breaking them into pieces and using transforms instead of throwaway opaque test passes. Reviewed By: ftynse, springerm Co-authored-by:
Alex Zinenko <zinenko@google.com> Differential Revision: https://reviews.llvm.org/D146755
-