- Jul 18, 2021
-
-
Deep Majumder authored
This patch handles the `std::swap` function specialization for `std::unique_ptr`. Implemented to be very similar to how `swap` method is handled Differential Revision: https://reviews.llvm.org/D104300
-
Craig Topper authored
Add a small power 2 srem test to match existing sdiv test. Add larger power of 2 test to both. The larger constant test shows materialization of a constant for an AND in the RV64 code. We should be using W shift instructions to match the RV32 code.
-
David Blaikie authored
DebugInfo: Name class templates with default arguments consistently (both direct naming, and as a template argument for a function template) It's noteworthy that GCC has the same bug here, which is a bit surprising. Both Clang and GCC's bug is only for function template arguments that are themselves templates with default template arguments (f1<t1<int[, missing_default_here]>>). Probably because function name matching isn't generally necessary - whereas type matching is necessary for DWARF consumers to associate declarations and definitions across translation units, so the bug's been addressed there already - but continued to exist for function templates since it's fairly benign there. I came across this while working on a change that could reconstitute these pretty printed names based on the rest of the DWARF, reducing the size of the DWARF by not having to encode all the template parameters in the name string. That reconstitution code can't tell the difference between a defaulted argument or not, so couldn't create the current buggy-ish output. Making the names more consistent between direct and indirect references, and between function and class templates seems all to the good. (I fixed the function template version of this a few years back in 9fdd09a4 - clearly I should've looked more closely and generalized the code better so it only had to be fixed once - well, doing that here now)
-
Amara Emerson authored
llvm::KnownBits::byteSwap() and reverse() don't modify in-place, so we weren't actually computing anything. This was causing a miscompile on an arm64 stage2 bootstrap clang build.
-
David Carlier authored
-
Jon Roelofs authored
Differential revision: https://reviews.llvm.org/D105935
-
Nikita Popov authored
Fix bug introduced in 2c68eccc, the GEP type was off-by-ptr. Apparently I didn't run the MLIR tests.
-
David Green authored
Corollary to 1113e068 this allows us to match gather that dont produce a full vector width results. They use an extended gather which is truncated back to the original type.
-
Eli Friedman authored
Rewrite patterns to assume that the operand of STEP_VECTOR is a constant. The old patterns will stop working when the operand is changed from a Constant to a TargetConstant. (See D105673.) Add test coverage for certain patterns that weren't exercised by existing regression tests. Differential Revision: https://reviews.llvm.org/D105847
-
Nikita Popov authored
This API is incompatible with opaque pointers and deprecated in favor of the version that accepts an explicit element type. Also remove the separate overload for a single index, as this is already covered by the ArrayRef overload.
-
Nikita Popov authored
Remove uses of to-be-deprecated API. In cases where the correct element type was not immediately obvious to me, fall back to explicit getPointerElementType().
-
Nikita Popov authored
This API is incompatible with opaque pointers and deprecated in favor of the version that accepts an explicit element type.
-
Nikita Popov authored
Remove uses of to-be-deprecated API. Unfortunately this one mostly just makes the use of getPointerElementType() explicit, as the correct type to use wasn't immediately available (deriving it from QualType is left as an excercise to the reader).
-
Craig Topper authored
-
Vy Nguyen authored
Background: https://reviews.llvm.org/D82490#inline-1007741 Differential Revision: https://reviews.llvm.org/D106092
-
Jez Ng authored
ICF previously operated only within a given OutputSection. We would merge all CFStrings first, then merge all regular code sections in a second phase. This worked fine since CFStrings would never reference regular `__text` sections. However, I would like to expand ICF to merge functions that reference unwind info. Unwind info references the LSDA section, which can in turn reference the `__text` section, so we cannot perform ICF in phases. In order to have ICF operate on InputSections spanning multiple OutputSections, we need a way to distinguish InputSections that are destined for different OutputSections, so that we don't fold across section boundaries. We achieve this by creating OutputSections early, and setting `InputSection::parent` to point to them. This is what LLD-ELF does. (This change should also make it easier to implement the `section$start$` symbols.) This diff also folds InputSections w/o checking their flags, which I think is the right behavior -- if they are destined for the same OutputSection, they will have the same flags in the output (even if their input flags differ). I.e. the `parent` pointer check subsumes the `flags` check. In practice this has nearly no effect (ICF did not become any more effective on chromium_framework). I've also updated ICF.cpp's block comment to better reflect its current status. Reviewed By: #lld-macho, smeenai Differential Revision: https://reviews.llvm.org/D105641
-
Christopher Di Bella authored
Differential Revision: https://reviews.llvm.org/D106207
-
Shilei Tian authored
This patch fixed two issues found when folding `__kmpc_is_spmd_exec_mode`: 1. When the reaching kernels are empty, it should not fold to generic mode. 2. When creating AA for the caller when updating information, the dependency should be required. Reviewed By: ye-luo Differential Revision: https://reviews.llvm.org/D106209
-
Nikita Popov authored
This API is incompatible with opaque pointers and deprecated in favor of the version that accepts an explicit element type.
-
Nikita Popov authored
Remove uses of to-be-deprecated API.
-
ShihPo Hung authored
Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D105685
-
Nikita Popov authored
This API is incompatible with opaque pointers and deprecated in favor of the version that accepts an explicit element type.
-
Nikita Popov authored
Remove uses of to-be-deprecated API. I've fallen back to calling getPointerElementType() in some cases where the correct type wasn't immediately obvious to me.
-
- Jul 17, 2021
-
-
Simon Pilgrim authored
At most these use the StringRef/Twine wrappers and don't have any implicit uses of std::string. Move the include down to any cpp implementation where std::string is actually used.
-
Nikita Popov authored
This API is incompatible with opaque pointers and deprecated in favor of the version that accepts an explicit element type.
-
Nikita Popov authored
Remove uses of to-be-deprecated API.
-
Nikita Popov authored
This API is incompatible with opaque pointers and deprecated in favor of the version that accepts an explicit element type.
-
Nikita Popov authored
Remove uses of to-be-deprecated API.
-
Nikita Popov authored
This API is incompatible with opaque pointers and deprecated in favor of the version that accepts an explicit element type.
-
Nikita Popov authored
Remove uses of to-be-deprecated API.
-
Nikita Popov authored
This API is incompatible with opaque pointers and deprecated in favor of the version that accepts an explicit element type.
-
Kazu Hirata authored
These functions seem to be unused for at least 5 years.
-
Nikita Popov authored
This is the same change as D105653, but for the constant expression version of the API.
-
Nikita Popov authored
Use the elementtype attribute introduced in D105407 for the llvm.preserve.array/struct.index intrinsics. It carries the element type of the GEP these intrinsics effectively encode. This patch: * Adds a verifier check that the attribute is required. * Adds it in the IRBuilder methods for these intrinsics. * Autoupgrades old bitcode without the attribute. * Updates the lowering code to use the attribute rather than the pointer element type. * Updates lots of tests to specify the attribute. * Adds -force-opaque-pointers to the intrinsic-array.ll test to demonstrate they work now. https://reviews.llvm.org/D106184
-
Craig Topper authored
We assume VLENB is a multiple of 8 and previously relied on shift pairs being optimized to an AND+SHL/SHR and computeKnownBits removing the AND. This doesn't happen if (vlenb >> 3) gets CSEd to have multiple uses. This patch manually emits the best shift to workaround this.
-
Martin Storsjö authored
Make synchronization.lib all lowercase name for mingw, where casing matters. This fixes building after 6d160abd7eba73031a2af500981f8ef44bd75ee4.
-
Giorgis Georgakoudis authored
Parallel regions are outlined as functions with capture variables explicitly generated as distinct parameters in the function's argument list. That complicates the fork_call interface in the OpenMP runtime: (1) the fork_call is variadic since there is a variable number of arguments to forward to the outlined function, (2) wrapping/unwrapping arguments happens in the OpenMP runtime, which is sub-optimal, has been a source of ABI bugs, and has a hardcoded limit (16) in the number of arguments, (3) forwarded arguments must cast to pointer types, which complicates debugging. This patch avoids those issues by aggregating captured arguments in a struct to pass to the fork_call. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D102107
-
Lang Hames authored
-
Matthias Springer authored
This simplifies the vector to LLVM lowering. Previously, both vector.load/store and vector.transfer_read/write lowered directly to LLVM. With this commit, there is a single path to LLVM vector load/store instructions and vector.transfer_read/write ops must first be lowered to vector.load/store ops. * Remove vector.transfer_read/write to LLVM lowering. * Allow non-unit memref strides on all but the most minor dimension for vector.load/store ops. * Add maxTransferRank option to populateVectorTransferLoweringPatterns. * vector.transfer_reads with changing element type can no longer be lowered to LLVM. (This functionality is needed only for SPIRV.) Differential Revision: https://reviews.llvm.org/D106118
-
Matthias Springer authored
* TransferReadToVectorLoadLowering no longer generates memref.load ops. * Add new pattern VectorLoadToMemrefLoadLowering that lowers scalar vector.loads to memref.loads. * Add vector::BroadcastOp canonicalization pattern that folds broadcast chains. Differential Revision: https://reviews.llvm.org/D106117
-