- Dec 24, 2021
-
-
Nikita Popov authored
At this point the instruction may either have an analyzable write or be a terminator. For terminators, isRemovable() is not necessarily well-defined. Move the check until after we have ensured that it is not a terminator.
-
Nikita Popov authored
The only non-trivial change here is that the isReadClobber() check for redundant stores is now on the DefLoc, not the UpperLoc. This is semantically the right location to use, though in practice it makes no difference (the locations are either the same, or the def inst does not read).
-
Fangrui Song authored
-
Nikita Popov authored
We have Value->stripInBoundsConstantOffsets() which does what we want here, but the inbounds requirement isn't actually necessary. We should probably add Value->stripConstantOffsets() as well.
-
Nikita Popov authored
Remove the special casing for intrinsics in MemoryLocation::getForDest() and handle them through the general attribute based code. On the DSE side, this means that isRemovable() now needs to handle more than a hardcoded list of intrinsics. We consider everything apart from volatile memory intrinsics and lifetime markers to be removable. This allows us to perform DSE on intrinsics that DSE has not been specially taught about, using a matrix store as an example here. There is an interesting test change for invariant.start, but I believe that optimization is correct. It only looks a bit odd because the code is immediate UB anyway. Differential Revision: https://reviews.llvm.org/D116210
-
Nikita Popov authored
78d15a11 has been reverted, but the test not deleted, so it is failing now.
-
Nikita Popov authored
Instead of using the ArgumentPromotion implementation, we now walk call sites using checkForAllCallSites() and directly call areTypesABICompatible() using the replacement types. I believe that resolves the TODO in the code. Differential Revision: https://reviews.llvm.org/D116033
-
Nikita Popov authored
The reduction initialization code creates a "naturally aligned null pointer to void lvalue", which I found somewhat odd, even though it works out in the end because it is not actually used. It doesn't look like this code actually needs an LValue for anything though, and we can use an invalid Address to represent this case instead. Differential Revision: https://reviews.llvm.org/D116214
-
Fangrui Song authored
Avoid repeated load of global pointer (symtab) / members (sections.size(), firstGlobal) in the hot paths. And remove some unneeded this->
-
Chuanqi Xu authored
According to [dcl.fct.def.coroutine]p6, the promise_type is allowed to not define return_void nor return_value: > If searches for the names return_void and return_value in the scope > of the promise type each find any declarations, the program is > ill-formed. > [Note 1: If return_void is found, flowing off the end of a coroutine is > equivalent to a co_return with no operand. Otherwise, flowing off the > end of a coroutine results in > undefined behavior ([stmt.return.coroutine]). — end note] So the program isn't ill-formed if the promise_type doesn't define return_void nor return_value. It is just a potential UB. So the program should be allowed to compile. Reviewed By: urnathan Differential Revision: https://reviews.llvm.org/D116204
-
Jim Lin authored
Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D116087
-
David Blaikie authored
Causes invalid debug_gnu_pubnames (& I think non-gnu pubnames too) - visible as 0 values for the offset in gnu pubnames. More details on the original review in D115325. This reverts commit 78d15a11. This reverts commit 54586582.
-
Chuanqi Xu authored
The comments for coroutine in clang wrote for coroutine-TS. Now coroutine is merged into standard. Try to conform the comments.
-
Fangrui Song authored
-
Shilei Tian authored
-
Craig Topper authored
The 'r' constraint uses the GPR class. There is generic support for bitcasting and extending/truncating non-integer VTs to the required integer VT. This doesn't work for scalable vectors and instead crashes. To prevent this, explicitly reject vectors. Fixed vectors might work without crashing, but it doesn't seem worthwhile to allow. While there remove an unnecessary level of indentation in the "vr" and "vm" constraint handling. Differential Revision: https://reviews.llvm.org/D115810
-
Fangrui Song authored
-
Mogball authored
Querying threads directly from the thread pool fails if there is no thread pool or if multithreading is not enabled. Returns 1 by default. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D116259
-
Fangrui Song authored
-
Stella Laurenzo authored
The computed number of hardware threads can change over the life of the process based on affinity changes. Since we need a data structure that is at least as large as the maximum parallelism, it is important to use the value that was actually latched for the thread pool we will be dispatching work to. Also adds an assert specifically for if it doesn't line up (I was getting a crash on an index into the vector). Differential Revision: https://reviews.llvm.org/D116257
-
Nico Weber authored
-
Fangrui Song authored
The generated assembly for Symbol::insert is much shorter (std::vector resize is inefficient) and enables some inlining.
-
Kirill Stoimenov authored
This will allow linking in the callbacks directly instead of using PLT. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D116182
-
Mehdi Amini authored
This reverts commit 313de31f. There is a missing CMake dependency, building with shared libraries is broken: 55.509 [45/4/3061] Linking CXX shared library lib/libMLIRTosaToLinalg.so.14git FAILED: lib/libMLIRTosaToLinalg.so.14git ... TosaToLinalgPass.cpp: undefined reference to `mlir::createCanonicalizerPass()'
-
Jason Molenda authored
Support three new keys in the qProcessInfo response from the remote gdb stub to handle the case of attaching to a core running some type of standalone/firmware code and the stub knows the UUID and load address-or-slide for the binary. There will be no proper DynamicLoader plugin in this scenario, but we can try to locate and load the binary into lldb at the correct offset. Differential Revision: https://reviews.llvm.org/D116211 rdar://75191077
-
Siva Chandra Reddy authored
-
Krzysztof Parzyszek authored
Generalize warning/error messages (for reuse), refactor flag verification code, rewrite HVX flag driver testcase.
-
Fangrui Song authored
Pointed out by thakis
-
Nico Weber authored
-
Kristina Bessonova authored
Revert "[DwarfDebug] Support emitting function-local declaration for a lexical block" & dependent patches Try to revert D113741 once again. This also reverts 0ac75e82 (D114705) as it causes LLDB's lldb-api.lang/cpp/nsimport.TestCppNsImport.py test failure w/o D113741. This reverts commit f9607d45. Differential Revision: https://reviews.llvm.org/D116225
-
Vitaly Buka authored
Reviewed By: browneee Differential Revision: https://reviews.llvm.org/D116202
-
Florian Hahn authored
The recursive implementation can run into stack overflows, e.g. like in PR52844. The order the users are visited changes, but for the current use case this only impacts the order error messages are emitted.
-
Nico Weber authored
-
Victor Perez authored
For fixed and scalable vectors, each intrinsic x is lowered to vmx.mm, dropping the mask, which is safe to do as masked-off elements are undef anyway. Differential Revision: https://reviews.llvm.org/D115339
-
Rob Suderman authored
Linalg named ops lowering are moved to a separate pass. This allows TOSA canonicalizers to run between named-ops lowerings and the general TOSA lowerings. This allows the TOSA canonicalizers to run between lowerings. Reviewed By: NatashaKnk Differential Revision: https://reviews.llvm.org/D116057
-
Michael Kruse authored
A prevectorized loop may contain multiple statements, in which case isl_schedule_node_band_sink will sink the vector band to multiple leaves. Instead of statically assuming a specific tree structure after sinking, add a SIMD marker to all inner bands. Fixes llvm.org/PR52637
-
Arthur O'Dwyer authored
Largely split out of D116199 to keep that PR smaller.
-
Arthur O'Dwyer authored
As suggested in D115312.
-
Arthur O'Dwyer authored
It was missing the cast to `bool` in `bool(__t.empty())`. It was wrongly using `std::forward` in some places. Differential Revision: https://reviews.llvm.org/D115312
-
Arthur O'Dwyer authored
Differential Revision: https://reviews.llvm.org/D116198
-