- Feb 15, 2021
-
-
Marco Antognini authored
Fix dangling pointer to local variable and address some typos. Reviewed By: xur Differential Revision: https://reviews.llvm.org/D96487
-
Florian Hahn authored
This version of the patch includes a fix for the cfi failures. (undoes the revert commit 7db390cc) It also undoes reverts of follow-up patches that also needed reverting originally: * [LTO] Add option enable NewPM with LTOCodeGenerator. (undoes revert commit 0a17664b) * [LTOCodeGenerator] Use lto::Config for options (NFC)." (undoes revert commit b0a8e41c)
-
Sam McCall authored
Differential Revision: https://reviews.llvm.org/D96625
-
Tres Popp authored
-
LLVM GN Syncbot authored
-
Sam McCall authored
The goal is to allow the LSP bindings of features to be defined outside the ClangdLSPServer class, turning it into less of a monolith. Differential Revision: https://reviews.llvm.org/D96544
-
Alex Zinenko authored
Dialects themselves do not support repeated addition of interfaces with the same TypeID. However, in case of delayed registration, the registry may contain such an interface, or have the same interface registered several times due to, e.g., dependencies. Make sure we delayed registration does not attempt to add an interface with the same TypeID more than once. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96606
-
Deep Majumder authored
Changed DeclaratorDecl in comment to NamedDecl Reviewed By: vsavchenko Differential Revision: https://reviews.llvm.org/D95846
-
Deep Majumder authored
This commit fixes bug #48739. The bug was caused by the way static_casts on pointer-to-member caused the CXXBaseSpecifier list of a MemberToPointer to grow instead of shrink. The list is now grown by implicit casts and corresponding entries are removed by static_casts. No-op static_casts cause no effect. Reviewed By: vsavchenko Differential Revision: https://reviews.llvm.org/D95877
-
Arlo Siemsen authored
In the future Windows will enable Control-flow Enforcement Technology (CET aka shadow stacks). To protect the path where the context is updated during exception handling, the binary is required to enumerate valid unwind entrypoints in a dedicated section which is validated when the context is being set during exception handling. This change allows llvm to generate the section that contains the appropriate symbol references in the form expected by the msvc linker. This feature is enabled through a new module flag, ehcontguard, which was modelled on the cfguard flag. The change includes a test that when the module flag is enabled the section is correctly generated. The set of exception continuation information includes returns from exceptional control flow (catchret in llvm). In order to collect catchret we: 1) Includes an additional flag on machine basic blocks to indicate that the given block is the target of a catchret operation, 2) Introduces a new machine function pass to insert and collect symbols at the start of each block, and 3) Combines these targets with the other EHCont targets that were already being collected. Change originally authored by Daniel Frampton <dframpto@microsoft.com> For more details, see MSVC documentation for `/guard:ehcont` https://docs.microsoft.com/en-us/cpp/build/reference/guard-enable-eh-continuation-metadata Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D94835
-
Craig Topper authored
Maybe we should use GREVI directly for these rather than promoting and then shifting right.
-
Michael Kruse authored
Regenerate the C++ wrapper header from the current isl version's headers. The most notable change is that some dimension sizes are represented by an isl_size (instead of unsigned), which is a signed int. Additionally, some function may return -1 in case of an error which already had been fixed in the past. The C++ may no return -1 instead of UINT_MAX which caused the problems. Some types in Polly had been changed from unsigned to isl_size (that were not already auto) and some loops/comparision had to be changed to avoid unsigned/signed comparison warnings.
-
Wang, Pengfei authored
This is a follow up of D92940. We have successfully converted fadd/fmul _mm_reduce_* intrinsics to llvm.reduction + reassoc flag. We can do the same approach for fmin/fmax too, i.e. llvm.reduction + nnan flag. Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D93179
-
Carl Ritson authored
Add intrinsic which demotes all active lanes to helper lanes. This is used to implement demote to helper Vulkan extension. In practice demoting a lane to helper simply means removing it from the mask of live lanes used for WQM/WWM/Exact mode. Where the shader does not use WQM, demotes just become kills. Additionally add llvm.amdgcn.live.mask intrinsic to complement demote operations. In theory llvm.amdgcn.ps.live can be used to detect helper lanes; however, ps.live can be moved by LICM. The movement of ps.live cannot be remedied without changing its type signature and such a change would require ps.live users to update as well. Reviewed By: piotr Differential Revision: https://reviews.llvm.org/D94747
-
Michael Kruse authored
ScopDetection's DetectionContext holds AssertionVH for RequiredInvariantLoads. An assertion is thrown if the handle's value is erased and the ScopDetection is not yet invalidated. The ScopDetection must remain valid durting the ScopPassManager. Enusure that all Scop analyses are free'd when the ScopPass manager is done. If IR generation has happened, also invalidate all other passes to avoid possible issues because, like for the legacy pass manager, Polly does not yet perfectly preserve them.
-
Cassie Jones authored
The implementation for vectors is broken and doesn't seem to be used by anything. Explicitly remove support for them, they can be added again later when they're properly implemented. Reviewed By: aemerson Differential Revision: https://reviews.llvm.org/D95699
-
Cassie Jones authored
Reviewed By: aemerson Differential Revision: https://reviews.llvm.org/D95426
-
Michał Górny authored
-
Tobias Gysi authored
The patch extends the runner utils by verification methods that compare two memrefs. The methods compare the content of the two memrefs and print success if the data is identical up to a small numerical error. The methods are meant to simplify the development of integration tests that compare the results against a reference implementation (cf. the updates to the linalg matmul integration tests). Originally landed in 5fa893cc (https://reviews.llvm.org/D96326) and reverted in dd719fda due to a Windows build failure. Changes: - Remove the max function that requires the "algorithm" header on Windows - Eliminate the truncation warning in the float specialization of verifyElem by using a float constant Reviewed By: Kayjukh Differential Revision: https://reviews.llvm.org/D96593
-
LLVM GN Syncbot authored
-
cynecx authored
Adds an *unaudited* SHA-256 implementation to `llvm/Support`. The ongoing lld-macho effort needs this to emit an adhoc code signature for macho files on macOS Big Sur. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96540
-
Björn Schäpers authored
This allows the define BasedOnStyle: InheritParentConfig and then clang-format looks into the parent directories for their .clang-format and takes that as a basis. Differential Revision: https://reviews.llvm.org/D93844
-
David Green authored
-
Florian Hahn authored
Re-using the matched variable in the pattern does not work as expected. This patch fixes that by introducing a new variable for the 2nd level match.
-
Nikita Popov authored
At this point, we can treat the case of GEP/GEP aliasing and GEP/non-GEP aliasing in essentially the same way. The only differences are that we need to do an additional negative GEP base check, and that we perform a bailout on unknown sizes for the GEP/non-GEP case (the latter exists only to limit compile-time). This change is not quite NFC due to the peculiar effect that the DecomposedGEP for V2 can actually be non-trivial even if V2 is not a GEP. The reason for this is that getUnderlyingObject() can look through LCSSA phi nodes, while stripPointerCasts() doesn't. This can lead to slightly better results if single-entry phi nodes occur inside a loop, where looking through the phi node via aliasPhi() would subject it to phi cycle equivalence restrictions. It would probably make sense to adjust pointer cast stripping (for AA) to handle this case, and ensure consistent results.
-
Nikita Popov authored
-
David Green authored
Also added a PhaseOrdering test, to make sure they are not broken by VectorCombine cost changes.
-
Tony Tye authored
Changes for AMD GPU SIMemoryLegalizer: - Limit the memory scope to maximum supported by the scratch, LDS and GDS address spaces. - Improve assertion checking. - Correct toSIAtomicScope argument name. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D96643
-
Kazu Hirata authored
-
David Green authored
-
Kazu Hirata authored
-
Kazu Hirata authored
Identified with llvm-header-guard.
-
Kazu Hirata authored
-
Nikita Popov authored
For two GEPs with identical offsets, we currently first perform a base address query without size information, and then if it is MayAlias, perform another with size information. This is pointless, as the latter query should produce strictly better results. This was not quite true historically due to the way that NoAlias assumptions were handled, but that issue has since been resolved.
-
Nikita Popov authored
We currently detect GEPs that have exactly the same indexes by comparing the Offsets and VarIndices. However, the latter implicitly performs equality comparisons between two values, which is not generally legal inside BasicAA, due to the possibility of comparisons across phi cycles. I believe that in this particular instance this actually ends up being unproblematic, at least I wasn't able to come up with any cases that could result in an incorrect root query result. In the interest of being defensive, compute GetIndexDifference earlier (which knows how to handle phi cycles properly) and use the result of that to determine whether the offsets are identical.
-
- Feb 14, 2021
-
-
Nicolas Vasilache authored
-
aqjune authored
This is a follow-up of D95238's LangRef update. This patch updates `programUndefinedIfUndefOrPoison(V)` to return true if `V` is used by any memory-accessing instruction. Interestingly, this affected many tests in Attributors, mainly about adding noundefs. The tests are updated using llvm/utils/update_test_checks.py. I checked that the diffs are about updating noundefs. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D96642
-
Stephen Kelly authored
-
Sanjay Patel authored
This is unusual in the general (non-reciprocal) case because we need an extra instruction, but that should be better for general FP reassociation and codegen. We conservatively check for "arcp" FMF here as we do with existing fdiv folds, but it is not strictly necessary to have that. This is part of solving: https://llvm.org/PR49147 (The powi variant potentially has a different constraint.) Differential Revision: https://reviews.llvm.org/D96648
-
Juneyoung Lee authored
-