- Oct 30, 2020
-
-
Evgeniy Brevnov authored
Currently isOverwrite returns OW_MaybePartial even for accesss known not to overlap. This is not a big problem for legacy implementation (since isPartialOverwrite follows isOverwrite and clarifies the result). Contrary SSA based version does a lot of work to later find out that accesses don't overlap. Besides negative impact on compile time we quickly reach MemorySSAPartialStoreLimit and miss optimization opportunities. Note: In fact, I think it would be cleaner implementation if isOverwrite returned fully clarified result in the first place whithout need to call isPartialOverwrite. This can be done as a follow up. What do you think? Reviewed By: fhahn, asbirlea Differential Revision: https://reviews.llvm.org/D90371
-
Simon Pilgrim authored
As suggested on D90445, add tests for various SSE/AVX levels and more complex gep pointer offsets
-
Simon Pilgrim authored
Fix clang static analyzer warnings - we're better off relying on cast<> asserting on failure rather than a null dereference crash.
-
Simon Moll authored
Split up the monolithic VETargetLowering ctor into three initialization phases: 1. initRegisterClasses() 2. initSPUActions() 3. // TODO initVPUActions() Reviewed By: kaz7 Differential Revision: https://reviews.llvm.org/D90463
-
Matt Arsenault authored
-
Cullen Rhodes authored
This patch adds tests and support for operations on SVE vectors created by the 'arm_sve_vector_bits' attribute, described by the Arm C Language Extensions (ACLE, version 00bet6, section 3.7.3.3) for SVE [1]. This covers the following: * VLSTs support the same forms of element-wise initialization as GNU vectors. * VLSTs support the same built-in C and C++ operators as GNU vectors. * Conditional and binary expressions containing GNU and SVE vectors (fixed or sizeless) are invalid since the ambiguity around the result type affects the ABI. No functional changes were required to support vector initialization and operators. The functional changes are to address unsupported conditional and binary expressions. [1] https://developer.arm.com/documentation/100987/latest Reviewed By: fpetrogalli Differential Revision: https://reviews.llvm.org/D88233
-
Mehdi Amini authored
This reverts commit 316593ce. Build is broken with: TestModuleCombiner.cpp:(.text._ZN12_GLOBAL__N_122TestModuleCombinerPass14runOnOperationEv+0x195): undefined reference to `mlir::spirv::combine(llvm::MutableArrayRef<mlir::spirv::ModuleOp>, mlir::OpBuilder&, llvm::function_ref<void (mlir::spirv::ModuleOp, llvm::StringRef, llvm::StringRef)>)'
-
David Green authored
-
Florian Hahn authored
As per the comment in VPRecipeBase, clients should not rely on getVPRecipeID, as it may change in the future. It should only be used in classof implementations. Use isa instead in getFirstNonPhi.
-
Simon Pilgrim authored
By reducing the scope of the dyn_cast<PointerType> we can make this a cast<PointerType> and avoid clang static analyzer null deference warnings.
-
Frederik Gossen authored
Differential Revision: https://reviews.llvm.org/D90449
-
serge-sans-paille authored
lit is bundled independently from LLVM in at least one location (https://pypi.org/project/lit/), it's easier to state its license locally. Differential Revision: https://reviews.llvm.org/D90136
-
serge-sans-paille authored
- Perform the probing in the correct direction. Related to https://github.com/rust-lang/rust/pull/77885#issuecomment-711062924 - The first touch on a dynamic alloca cannot use a mov because it clobbers existing space. Use a xor 0 instead Differential Revision: https://reviews.llvm.org/D90216
-
Simon Pilgrim authored
Fix clang static analyzer warning - we know that the arg should be ConstantInt and we're better off relying on cast<> asserting on failure rather than a null dereference crash.
-
Simon Pilgrim authored
Fixes cppcheck warning.
-
Melanie Blower authored
[clang] add fexperimental-strict-floating-point to test cases that fail on arm and aarch not sure this will work due to commit rG13bfd89c
-
Pavel Labath authored
SymbolFileDWARF::GetTypes was not handling dwo correctly. The fix is simple -- adding a GetNonSkeletonUnit call -- but I've snuck in a small refactor as well.
-
Marco Antognini authored
Revert values in CXCursorKind as they were before CXCursor_CXXAddrspaceCastExpr was introduced in a6a237f2 ([OpenCL] Added addrspace_cast operator in C++ mode., 2020-05-18). Insert CXCursor_CXXAddrspaceCastExpr after the last expression in CXCursorKind using the next available value. Reviewed By: akyrtzi, svenvh Differential Revision: https://reviews.llvm.org/D90385
-
Roman Lebedev authored
This is functionally-identical to the previous implementation, just using a generic interface to do that instead of hand-rolled one, with caching as a bonus. Thought the sinking is still recursive.. Note that SCEVRewriteVisitor<>'s default implementations don't preserve NoWrap flags on Add/Mul (but does on AddRec!), but here we know we can preserve them, so `visitAddExpr()`/`visitMulExpr()` are specialized.
-
Florian Hahn authored
On some targets, like AArch64, vector selects can be efficiently lowered if the vector condition is a compare with a supported predicate. This patch adds a new argument to getCmpSelInstrCost, to indicate the predicate of the feeding select condition. Note that it is not sufficient to use the context instruction when querying the cost of a vector select starting from a scalar one, because the condition of the vector select could be composed of compares with different predicates. This change greatly improves modeling the costs of certain compare/select patterns on AArch64. I am also planning on putting up patches to make use of the new argument in SLPVectorizer & LV. Reviewed By: dmgreen, RKSimon Differential Revision: https://reviews.llvm.org/D90070
-
Erich Keane authored
As mentioned in the defect, the lambda static invoker does not follow the calling convention of the lambda itself, which seems wrong. This patch ensures that the calling convention of operator() is passed onto the invoker and conversion-operator type. This is accomplished by extracting the calling-convention determination code out into a separate function in order to better reflect the 'thiscall' work, as well as somewhat better support the future implementation of https://devblogs.microsoft.com/oldnewthing/20150220-00/?p=44623 For any target (basically just win32) that has a different free and static function calling convention, this generates BOTH alternatives. This required some work to get the Windows mangler to work correctly for this, as well as some tie-breaking for the unary operators. Differential Revision: https://reviews.llvm.org/D89559
-
ergawy authored
This commit adds a new library that merges/combines a number of spv modules into a combined one. The library has a single entry point: combine(...). To combine a number of MLIR spv modules, we move all the module-level ops from all the input modules into one big combined module. To that end, the combination process can proceed in 2 phases: (1) resolving conflicts between pairs of ops from different modules (2) deduplicate equivalent ops/sub-ops in the merged module. (TODO) This patch implements only the first phase. Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D90022
-
David Sherwood authored
We don't currently support passing unnamed variadic SVE arguments so I've added a fatal error if we hit such cases to prevent any silent ABI issues in future. Differential Revision: https://reviews.llvm.org/D90230
-
David Green authored
This adds ISel matching for a form of VQDMULH. There are several ir patterns that we could match to that instruction, this one is for: min(ashr(mul(sext(a), sext(b)), 7), 127) Which is what llvm will optimize to once it has removed the max that usually makes up the min/max saturate pattern, as in this case the compare will always be false. The additional complication to match i32 patterns (which extend into an i64) is that the min will be a vselect/setcc, as vmin is not supported for i64 vectors. Tablegen patterns have also been updated to attempt to reuse the MVE_TwoOpPattern patterns. Differential Revision: https://reviews.llvm.org/D90096
-
Pavel Labath authored
Debug server is already launched by prep_debug_monitor_and_inferior. The second seems to have been benign so far, but after 8cc49bec this test started failing frequently on GreenDragon, and this is the only unusual thing about it.
-
Pavel Labath authored
The class only supports a single DWARF unit (needed for my new test), and it reimplements chunks of object and symbol file classes. We can just make it use the real thing, save some LOC and get the full feature set. Differential Revision: https://reviews.llvm.org/D90393
-
Louis Dionne authored
This will allow adding bare compiler flags through the new configuration DSL. Previously, this would have required adding a Lit feature for each such flag. Differential Revision: https://reviews.llvm.org/D90429
-
Georgii Rymar authored
`Link` is not an optional field currently. Because of this it is not convenient to write macros. This makes it optional and fixes corresponding test cases. Differential revision: https://reviews.llvm.org/D90390
-
Melanie Blower authored
Reviewers: sepavloff, kpn, aaron.ballman Differential Revision: https://reviews.llvm.org/D90316
-
Eugene Zhulenev authored
Add support for lowering `async.execute` operations with token dependencies Example: ``` %dep = ... : !async.token %token = async.execute[%dep] { ... } ``` Token dependencies lowered to `async.await` operations inside the outline coroutine body. Reviewed By: herhut, mehdi_amini, ftynse Differential Revision: https://reviews.llvm.org/D89958 -
Stephen Kelly authored
Summary: Skip over elidable nodes, and ensure that intermediate CXXFunctionalCastExpr nodes are also skipped if they are semantic. Reviewers: klimek, ymandel Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D82278
-
David Truby authored
When compiling for Windows on Arm the amd64 debug interfce from the Visual Studio SDK is used as the cmake currently only distinguishes between x86 and amd64 by checking the pointer size. Instead we can get the target architecture for the compilier and check that to distinguish between architectures.
-
Simon Pilgrim authored
This reverts commit 22c38376. This is causing a build failure with MSVC - reported on D90322
-
Andrzej Warzynski authored
Some changes introduced in https://reviews.llvm.org/D88655 cause compiler warnings. Since in Flang warnings are treated as errors (`-Werror` is on by default), these are in practice compiler errors (verified with clang-10 and clang-11, gcc-10). This patches fixes these warning/failures. Warning/error 1: ``` llvm-project/flang/lib/Semantics/check-omp-structure.cpp:107:3: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough] ``` Warning/error 2: ``` llvm-project/flang/lib/Semantics/check-directive-structure.h:39:9: error: field 'currentDirective_' will be initialized after field 'upperCaseDirName_' [-Werror,-Wreorder-ctor] ``` Failing buildbot: * http://lab.llvm.org:8011/#/builders/33/builds/386
-
alex-t authored
[AMDGPU] SILowerControlFlow::removeMBBifRedundant. Refactoring plus fix for the null MBB pointer in MF->splice Detailed description: This change addresses the refactoring adviced by foad. It also contain the fix for the case when getNextNode is null if the successor block is the last in MachineFunction. Reviewed By: foad Differential Revision: https://reviews.llvm.org/D90314
-
Simon Pilgrim authored
MSVC builds were failing because the constexpr wasn't couldn't be captured by the lamdba. Fix an implicit double to float truncation warning as well.
-
Simon Pilgrim authored
Fixes clang-tidy warnings.
-
Nathan James authored
-
Max Kazantsev authored
-
David Green authored
-