-
Notifications
You must be signed in to change notification settings - Fork 997
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tsan: support compare_exchange failure ordering #970
Labels
Comments
facebook-github-bot
pushed a commit
to facebook/folly
that referenced
this issue
Jun 28, 2019
Summary: google/sanitizers#970 Reviewed By: yfeldblum Differential Revision: D16037542 fbshipit-source-id: 8c2feb85454ae582498d38a474e8d5913c9438b1
facebook-github-bot
pushed a commit
to facebook/folly
that referenced
this issue
Sep 6, 2019
Summary: [Folly] Extract compare-exchange hack under TSAN to a common location and make its interface mimic `std::atomic_compare_exchange_strong_explicit`. Limit it to Clang TSAN (no knowledge of whether it applies to other implementations of TSAN), but extend it to handle all pairs of success and failure orders. The TSAN bug is described in google/sanitizers#970. High level, Clang TSAN ignores the explicit failure order and infers a failure order from the success order - which is broken if the explicit failure order is in the relevant sense stronger than the success order. Reviewed By: aary, nbronson Differential Revision: D16854217 fbshipit-source-id: 18f6458520bbd5f482e41c10d7229e6cfae1db2a
FTR another related discussion on the mailing list: |
I gave this a shot, lemme know if the patch makes sense: https://reviews.llvm.org/D99434 |
bcardosolopes
added a commit
to llvm/llvm-project
that referenced
this issue
May 13, 2021
LLVM has lifted strong requirements for CAS failure memory orders in 431e313 and 819e0d1. Add support for honoring them in `AtomicCAS`. google/sanitizers#970 Differential Revision: https://reviews.llvm.org/D99434
Implemented and landed upstream! |
Thanks! |
zoecarver
added a commit
to zoecarver/llvm-project
that referenced
this issue
May 24, 2021
commit 3103b231c0d97c679bf1fe0c1a0a9e758ec384ea Author: zoecarver <z.zoelec2@gmail.com> Date: Fri May 14 11:21:27 2021 -0700 Apply https://reviews.llvm.org/D102135. commit 001a979c24779332173f9c9e6fe475f7e7318ba2 Author: Christopher Di Bella <cjdb@google.com> Date: Fri May 14 11:19:55 2021 -0700 [libcxx][optional] adds missing constexpr operations Makes the following operations constexpr: * `std::swap(optional, optional)` * `optional(optional<U> const&)` * `optional(optional<U>&&)` * `~optional()` * `operator=(nullopt_t)` * `operator=(U&&)` * `operator=(optional<U> const&)` * `operator=(optional<U>&&)` * `emplace(Args&&...)` * `emplace(initializer_list<U>, Args&&...)` * `swap(optional&)` * `reset()` P2231 is currently marked as tentatively ready for plenary. [LWG recommends implementers retroactively apply to C++20][1]. This commit is a bit ahead of the committee, but it's necessary to conveniently implement _`semiregular-box`_ and _`non-propagating-cache`_, both of which are required for ranges (otherwise we'll need to reimplement `std::optional` with these members `constexpr`ified). If LEWG or plenary decide that P2231 shouldn't be adopted, then this commit will be rolled back, and a detail optional base will appear in its place. [1]: https://github.com/cplusplus/papers/issues/933 Differential Revision: https://reviews.llvm.org/D102119 commit fe319a8848f2343829925850a3969861d8d6a64c Author: zoecarver <z.zoelec2@gmail.com> Date: Thu May 13 11:48:43 2021 -0700 [libcxx][docs] Add two locks: transform_view and take_view. Assign myself both of these views. commit 3ac9ff5577f1d4b032a64aea1c46e95c8a5b8f68 Author: zoecarver <z.zoelec2@gmail.com> Date: Thu May 13 11:45:22 2021 -0700 [libcxx][docs] Update the One Ranges PRoposal Status with open revisions. 1. Moves the names into the names column. 2. Changes the names to reflect who's actually working on what. 3. Adds open revisions. commit 464e4dc50f4e6e058e12a7020385d5bf29fd1df6 Author: Aakanksha Patil <aakanksha555@gmail.com> Date: Thu May 13 14:21:40 2021 -0400 [AMDGPU] Add gfx1034 target Differential Revision: https://reviews.llvm.org/D102306 commit 5ad2eeeadaf15856332f66ed7c244d52a86b0be7 Author: Artem Dergachev <artem.dergachev@gmail.com> Date: Tue May 11 16:44:49 2021 -0700 [clang-tidy] bugprone-infinite-loop: React to ObjC ivars and messages. If the loop condition is a value of an instance variable, a property value, or a message result value, it's a good indication that the loop is not infinite and we have a really hard time proving the opposite so suppress the warning. Differential Revision: https://reviews.llvm.org/D102294 commit 46c6c08c9428a36bdf88f51b1a14164aa4cbb93e Author: Artem Dergachev <artem.dergachev@gmail.com> Date: Mon May 10 20:09:32 2021 -0700 [clang-tidy] bugprone-infinite-loop: forFunction() -> forCallable(). Take advantage of the new ASTMatcher added in D102213 to fix massive false negatives of the infinite loop checker on Objective-C. Differential Revision: https://reviews.llvm.org/D102214 commit 6a079dfdc992706408f2bde84c48bf76e52c4311 Author: Artem Dergachev <artem.dergachev@gmail.com> Date: Tue May 11 20:22:58 2021 -0700 [ASTMatchers] Add forCallable(), a generalization of forFunction(). The new matcher additionally covers blocks and Objective-C methods. This matcher actually makes sure that the statement truly belongs to that declaration's body. forFunction() incorrectly reported that a statement in a nested block belonged to the surrounding function. forFunction() is now deprecated due to the above footgun, in favor of forCallable(functionDecl()) when only functions need to be considered. Differential Revision: https://reviews.llvm.org/D102213 commit dd98ea528c0c23f5fee6d3dbafc261b81cca9f0d Author: Artem Dergachev <artem.dergachev@gmail.com> Date: Tue May 11 20:21:26 2021 -0700 [ASTMatchers] NFC: Fix formatting around forFunction(). Differential Revision: https://reviews.llvm.org/D102303 commit 0d8f91d2a9994619bb62c548a81eb605f0e768f7 Author: Roman Lebedev <lebedev.ri@gmail.com> Date: Thu May 13 21:22:38 2021 +0300 [NFC] Delete two newly-added test cases Failing on bots in unobvious ways. commit 6829bd3ed0515e17c84c5e72fe1742bd20ee61e5 Author: peter klausler <pklausler@nvidia.com> Date: Wed May 12 12:10:28 2021 -0700 [flang] (NFC) Expose internal idiom as utility API Add overloads to AsGenericExpr() in Evaluate/tools.h to take care of wrapping an untyped DataRef or bare Symbol in a typed Designator wrapped up in a generic Expr<SomeType>. Use the new overloads to replace a few instances of code that was calling TypedWrapper<>() with a dynamic type. This new tool will be useful in lowering to drive some code that works with typed expressions (viz., list-directed I/O list items) when starting with only a bare Symbol (viz., NAMELIST). Differential Revision: https://reviews.llvm.org/D102352 commit ecc4e9e8f4cb7581cbc447bc838943176715695c Author: Roman Lebedev <lebedev.ri@gmail.com> Date: Thu May 13 21:16:44 2021 +0300 [NFC] Try to fix CodeGenCXX/thunk-wrong-return-type.cpp test commit 8ec9fd483949ca3b23053effcac226dcc56e7a95 Author: cynecx <me@cynecx.net> Date: Thu May 13 19:05:11 2021 +0100 Support unwinding from inline assembly I've taken the following steps to add unwinding support from inline assembly: 1) Add a new `unwind` "attribute" (like `sideeffect`) to the asm syntax: ``` invoke void asm sideeffect unwind "call thrower", "~{dirflag},~{fpsr},~{flags}"() to label %exit unwind label %uexit ``` 2.) Add Bitcode writing/reading support + LLVM-IR parsing. 3.) Emit EHLabels around inline assembly lowering (SelectionDAGBuilder + GlobalISel) when `InlineAsm::canThrow` is enabled. 4.) Tweak InstCombineCalls/InlineFunction pass to not mark inline assembly "calls" as nounwind. 5.) Add clang support by introducing a new clobber: "unwind", which lower to the `canThrow` being enabled. 6.) Don't allow unwinding callbr. Reviewed By: Amanieu Differential Revision: https://reviews.llvm.org/D95745 commit 9d3eb7885d916b22bc673334f71a10e3b2835174 Author: Roman Lebedev <lebedev.ri@gmail.com> Date: Thu May 13 21:09:45 2021 +0300 [NFC] Try to fix CodeGenCXX/thunk-wrong-this.cpp test commit 54310fc176fde539b15f3cc95d4a3555df446ff6 Author: Stefan Pintilie <stefanp@ca.ibm.com> Date: Thu May 13 09:58:59 2021 -0500 [PowerPC] Add ROP Protection to prologue and epilogue Added hashst to the prologue and hashchk to the epilogue. The hash for the prologue and epilogue must always be stored as the first element in the local variable space on the stack. Reviewed By: nemanjai, #powerpc Differential Revision: https://reviews.llvm.org/D99377 commit 50e0b2985e43baf61617c9734df71e949113f911 Author: peter klausler <pklausler@nvidia.com> Date: Wed May 12 12:07:51 2021 -0700 [flang] Implement DOT_PRODUCT in the runtime API, implementation, and basic tests for the transformational reduction intrinsic function DOT_PRODUCT in the runtime support library. Differential Revision: https://reviews.llvm.org/D102351 commit 7c57a9bd7d4c976b7a824472c427433359200e02 Author: Duncan P. N. Exon Smith <dexonsmith@apple.com> Date: Fri Apr 30 15:23:47 2021 -0700 Modules: Simplify how DisableGeneratingGlobalModuleIndex is set, likely NFC DisableGeneratingGlobalModuleIndex was being set by CompilerInstance::findOrCompileModuleAndReadAST most of (but not all of) the times it returned `nullptr` as a "normal" failure. Pull that up to the caller, CompilerInstance::loadModule, to simplify the code. This resolves a number of FIXMEs added during the refactoring in 5cca622310c10fdf6f921b6cce26f91d9f14c762. The extra cases where this is set are all some version of a fatal error, and the only client of the field, shouldBuildGlobalModuleIndex, seems to be unreachable in that case. Even if there is some corner case where this has an effect, it seems like the right/consistent behaviour. Differential Revision: https://reviews.llvm.org/D101672 commit 16d03818412415c56efcd482d18c0cbdf712524c Author: Roman Lebedev <lebedev.ri@gmail.com> Date: Thu May 13 18:20:37 2021 +0300 Return "[CGCall] Annotate `this` argument with alignment" The original change was reverted because it was discovered that clang mishandles thunks, and they receive wrong attributes for their this/return types - the ones for the function they will call, not the ones they have. While i have tried to fix this in https://reviews.llvm.org/D100388 that patch has been up and stuck for a month now, with little signs of progress. So while it will be good to solve this for real, for now we can simply avoid introducing the bug, by not annotating this/return for thunks. This reverts commit 6270b3a1eafaba4279e021418c5a2c5a35abc002, relanding 0aa0458f1429372038ca6a4edc7e94c96cd9a753. commit a624cec56d4bf61c1f3cb7daf2d27dac59c56fa4 Author: Roman Lebedev <lebedev.ri@gmail.com> Date: Thu May 13 14:48:26 2021 +0300 [Clang][Codegen] Do not annotate thunk's this/return types with align/deref/nonnull attrs As it was discovered in post-commit feedback for 0aa0458f1429372038ca6a4edc7e94c96cd9a753, we handle thunks incorrectly, and end up annotating their this/return with attributes that are valid for their callees, not for thunks themselves. While it would be good to fix this properly, and keep annotating them on thunks, i've tried doing that in https://reviews.llvm.org/D100388 with little success, and the patch is stuck for a month now. So for now, as a stopgap measure, subj. commit 70aa4623de9fe2f609eab8969d7ef76b4c80084b Author: Roman Lebedev <lebedev.ri@gmail.com> Date: Thu May 13 14:46:41 2021 +0300 [NFC][Clang][Codegen] Add tests with wrong attributes on this/return of thunks From https://reviews.llvm.org/D100388 commit 1011d4ed60d9d32d53e20cbe72e47c9eecb84f49 Author: David Green <david.green@arm.com> Date: Thu May 13 18:31:01 2021 +0100 [ARM] Constrain CMPZ shift combine to a single use We currently prefer t2CMPrs over t2CMPri when the node contains a shift. This can introduce more nodes if the shift has multiple uses though, as value from the shift will be needed anyway, and in the case of a t2CMPri compared with zero will more readily be removed entirely. Differential Revision: https://reviews.llvm.org/D101688 commit f93e9c12bf482dbfe3d4d00fcf8bbc251500dd99 Author: Jonas Devlieghere <jonas@devlieghere.com> Date: Thu May 13 10:12:00 2021 -0700 [lldb] Fixup indirect symbols as they are signed. This fixes a bunch of test failures in Apple Silicon (arm64e). commit ce12b52de2fb3f319ff18effc4ea9ff4d369f328 Author: Jonas Devlieghere <jonas@devlieghere.com> Date: Thu May 13 09:41:09 2021 -0700 [lldb] Fixup more code addresses The Swift async task pointers are signed on arm64e and we need to fixup the addresses in the CFA and DWARF expressions. commit 23e9146fba298d38142337b615e17067fb8ccb91 Author: Duncan P. N. Exon Smith <dexonsmith@apple.com> Date: Fri Apr 30 15:09:09 2021 -0700 Modules: Rename ModuleBuildFailed => DisableGeneratingGlobalModuleIndex, NFC Rename CompilerInstance's ModuleBuildFailed field to DisableGeneratingGlobalModuleIndex, which more precisely describes its role. Otherwise, it's hard to suss out how it's different from ModuleLoader::HadFatalFailure, and what sort of code simplifications are safe. Differential Revision: https://reviews.llvm.org/D101670 commit cd0eeb52ad37d8f55407c548f93f42a0d5b2d08b Author: Weiwei Li <weiwei.li1@huawei.com> Date: Thu May 13 13:06:53 2021 -0400 [mlir][spirv] Define spv.ImageQuerySize operation Support OpImageQuerySize in spirv dialect co-authored-by: Alan Liu <alanliu.yf@gmail.com> Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D102029 commit 45212dec01b9be90596d8d6fa7586ce8c84e2622 Author: Valeriy Savchenko <vsavchenko@apple.com> Date: Tue May 11 17:30:02 2021 +0300 [analyzer][solver] Prevent use of a null state rdar://77686137 Differential Revision: https://reviews.llvm.org/D102240 commit 7f607ac6af0e2ee8a7d721d3ba427536deffcd3f Author: zoecarver <z.zoelec2@gmail.com> Date: Thu May 13 10:09:15 2021 -0700 [pstl] Use logical operator for loop condition in tests Fix a probable typo in two PSTL tests that causes warnings with GCC. Patch by Jonathan Wakely (jwakely). Reviewed By: zoecarver Differential Revision: https://reviews.llvm.org/D102327 commit 7c2afd5899df876eaf5ffb485194dc58e92daf89 Author: Duncan P. N. Exon Smith <dexonsmith@apple.com> Date: Fri Apr 30 14:14:03 2021 -0700 Modules: Remove ModuleLoader::OtherUncachedFailure, NFC 5cca622310c10fdf6f921b6cce26f91d9f14c762 refactored CompilerInstance::loadModule, splitting out findOrCompileModuleAndReadAST, but was careful to avoid making any functional changes. It added ModuleLoader::OtherUncachedFailure to facilitate this and left behind FIXMEs asking why certain failures weren't cached. After a closer look, I think we can just remove this and simplify the code. This changes the behaviour of the following (simplified) code from CompilerInstance::loadModule, causing a failure to be cached more often: ``` if (auto MaybeModule = MM.getCachedModuleLoad(*Path[0].first)) return *MaybeModule; if (ModuleName == getLangOpts().CurrentModule) return MM.cacheModuleLoad(PP.lookupModule(...)); ModuleLoadResult Result = findOrCompileModuleAndReadAST(...); if (Result.isNormal()) // This will be 'true' more often. return MM.cacheModuleLoad(..., Module); return Result; ``` `MM` here is a ModuleMap owned by the Preprocessor. Here are the cases where `findOrCompileModuleAndReadAST` starts returning a "normal" failed result: - Emitted `diag::err_module_not_found`, where there's no module map found. - Emitted `diag::err_module_build_disabled`, where implicitly building modules is disabled. - Emitted `diag::err_module_cycle`, which detects module cycles in the implicit modules build system. - Emitted `diag::err_module_not_built`, which avoids building a module in this CompilerInstance if another one tried and failed already. - `compileModuleAndReadAST()` was called and failed to build. The four errors are all fatal, and last item also reports a fatal error, so it this extra caching has no functionality change... but even if it did, it seems fine to cache these failed results within a ModuleMap instance (note that each CompilerInstance has its own Preprocessor and ModuleMap). Differential Revision: https://reviews.llvm.org/D101667 commit 98e4fd0701d0c65229db876ce338c723231d8cb4 Author: zoecarver <z.zoelec2@gmail.com> Date: Tue May 11 11:14:26 2021 -0700 [libcxx][ranges] Fix `ranges::empty` when begin, end, and empty members are provided. Before this commit, we'd get a compilation error because the operator() overload was ambiguous. Differential Revision: https://reviews.llvm.org/D102263 commit 9469ff15b77905245e26fe7f166fc127d813a0c0 Author: Lei Huang <lei@ca.ibm.com> Date: Mon May 10 15:20:16 2021 -0500 [PowerPC] Add clang option -m[no-]prefixed Add user-facing front end option to turn off power10 prefixed instructions. Reviewed By: nemanjai Differential Revision: https://reviews.llvm.org/D102191 commit 10de21720989166a6b51cbf48b21efacbb913f23 Author: Jon Chesterfield <jonathanchesterfield@gmail.com> Date: Thu May 13 17:31:57 2021 +0100 [libomptarget][amdgpu] Fix truncation error for partial wavefront [libomptarget][amdgpu] Fix truncation error for partial wavefront The partial barrier implementation involves one wavefront resetting and N-1 waiting. This change future proofs against launching with a number of threads that is not a multiple of the wavefront size. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D102407 commit b049870d3b47a93b0c53f3ad69b11c4731b39d7f Author: Jon Chesterfield <jonathanchesterfield@gmail.com> Date: Thu May 13 17:31:35 2021 +0100 [libomptarget][amdgpu] Convert an assert to print and offload_fail [libomptarget][amdgpu] Convert an assert to print and offload_fail The kernel launched is supposed to be present in the binary, but a not yet diagnosed bug means it is missing for some of the qmcpack test cases. Changing from assert to print and offload_fail should help diagnose that and similar bugs. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D102378 commit 3f2891db6dd5684ee743055c0e86d0d3dd66c90b Author: Jacques Pienaar <jpienaar@google.com> Date: Thu May 13 09:13:47 2021 -0700 [mlir] Add python test for shape dialect Add basic test for shape.const_shape op as start. Differential Revision: https://reviews.llvm.org/D102341 commit 2ed7db0d206b6af2fffa4cb2704264b76ca61266 Author: Joe Ellis <joe.ellis@arm.com> Date: Thu May 13 15:50:06 2021 +0000 [InstSimplify] Remove redundant {insert,extract}_vector intrinsic chains This commit removes some redundant {insert,extract}_vector intrinsic chains by implementing the following patterns as instsimplifies: (insert_vector _, (extract_vector X, 0), 0) -> X (extract_vector (insert_vector _, X, 0), 0) -> X Reviewed By: peterwaller-arm Differential Revision: https://reviews.llvm.org/D101986 commit 34ed3e63378e34f93ada56a19cebc68cf1498092 Author: Michael Kruse <llvm-project@meinersbur.de> Date: Thu May 13 11:04:59 2021 -0500 [OpenMP] Test unified shared memory tests only on systems that support it. Add a `REQUIRES: unified_shared_memory` option to tests that use `#pragma omp requires unified_shared_memory`. For CUDA, the feature tag is derived from LIBOMPTARGET_DEP_CUDA_ARCH which itself is derived using [[ https://cmake.org/cmake/help/latest/module/FindCUDA.html#commands | cuda_select_nvcc_arch_flags ]]. The latter determines which compute capability the GPU in the system supports. To ensure that this is the CUDA arch being used, we could also set the `-Xopenmp-target -march=` flag. In the absence of an NVIDIA GPU, LIBOMPTARGET_DEP_CUDA_ARCH will be 35. That is, in that case we are assuming unified_shared_memory is not available. CUDA plugin testing could be disabled entirely in this case, but this currently depends on `LIBOMPTARGET_CAN_LINK_LIBCUDA OR LIBOMPTARGET_FORCE_DLOPEN_LIBCUDA`, not on whether the hardware is actually available. For all other targets, nothing changes and we are assuming unified shared memory is available. This might need refinement if not the case. This tries to fix the [[ http://meinersbur.de:8011/#/builders/143 | OpenMP Offloading Buildbot ]] that, although brand-new, only has a Pascal-generation (sm_61) GPU installed. Hence, tests that require unified shared memory are currently failing. I wish I had known in advance. Reviewed By: protze.joachim, tianshilei1992 Differential Revision: https://reviews.llvm.org/D101498 commit 8f98356bb53dca07a86bf098556d446e0d5af6fe Author: Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> Date: Wed May 12 11:35:12 2021 -0700 [AMDGPU] Only allow global fp atomics with unsafe option Previously we were allowing to use FP atomics without -amdgpu-unsafe-fp-atomics option if a scope is less then system. This is not safe just as well if we have UC memory. This change only allows global and flat FP atomics with the unsafe option. Consequentially that makes a check for denorm mode redundant since we skip it with the unsafe option and do not have a way to produce these instructions without it anyway. Differential Revision: https://reviews.llvm.org/D102347 commit 6a67e05a26eb5f58665bd6d063b9f389e7dd28a7 Author: Aaron En Ye Shi <enye.shi@gmail.com> Date: Wed May 12 19:53:47 2021 +0000 [HIP] Add __builtin_amdgcn_groupstaticsize Differential Revision: https://reviews.llvm.org/D102403 commit 8fa168fc50ba4f63b79773c947ef5b3e43d5c02f Author: Zarko Todorovski <zarko@ca.ibm.com> Date: Thu May 13 10:44:40 2021 -0400 Parse vector bool when stdbool.h and altivec.h are included Currently when including stdbool.h and altivec.h declaration of `vector bool` leads to errors due to `bool` being expanded to '_Bool`. This patch allows the parser to recognize `_Bool`. Reviewed By: hubert.reinterpretcast, Everybody0523 Differential Revision: https://reviews.llvm.org/D102064 commit b1a074951ff78bf06a2d944c01ca0a0fcd63dd33 Author: Bradley Smith <bradley.smith@arm.com> Date: Tue May 4 11:18:34 2021 +0100 [AArch64][SVE] Fix missed immediate selection due to mishandling of signedness The complex selection pattern for add/sub shifted immediates is incorrect in it's handling of incoming constant values, in that it does not properly anticipate the values to be signed extended to 32-bits. Co-authored-by: Graham Hunter <graham.hunter@arm.com> Differential Revision: https://reviews.llvm.org/D101833 commit cf194da1bbf79d392688dba0c74875829e9873f2 Author: Tobias Gysi <gysit@google.com> Date: Thu May 13 14:24:33 2021 +0000 [mlir][linalg] Remove IndexedGenericOp support from FusionOnTensors... after introducing the IndexedGenericOp to GenericOp canonicalization (https://reviews.llvm.org/D101612). Differential Revision: https://reviews.llvm.org/D102163 commit 0f24163870e1a633c1d79377fdd188fe03769dd8 Author: Matthias Springer <springerm@google.com> Date: Thu May 13 13:55:47 2021 +0900 [mlir] Replace vector-to-scf with progressive-vector-to-scf Depends On D102388 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D102101 commit f358c372094599bf2a9246a0d2145cd949b4c62d Author: Tobias Gysi <gysit@google.com> Date: Thu May 13 13:14:47 2021 +0000 [mlir][linalg] Remove IndexedGenericOp support from DropUnitDims... after introducing the IndexedGenericOp to GenericOp canonicalization (https://reviews.llvm.org/D101612). Differential Revision: https://reviews.llvm.org/D102235 commit fe9101c3d8db4d054aade400efae45857f0840da Author: Paul C. Anagnostopoulos <paul@windfall.com> Date: Tue May 11 12:50:09 2021 -0400 [TableGen] Make the NUL character invalid in .td files Now uses tr instead of sed. Differential Revision: https://reviews.llvm.org/D102254 commit 395607af3cb80f25ee05420ea5ae0ad0be948533 Author: Juneyoung Lee <aqjune@gmail.com> Date: Sun Nov 29 04:26:44 2020 +0900 Reapply [ConstantFold] Fold more operations to poison This was reverted to mitigate mitigate miscompiles caused by the logical and/or to bitwise and/or fold. Reapply it now that the underlying issue has been fixed by D101191. ----- This patch folds more operations to poison. Alive2 proof: https://alive2.llvm.org/ce/z/mxcb9G (it does not contain tests about div/rem because they fold to poison when raising UB) Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D92270 commit d020dd2b21be85b60f935980ab8e93caee7a661a Author: Matthias Springer <springerm@google.com> Date: Thu May 13 16:50:15 2021 +0900 [mlir] Migrate vector-to-loops.mlir to ProgressiveVectorToSCF Create a copy of vector-to-loops.mlir and adapt the test for ProgressiveVectorToSCF. Fix a small bug in getExtractOp() triggered by this test. Differential Revision: https://reviews.llvm.org/D102388 commit 2b20dee59bc8829182235964b02777d54f53bb62 Author: Krzysztof Parzyszek <kparzysz@quicinc.com> Date: Thu May 13 08:36:07 2021 -0500 Fix section title underlining in the release notes commit 92260d7a186425510e96b7036b467a6889d08d97 Author: Oliver Stannard <oliver.stannard@linaro.org> Date: Thu May 13 14:25:40 2021 +0100 Revert "[CMake][ELF] Add -fno-semantic-interposition and -Bsymbolic-functions" This reverts commit 3bf1acab5b454ad7fb2074b34663108b53620695. This is causing the test `gcov-shared-flush.c' to fail on the 2-stage aarch64 buildbots (https://lab.llvm.org/buildbot/#/builders/7/builds/2720). commit 4dea3487315ed2870134c303c550152965a0580b Author: Krzysztof Parzyszek <kparzysz@quicinc.com> Date: Thu May 13 08:25:04 2021 -0500 Add entry about Hexagon V68 support to the release notes commit b1509d067e426bb8451bba789e34c4e65a168aba Author: Jinsong Ji <jji@us.ibm.com> Date: Thu May 13 13:24:45 2021 +0000 [AIX] XFAIL CodeGen/Generic/externally_available.ll Globals with “available_externally” linkage should never be emitted into the object file corresponding to the LLVM module. However, AIX system assembler default print error for undefined reference . so AIX chose to emit the available externally symbols into .s, so that users won't run into errors in situations like: clang -target powerpc-ibm-aix -xc -<<<$'extern inline __attribute__((__gnu_inline__)) void foo() {}\nvoid bar() { foo(); }' -O -Xclang -disable-llvm-passes Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D102377 commit bf068e1077a44fcb52fdf2aeb8f03f80517b64ab Author: Matthias Springer <springerm@google.com> Date: Thu May 13 21:57:49 2021 +0900 [mlir] Do not use pass labels in unrolled ProgressiveVectorToSCF Do not rely on pass labels to detect if the pattern was already applied in the past (which allows for more some extra optimizations to avoid extra InsertOps and ExtractOps). Instead, check if these optimizations can be applied on-the-fly. This also fixes a bug, where vector.insert and vector.extract ops sometimes disappeared in the middle of the pass because they get folded away, but the next application of the pattern expected them to be there. Differential Revision: https://reviews.llvm.org/D102206 commit 9310840cc249ae1aec427948fb09b8056e7094c0 Author: Nico Weber <thakis@chromium.org> Date: Thu May 13 08:53:11 2021 -0400 [gn build] (manually) port 92f9852fc99b, clang-repl commit e07753c8814dba100dcae44e2b47947b340ad0e8 Author: Georgy Komarov <jubnzv@gmail.com> Date: Wed May 12 20:23:05 2021 +0300 [clang-tidy] Fix test that requires Windows platofrm This commit fixes the cppcoreguidelines-pro-type-vararg test when it runs on a Windows host, but the toolchain is targeted a non-Windows platform. Reviewed By: njames93 Differential Revision: https://reviews.llvm.org/D102337 commit 15051f0b4a2e0a0af9da7cd5e5cfaabb9f6aaa3d Author: Stefan Pintilie <stefanp@ca.ibm.com> Date: Thu May 13 05:49:19 2021 -0500 [PowerPC] Handle inline assembly clobber of link regsiter This patch adds the handling of clobbers of the link register LR for inline assembly. This patch is to fix: https://bugs.llvm.org/show_bug.cgi?id=50147 Reviewed By: nemanjai, #powerpc Differential Revision: https://reviews.llvm.org/D101657 commit bdada7546e6b4a189a22c7ba9ce2d1b507b9c22e Author: Florian Hahn <flo@fhahn.com> Date: Thu May 13 12:57:39 2021 +0100 [VPlan] Adjust assert in splitBlock to allow splitting at end. SplitAt should only be dereferenced in the assert if it does not point to the end of the block. This fixes a crash in the added test case. commit ba0ec1be2916eae1798ad4c56480f471a65f7ce9 Author: Simon Pilgrim <llvm-dev@redking.me.uk> Date: Thu May 13 13:27:01 2021 +0100 [X86] X86ExpandPseudo.cpp - try to pass DebugLoc by const-ref to avoid costly TrackingMDNodeRef copies. NFCI. commit 4956655640c19190264b07740499e56ccb33c61f Author: Simon Pilgrim <llvm-dev@redking.me.uk> Date: Thu May 13 13:23:19 2021 +0100 [X86] X86InstrInfo.cpp - try to pass DebugLoc by const-ref to avoid costly TrackingMDNodeRef copies. NFCI. commit 9dfc4ac41cedd8d7a79d7954b5a54ab33cfca05d Author: Simon Pilgrim <llvm-dev@redking.me.uk> Date: Thu May 13 13:19:13 2021 +0100 [X86] VZeroUpperInserter::insertVZeroUpper - avoid DebugLoc creation by embedding in the BuildMI calls. NFCI. Try to pass DebugLoc by const-ref to avoid costly TrackingMDNodeRef copies. commit ffc157ea825f75c7b143fdaf23283194c5d829cf Author: Florian Hahn <flo@fhahn.com> Date: Thu May 13 13:22:18 2021 +0100 [Passes] Use regex to match GlobalsAA line in test. On some platforms/compiler combinations, it appears the output is slightly different. Update the test to use a regex, as is done at other places in the new-pm-*default.ll tests to address buildbot failures. commit 860b37526ae188d02e2dbf68a006eb26f936b5eb Author: Florian Hahn <flo@fhahn.com> Date: Thu May 13 12:53:05 2021 +0100 [Passes] Run GlobalsAA before LICM during LTO in new PM. This patch adjusts the LTO pipeline in the new PM to run GlobalsAA before LICM to match the legacy PM. This fixes a regression where the new PM failed to vectorize loops that require hoisting/sinking by LICM depending on GlobalsAA info. Reviewed By: aeubanks Differential Revision: https://reviews.llvm.org/D102345 commit 797e580db9837839ab11711733b5de52249f187c Author: Fraser Cormack <fraser@codeplay.com> Date: Thu May 13 12:35:03 2021 +0100 [RISCV][NFC] Simplify test run lines Several tests had -verify-machineinstrs twice, and several tests were explicitly specifying the default FileCheck prefix of CHECK. commit 3eaf2358556d377ae5a8f2c942d92af1c1521cfc Author: Florian Hahn <flo@fhahn.com> Date: Thu May 13 11:59:41 2021 +0100 [Passes] Use MemorySSA for LICM during LTO. Split off from D102345 to commit this separately from other changes in the patch. This aligns the behavior of the new PM with the legacy PM for LTO, with respect to running LICM. Together with the remaining changes in D102345, this fixes new PM regressions where we fail to vectorize loops that are vectorized with the legacy PM. commit 4624412367f9b591fe90ecec8feed7209cd222ac Author: Vassil Vassilev <v.g.vassilev@gmail.com> Date: Thu May 13 10:31:59 2021 +0000 [clang-repl] Fix ClangReplInterpreterTests unittest dependency. commit 0326d4667ab116588e6f987ceed151e709d263c2 Author: David Spickett <david.spickett@linaro.org> Date: Thu May 13 11:11:43 2021 +0100 [Utils] Use whoami to get username for arcanist warning message 959eec1fddc83c90c208789f20cb6573b2a20642 changed the message to show the local username with "$user" but this is not always set. Some systems will have USER/USERNAME/LOGNAME, so just use "whoami" instead. commit 39e4676ca798d9aba58823515ac9d48eb64863be Author: Nemanja Ivanovic <nemanja.i.ibm@gmail.com> Date: Wed May 12 12:18:52 2021 -0500 [PowerPC] Provide doubleword vector predicate form comparisons on Power7 There are two reasons this shouldn't be restricted to Power8 and up: 1. For XL compatibility 2. Because clang will expand comparison operators to these intrinsics* *Without this patch, the following causes a selection error: int test(vector signed long a, vector signed long b) { return a < b; } This patch provides the handling for the intrinsics in the back end and removes the Power8 guards from the predicate functions (vec_{all|any}_{eq|ne|gt|ge|lt|le}). commit e2759f110b6e9a33db449ebdf428480f46db67b8 Author: Florian Hahn <flo@fhahn.com> Date: Thu May 13 09:32:41 2021 +0100 [SCEV] Apply guards to max with non-unitary steps. We already apply loop-guards when computing the maximum with unitary steps. This extends the code to also do so when dealing with non-unitary steps. This allows us to infer a tighter maximum in some cases. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D102267 commit fd184c062c1a1b4727ddf0452ebab11fb8834880 Author: Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Date: Thu May 13 00:35:22 2021 -0700 [TSAN] Honor failure memory orders in AtomicCAS LLVM has lifted strong requirements for CAS failure memory orders in 431e3138a and 819e0d105e84. Add support for honoring them in `AtomicCAS`. https://github.com/google/sanitizers/issues/970 Differential Revision: https://reviews.llvm.org/D99434 commit b2186a69c169c7e39c2a769ba859f656aa4cef1b Author: Vassil Vassilev <v.g.vassilev@gmail.com> Date: Thu May 13 08:06:52 2021 +0000 [clang-repl] Add final set of missing library dependencies. commit 8a86787847d92c0b428171d9de748c1cf91b3159 Author: Kristina Bessonova <kbessonova@accesssoftek.com> Date: Wed May 12 14:32:43 2021 +0200 [libcxx] NFC. Fix misprint unodered -> unordered Differential Revision: https://reviews.llvm.org/D102354 commit afee09751d2d744a753ef4d3e8d83857dcd0f682 Author: Jason Molenda <jason@molenda.com> Date: Thu May 13 00:46:21 2021 -0700 [NFC] Add GetInferiorAddrSize method, unify code to compute MachProcess.mm has a sequence to get the address size in the inferior in three places; and I'm about to add a fourth in a future patch. Not a fan. commit 107d19eb017ff6734986af077eb2e9f6600114a9 Author: Jingu Kang <jingu.kang@arm.com> Date: Thu May 13 08:22:26 2021 +0100 Revert "[SimpleLoopUnswitch] Port partially invariant unswitch from LoopUnswitch to SimpleLoopUnswitch" This reverts commit 88b259c01463c08ac2575b4432c07ea7751946b5. It needs to fix below bugs. https://bugs.llvm.org/show_bug.cgi?id=50279 https://bugs.llvm.org/show_bug.cgi?id=50302 commit 12537ab77227db8f2b42e6172b24313d8f442e97 Author: Serge Pavlov <sepavloff@gmail.com> Date: Thu May 13 13:44:10 2021 +0700 [FPEnv][X86] Implement lowering of llvm.set.rounding Differential Revision: https://reviews.llvm.org/D74730 commit 6045cb89e5e8223eea4d7f9c3a3e0d8d25ff909f Author: serge-sans-paille <sguelton@redhat.com> Date: Mon May 10 15:56:22 2021 +0200 Use an allow list on reserved macro identifiers The allow list is based on various official sources (see in-code comment). This fixes https://bugs.llvm.org/show_bug.cgi?id=50248 Differential Revision: https://reviews.llvm.org/D102168 commit 3f4c5185926ad2a07a642b8b0b7a4accffeb7e36 Author: Vassil Vassilev <v.g.vassilev@gmail.com> Date: Thu May 13 07:18:01 2021 +0000 [clang-repl] Add exhaustive list of libInterpreter dependencies. This patch should appease the bots building with -DBUILD_SHARED_LIBS=On, resolving the regression introduced in 92f9852fc99b. commit 92f9852fc99b0a18e8d1329341f36f1708343f05 Author: Vassil Vassilev <v.g.vassilev@gmail.com> Date: Thu May 13 05:41:44 2021 +0000 [clang-repl] Recommit "Land initial infrastructure for incremental parsing" Original commit message: In http://lists.llvm.org/pipermail/llvm-dev/2020-July/143257.html we have mentioned our plans to make some of the incremental compilation facilities available in llvm mainline. This patch proposes a minimal version of a repl, clang-repl, which enables interpreter-like interaction for C++. For instance: ./bin/clang-repl clang-repl> int i = 42; clang-repl> extern "C" int printf(const char*,...); clang-repl> auto r1 = printf("i=%d\n", i); i=42 clang-repl> quit The patch allows very limited functionality, for example, it crashes on invalid C++. The design of the proposed patch follows closely the design of cling. The idea is to gather feedback and gradually evolve both clang-repl and cling to what the community agrees upon. The IncrementalParser class is responsible for driving the clang parser and codegen and allows the compiler infrastructure to process more than one input. Every input adds to the “ever-growing” translation unit. That model is enabled by an IncrementalAction which prevents teardown when HandleTranslationUnit. The IncrementalExecutor class hides some of the underlying implementation details of the concrete JIT infrastructure. It exposes the minimal set of functionality required by our incremental compiler/interpreter. The Transaction class keeps track of the AST and the LLVM IR for each incremental input. That tracking information will be later used to implement error recovery. The Interpreter class orchestrates the IncrementalParser and the IncrementalExecutor to model interpreter-like behavior. It provides the public API which can be used (in future) when using the interpreter library. Differential revision: https://reviews.llvm.org/D96033 commit 60da33c2d4b2cd744c70259088b2ab89eb858f33 Author: Matthias Springer <springerm@google.com> Date: Thu May 13 15:04:40 2021 +0900 [mlir] Support masks in TransferOpReduceRank and TransferReadPermutationLowering These two patterns allow for more efficient codegen in VectorToSCF. Differential Revision: https://reviews.llvm.org/D102222 commit 9bf17619750494ee971c66782039d4102d805c07 Author: LLVM GN Syncbot <llvmgnsyncbot@gmail.com> Date: Thu May 13 05:32:35 2021 +0000 [gn build] Port d8b37de8a478 commit d8b37de8a478c1b1532e45b0bfd82ecf1c964d9a Author: Max Kazantsev <mkazantsev@azul.com> Date: Wed May 12 14:36:24 2021 +0700 [GC][NFC] Move GCStrategy from CodeGen to IR We want it to be available in analyzes so that we could use the CodeGen notion in middle-end passes (for example, to check if a GC may free some particular pointer). This is a preparatory patch that simply moves the files around. Note: if this causes some build issues, this patch must just be reverted. Differential Revision: https://reviews.llvm.org/D100557 Reviewed By: reames commit 2f21a272af69321555cdc2794664b5eba8fc3276 Author: Lang Hames <lhames@gmail.com> Date: Wed May 12 20:56:07 2021 -0700 [JITLink] Expose x86-64 pointer jump stub block construction. This can be useful for clients who want to define their own symbol for the stub, or re-use some existing symbol. commit 4b0f5edd36c685333985698d1a288d2eb641b910 Author: Lang Hames <lhames@gmail.com> Date: Wed May 12 20:48:42 2021 -0700 [JITLink] Add a transferDefinedSymbol operation. The transferDefinedSymbol operation updates a Symbol's target block, offset, and size. This can be convenient when you want to redefine the content of some symbol(s) pointing at a block, while retaining the original block in the graph. commit 0c443e92d3b9bc5a25214f2c8418b72501a15a00 Author: Jason Molenda <jason@molenda.com> Date: Wed May 12 22:15:55 2021 -0700 Add some warnings when debugserver is running in translation A debugserver launched x86_64 cannot control an arm64/arm64e process on an Apple Silicon system. Warn when this situation has happened and return an error for the most common case of attach. I think there will be refinements to this in the future, but start out by making it easy to spot the problem when it happens. rdar://76630595 commit c1359ef07e8240b4350802b4998aedc1239a91d0 Author: Chuanqi Xu <yedeng.yd@linux.alibaba.com> Date: Thu May 13 13:05:05 2021 +0800 [Coroutines] Salvege Debug.values Summary: The previous implementation of coro-split didn't collect values used by dbg instructions into the spills which made a log debug info unavailable with optimization on. This patch tries to collect these uses which are used by dbg.values. In this way, the debugbility of coroutine could be as powerful as normal functions with optimization on. To avoid enlarging the coroutine frame, this patch only collects `dbg.value` whose value is already in the coroutine frame. This decision may make some debug info getting unavailable. But if we are with optimization on, the performance issue should be considered first. And this patch would make the debugbility of coroutine to be better only without changing the layout of the frame. Test-plan: check-llvm Reviewed By: aprantl, lxfind Differential Revision: https://reviews.llvm.org/D97673 commit 3f8aafd7902722cc2039c7ef3d6747f8d49f81a6 Author: Rob Suderman <rob.suderman@gmail.com> Date: Wed May 12 21:47:55 2021 -0700 [mlir][tosa] Fix tosa.cast semantics to perform rounding/clipping Rounding to integers requires rounding (for floating points) and clipping to the min/max values of the destination range. Added this behavior and updated tests appropriately. Reviewed By: sjarus, silvas Differential Revision: https://reviews.llvm.org/D102375 commit f6907152db3d70606817ffe28274c6a90b331bbc Author: Vassil Vassilev <v.g.vassilev@gmail.com> Date: Thu May 13 04:43:01 2021 +0000 Revert "[clang-repl] Land initial infrastructure for incremental parsing" This reverts commit 44a4000181e1a25027e87f2ae4e71cb876a7a275. We are seeing build failures due to missing dependency to libSupport and CMake Error at tools/clang/tools/clang-repl/cmake_install.cmake file INSTALL cannot find commit 6e5b8f489a27901de4b9dfa152da02dbca13ec31 Author: Chuanqi Xu <yedeng.yd@linux.alibaba.com> Date: Thu May 13 12:35:37 2021 +0800 [Coroutines] Enable printing coroutine frame when dbg info is available Summary: This patch tries to build debug info for coroutine frame in the middle end. Although the coroutine frame is constructed and maintained by the compiler and the programmer shouldn't care about the coroutine frame by the design of C++20 coroutine, a lot of programmers told me that they want to see the layout of the coroutine frame strongly. Although C++ is designed as an abstract layer so that the programmers shouldn't care about the actual memory in bits, many experienced C++ programmers are familiar with assembler and debugger to see the memory layout in fact, After I was been told they want to see the coroutine frame about 3 times, I think it is an actual and desired demand. However, the debug information is constructed in the front end and coroutine frame is constructed in the middle end. This is a natural and clear gap. So I could only try to construct the debug information in the middle end after coroutine frame constructed. It is unusual, but we are in consensus that the approch is the best one. One hard part is we need construct the name for variables since there isn't a map from llvm variables to DIVar. Then here is the strategy this patch uses: - The name `__resume_fn `, `__destroy_fn` and `__coro_index ` are constructed by the patch. - Then the name `__promise` comes from the dbg.variable of corresponding dbg.declare of PromiseAlloca, which shows highest priority to construct the debug information for the member of coroutine frame. - Then if the member is struct, we would try to get the name of the llvm struct directly. Then replace ':' and '.' with '_' to make it printable for debugger. - If the member is a basic type like integer or double, we would try to emit the corresponding name. - Then if the member is a Pointer Type, we would add `Ptr` after corresponding pointee type. - Otherwise, we would name it with 'UnknownType'. Reviewered by: lxfind, aprantl, rjmcall, dblaikie Differential Revision: https://reviews.llvm.org/D99179 commit ab2c499d3a2ed3d3e13d96e456c57fb35a114b31 Author: Anton Afanasyev <anton.a.afanasyev@gmail.com> Date: Tue Mar 16 10:23:13 2021 +0300 [SLP] Add insertelement instructions to vectorizable tree Add new type of tree node for `InsertElementInst` chain forming vector. These instructions could be either removed, or replaced by shuffles during vectorization and we can add this node to cost model, so naturally estimating their cost, getting rid of `CompensateCost` tricks and reducing further work for InstCombine. This fixes PR40522 and PR35732 in a natural way. Also this patch is the first step towards revectorization of partially vectorization (to fix PR42022 completely). After adding inserts to tree the next step is to add vector instructions there (for instance, to merge `store <2 x float>` and `store <2 x float>` to `store <4 x float>`). Fixes PR40522 and PR35732. Differential Revision: https://reviews.llvm.org/D98714 commit cd9090031c83ee857f82c3344b6efd97185c928e Author: Anton Afanasyev <anton.a.afanasyev@gmail.com> Date: Fri Mar 19 11:09:58 2021 +0300 [SLP][Test] Fix and precommit tests for D98714 commit 00a0595b253f22f5138eb0ceaf892dbe8e670453 Author: Anton Afanasyev <anton.a.afanasyev@gmail.com> Date: Fri Mar 19 11:09:58 2021 +0300 [SLP][Test] Fix and precommit tests for D98714 commit 44a4000181e1a25027e87f2ae4e71cb876a7a275 Author: Vassil Vassilev <v.g.vassilev@gmail.com> Date: Wed May 12 20:48:03 2021 +0000 [clang-repl] Land initial infrastructure for incremental parsing In http://lists.llvm.org/pipermail/llvm-dev/2020-July/143257.html we have mentioned our plans to make some of the incremental compilation facilities available in llvm mainline. This patch proposes a minimal version of a repl, clang-repl, which enables interpreter-like interaction for C++. For instance: ./bin/clang-repl clang-repl> int i = 42; clang-repl> extern "C" int printf(const char*,...); clang-repl> auto r1 = printf("i=%d\n", i); i=42 clang-repl> quit The patch allows very limited functionality, for example, it crashes on invalid C++. The design of the proposed patch follows closely the design of cling. The idea is to gather feedback and gradually evolve both clang-repl and cling to what the community agrees upon. The IncrementalParser class is responsible for driving the clang parser and codegen and allows the compiler infrastructure to process more than one input. Every input adds to the “ever-growing” translation unit. That model is enabled by an IncrementalAction which prevents teardown when HandleTranslationUnit. The IncrementalExecutor class hides some of the underlying implementation details of the concrete JIT infrastructure. It exposes the minimal set of functionality required by our incremental compiler/interpreter. The Transaction class keeps track of the AST and the LLVM IR for each incremental input. That tracking information will be later used to implement error recovery. The Interpreter class orchestrates the IncrementalParser and the IncrementalExecutor to model interpreter-like behavior. It provides the public API which can be used (in future) when using the interpreter library. Differential revision: https://reviews.llvm.org/D96033 commit 2a51e9ff2e06d5d7096f826014916b4cc02269fc Author: Matthias Springer <springerm@google.com> Date: Thu May 13 13:12:30 2021 +0900 [mlir] Support memref layout maps in vector transfer ops Differential Revision: https://reviews.llvm.org/D102042 commit 9b77be5583d2da03f2ccd7319d33a2daedf8b1b3 Author: Matthias Springer <springerm@google.com> Date: Thu May 13 12:57:45 2021 +0900 [mlir] Unrolled progressive-vector-to-scf. Instead of an SCF for loop, these pattern generate fully unrolled loops with no temporary buffer allocations. Differential Revision: https://reviews.llvm.org/D101981 commit 864adf399e58a6bfd823136fc2cbcfe9dff5b4a8 Author: Matthias Springer <springerm@google.com> Date: Thu May 13 12:53:15 2021 +0900 [mlir] Allow empty position in vector.insert and vector.extract Such ops are no-ops and are folded to their respective `source`/`vector` operand. Differential Revision: https://reviews.llvm.org/D101879 commit c52cbe63e42fff8c1a95921effd35d7bb59301d3 Author: Matthias Springer <springerm@google.com> Date: Thu May 13 11:57:10 2021 +0900 [mlir] Fix masked vector transfer ops with broadcasts Broadcast dimensions of a vector transfer op have no corresponding dimension in the mask vector. E.g., a 2-D TransferReadOp, where one dimension is a broadcast, can have a 1-D `mask` attribute. This commit also adds a few additional transfer op integration tests for various combinations of broadcasts, masking, dim transposes, etc. Differential Revision: https://reviews.llvm.org/D101745 commit a0ca4c46ca35957a38a6023fa84afda2fc9ba0ec Author: Chen Zheng <czhengsz@cn.ibm.com> Date: Sun May 9 22:04:02 2021 -0400 [Debug-Info] add -gstrict-dwarf support in backend Reviewed By: dblaikie, probinson Differential Revision: https://reviews.llvm.org/D100826 commit 6555e53ab0f2bca3dc30f5ab3a2d6872d50b6ff8 Author: Matthias Springer <springerm@google.com> Date: Thu May 13 11:55:00 2021 +0900 Revert "[mlir] Fix masked vector transfer ops with broadcasts" This reverts commit c9087788f7e41285445729127dd07ff7f82e3fc0. Accidentally pushed old version of the commit. commit c9087788f7e41285445729127dd07ff7f82e3fc0 Author: Matthias Springer <springerm@google.com> Date: Mon May 3 18:03:19 2021 +0900 [mlir] Fix masked vector transfer ops with broadcasts Broadcast dimensions of a vector transfer op have no corresponding dimension in the mask vector. E.g., a 2-D TransferReadOp, where one dimension is a broadcast, can have a 1-D `mask` attribute. This commit also adds a few additional transfer op integration tests for various combinations of broadcasts, masking, dim transposes, etc. Differential Revision: https://reviews.llvm.org/D101745 commit ce6cc87ce9e96eaa5e5ef0c1f5dc07b41381996d Author: Yaxun (Sam) Liu <yaxun.liu@amd.com> Date: Wed May 12 18:29:40 2021 -0400 [clang] Minor fix for MarkVarDeclODRUsed Merge two if as follow up of https://reviews.llvm.org/D102270 commit 017d7a9e14245e549999c5e3b8bd7398fcf79410 Author: Adrian Prantl <aprantl@apple.com> Date: Wed May 12 18:43:34 2021 -0700 Rename human-readable name for DW_LANG_Mips_Assembler The Mips in DW_LANG_Mips_Assembler is a vendor name not an architecture name and in lack of a proper generic DW_LANG_assembler, some assemblers emit DWARF using this tag. Due to a warning I recently introduced users will now be greeted with This version of LLDB has no plugin for the mipsassem language. Inspection of frame variables will be limited. By renaming this to just "Assembler" this error message will make more sense. Differential Revision: https://reviews.llvm.org/D101406 rdar://77214764 commit e1aa528d3aaf5fcf9c50d1e34b39dbde1e63801d Author: Richard Smith <richard@metafoo.co.uk> Date: Wed May 12 18:29:26 2021 -0700 Handle unexpanded packs appearing in type-constraints. For a type-constraint in a lambda signature, this makes the lambda contain an unexpanded pack; for requirements in a requires-expressions it makes the requires-expression contain an unexpanded pack; otherwise it's invalid. commit 2f9d8b08ea658b612065cbf7d4b0fbd7f28bb36a Author: Richard Smith <richard@metafoo.co.uk> Date: Wed May 12 15:25:52 2021 -0700 PR50306: When instantiating a generic lambda with a constrained 'auto', properly track that it has constraints. Previously an instantiation of a constrained generic lambda would behave as if unconstrained because we incorrectly cached a "has no constraints" value that we computed before the constraints from 'auto' parameters were attached. commit e0acfed7ed5173b437868f75fc394084487e390a Author: Richard Smith <richard@metafoo.co.uk> Date: Wed May 12 14:19:23 2021 -0700 Clean up handling of constrained parameters in lambdas. No functionality change intended. commit 4c88cfb1dc79227be78f8dade966934384914e5e Author: Richard Smith <richard@metafoo.co.uk> Date: Wed May 12 13:25:52 2021 -0700 Add test for substitutability of variable templates in closure type mangling. commit 10c779d2065f7e216660f1687244269afcee13b1 Author: Pushpinder Singh <Pushpinder.Singh@amd.com> Date: Wed May 12 11:14:36 2021 +0000 [AMDGPU][OpenMP] Emit textual IR for -emit-llvm -S Previously clang would print a binary blob into the bundled file for amdgcn. With this patch, it will instead print textual IR as expected. Reviewed By: JonChesterfield, ronlieb Differential Revision: https://reviews.llvm.org/D102065 Change-Id: I10c0127ab7357787769fdf9a2edd4b3071e790a1 commit 6732a5328cf03872d53827d3e0e283fcf16b551a Author: Peter Collingbourne <peter@pcc.me.uk> Date: Wed May 12 15:29:41 2021 -0700 scudo: Require fault address to be in bounds for UAF. The bounds check that we previously had here was suitable for secondary allocations but not for UAF on primary allocations, where it is likely to result in false positives. Fix it by using a different bounds check for UAF that requires the fault address to be in bounds. Differential Revision: https://reviews.llvm.org/D102376 commit 46c17429bc86dc5ccddb5512b77bd1ede39c9ccd Author: Christopher Di Bella <cjdb@google.com> Date: Sun May 2 02:21:28 2021 +0000 [libcxx] modifies `_CmpUnspecifiedParam` ignore types outside its domain D85051's honeypot solution was a bit too aggressive swallowed up the comparison types, which made comparing objects of different ordering types ambiguous. Depends on D101707. Differential Revision: https://reviews.llvm.org/D101708 commit 58d12332a4730226d0a640136f06f3bd0861f1a5 Author: Aart Bik <ajcbik@google.com> Date: Wed May 12 14:51:16 2021 -0700 [mlir][sparse][capi][python] add sparse tensor passes First set of "boilerplate" to get sparse tensor passes available through CAPI and Python. Reviewed By: stellaraccident Differential Revision: https://reviews.llvm.org/D102362 commit bd00106d1e77e4de769ce0d143c97a076f25c92b Author: Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> Date: Wed May 12 14:18:16 2021 -0700 [AMDGPU] Refactor shouldExpandAtomicRMWInIR(). NFC. This is logic simplification for better readability. Differential Revision: https://reviews.llvm.org/D102371 commit b7911e80d6926f9280ceb23d4e86e25c29370904 Author: MaheshRavishankar <ravishankarm@google.com> Date: Wed May 12 16:06:02 2021 -0700 [mlir][Linalg] Add interface methods to get lhs and rhs of contraction Differential Revision: https://reviews.llvm.org/D102301 commit e7d26aceca071d67168062b2f7784c56234b0cb3 Author: Justin Bogner <mail@justinbogner.com> Date: Wed May 12 15:29:29 2021 -0700 Change the context instruction for computeKnownBits in LoadStoreVectorizer pass This change enables cases for which the index value for the first load/store instruction in a pair could be a function argument. This allows using llvm.assume to provide known bits information in such cases. Patch by Viacheslav Nikolaev. Thanks! Differential Revision: https://reviews.llvm.org/D101680 commit e5bdacba2e185034979fddd8bff2695bfcdd3056 Author: Greg Clayton <gclayton@fb.com> Date: Wed May 12 13:20:31 2021 -0700 Optimize GSymCreator::finalize. The algorithm removing duplicates from the Funcs list used to have amortized quadratic time complexity because it was potentially removing each entry using std::vector::erase individually. This patch is now using a erase-remove idiom with an adapted removeIfBinary algorithm. Probably this was made under the assumption that these removals are rare, but there are cases where the case of duplicate entries is occurring frequently. In these cases, the actual runtime was very poor, taking hours to process a single binary of around 1 GiB size including debug info. Another factor contributing to that is the frequent output of the warning, which is now removed. It seems this is particularly an issue with GCC-compiled binaries, rather than clang-built binaries. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D102219 commit fb3a00c327df78eaa534e53ac6f07112e0585121 Author: Eugene Zhulenev <ezhulenev@google.com> Date: Wed May 12 14:30:09 2021 -0700 [mlir] Fix ssa values naming bug Address comments in https://reviews.llvm.org/D102226 to fix the bug + style violations Differential Revision: https://reviews.llvm.org/D102368 commit cd01430ff13b5441bc71e6dc3c4e688052f7be82 Author: Sam Clegg <sbc@chromium.org> Date: Tue May 11 15:16:00 2021 -0700 [lld][WebAssembly] Allow data symbols to extend past end of segment This fixes a bug with string merging with string symbols that contain NULLs, as is the case in the `merge-string.s` test. The bug only showed when we run with `--relocatable` and then try read the resulting object back in. In this case we would end up with string symbols that extend past the end of the segment in which they live. The problem comes from the fact that sections which are flagged as string mergable assume that all strings are NULL terminated. The merging algorithm will drop trailing chars that follow a NULL since they are essentially unreachable. However, the "size" attribute (in the symbol table) of such a truncated symbol is not updated resulting a symbol size that can overlap the end of the segment. I verified that this can happen in ELF too given the right conditions and the its harmless enough. In practice Strings that contain embedded null should not be part of a mergable section. Differential Revision: https://reviews.llvm.org/D102281 commit 3041b16f7322a0392810e4a14b13cacac1929ad8 Author: Sam Clegg <sbc@chromium.org> Date: Mon May 10 14:58:47 2021 -0700 [WebAssembly] Add TLS data segment flag: WASM_SEG_FLAG_TLS Previously the linker was relying solely on the name of the segment to imply TLS. Differential Revision: https://reviews.llvm.org/D102202 commit ba38b72ec2833bf8c54829a0fd7a8c968e6260d4 Author: Heejin Ahn <aheejin@gmail.com> Date: Wed May 12 13:19:30 2021 -0700 [WebAssembly] Allow Wasm EH with Emscripten SjLj We explicitly made it error out in D101403, out of a good intention that the error message will make people less confusing. Turns out, we weren't failing all cases of wasm EH + SjLj; only a few cases were failing and our client was able to get around by fixing source code, but now we made it fail for all cases, even the cases that previously succeeded fail, which we didn't intend. This reverts that change. Reviewed By: tlively Differential Revision: https://reviews.llvm.org/D102364 commit 9c345407b4999e62e51667927f531b891363569b Author: Craig Topper <craig.topper@sifive.com> Date: Wed May 12 12:38:06 2021 -0700 [RISCV] Remove RISCVII:VSEW enum. Make encodeVYPE operate directly on SEW. The VSEW encoding isn't a useful value to pass around. It's better to use SEW or log2(SEW) directly. The only real ugliness is that the vsetvli IR intrinsics use the VSEW encoding, but it's easy enough to decode that when the intrinsic is processed. commit 5bb7e81c64bd29edd1c9ebadd4e4717919def0bf Author: Richard Smith <richard@metafoo.co.uk> Date: Wed May 5 18:56:58 2021 -0700 Fix bad mangling of <data-member-prefix> for a closure in the initializer of a variable at global namespace scope. This implements the direction proposed in https://github.com/itanium-cxx-abi/cxx-abi/pull/126. Differential Revision: https://reviews.llvm.org/D101968 commit 29ac15ab380b6d9853d4cdc9c220107e90375cb9 Author: River Riddle <riddleriver@gmail.com> Date: Wed May 12 13:02:09 2021 -0700 [mlir-lsp-server][NFC] Add newline between Protocol JSON serialization methods and class definitions. commit b3911cdfc89f3b560fc00048d6f99280268fa63c Author: River Riddle <riddleriver@gmail.com> Date: Wed May 12 13:01:59 2021 -0700 [mlir-lsp-server] Add support for sending diagnostics to the client This allows for diagnostics emitted during parsing/verification to be surfaced to the user by the language client, as opposed to just being emitted to the logs like they are now. Differential Revision: https://reviews.llvm.org/D102293 commit 30b7dfafdb620420ad3498aae01130bc7e2fb9cd Author: Shoaib Meenai <smeenai@fb.com> Date: Wed May 12 12:59:23 2021 -0700 [flang] Fix standalone builds Flang's CMake modules directory was being added to the CMake module path twice, and AddFlang was being included after the first addition. Remove the unnecessary first addition and move the AddFlang include down to the second one. This way, it occurs after LLVM's CMake modules have been included for a standalone build, so it can make use of those modules. commit 08ba9ce1ef7214623d4104e72d817c73644a0884 Author: Erich Keane <erich.keane@intel.com> Date: Tue May 11 06:40:48 2021 -0700 Suppress Deferred Diagnostics in discarded statements. It doesn't really make sense to emit language specific diagnostics in a discarded statement, and suppressing these diagnostics results in a programming pattern that many users will feel is quite useful. Basically, this makes sure we only emit errors from the 'true' side of a 'constexpr if'. It does this by making the ExprEvaluatorBase type have an opt-in option as to whether it should visit discarded cases. Differential Revision: https://reviews.llvm.org/D102251 commit 4b014352308f7244b86438fff7c61c632934a1ff Author: Suraj Sudhir <Suraj.Sudhir@arm.com> Date: Wed May 12 12:39:25 2021 -0700 [mlir][tosa] Remove tosa.identityn operator Removes the identityn operator from TOSA MLIR definition. Removes TosaToLinAlg mappings Reviewed By: rsuderman Differential Revision: https://reviews.llvm.org/D102329 commit a8053399cde847dfce88d7d1fa2a2099f3a58c40 Author: Fangrui Song <i@maskray.me> Date: Wed May 12 12:38:27 2021 -0700 [ELF][AVR] Add explicit relocation types to getRelExpr commit 7e0768329ca347e37c7bdb0da16b51cb3e7b7d8b Author: Martin Storsjö <martin@martin.st> Date: Sun May 9 23:27:35 2021 +0300 [LLD] [COFF] Fix including the personality function for DWARF EH when linking with --gc-sections Since c579a5b1d92a9bc2046d00ee2d427832e0f5ddec we don't traverse .eh_frame when doing GC. But the exception handling personality function needs to be included, and is only referenced from within .eh_frame. Differential Revision: https://reviews.llvm.org/D102138 commit 6bd3d8a17cef9108a338ada9b3dbed201bf9c158 Author: Martin Storsjö <martin@martin.st> Date: Mon May 3 00:13:51 2021 +0300 [libcxx] [test] Fix fs.op.last_write_time for Windows Don't use stat and lstat on Windows; lstat is missing, stat only provides the modification times with second granularity (and does the wrong thing regarding symlinks). Instead do a minimal reimplementation using the native windows APIs. Differential Revision: https://reviews.llvm.org/D101731 commit 77997f28d5954fa2417806586f2c5c9d1a0ffeef Author: Shoaib Meenai <smeenai@fb.com> Date: Wed May 12 12:14:20 2021 -0700 [cmake] Fix typo in function name Not sure how my local testing didn't trigger this path. Should fix https://lab.llvm.org/buildbot/#/builders/132/builds/5494 commit c273f5ef7d3f5ac05f67ec899e25830cd9543e56 Author: Mark de Wever <koraq@xs4all.nl> Date: Wed May 12 17:46:24 2021 +0200 [libc++][nfc] remove duplicated __to_unsigned. Both `<type_traits>` and `<charconv>` implemented this function with different names and a slightly different behavior. This removes the version in `<charconv>` and improves the version in `<typetraits>`. - The code can be used again in C++11. - The original claimed C++14 support, but `[[nodiscard]]` is not available in C++14. - Adds `_LIBCPP_INLINE_VISIBILITY`. Reviewed By: zoecarver, #libc, Quuxplusone Differential Revision: https://reviews.llvm.org/D102332 commit a8f7dee1dffbf8c18acbcc7b1f6d659bf808798e Author: Nikita Popov <nikita.ppv@gmail.com> Date: Tue May 11 23:01:29 2021 +0200 [InstCombine] Support one-hot merge for logical and/or If a logical and/or is used, we need to be careful not to propagate a potential poison value from the RHS by inserting a freeze instruction. Otherwise it works the same way as bitwise and/or. This is intended to address the regression reported at https://reviews.llvm.org/D101191#2751002. Differential Revision: https://reviews.llvm.org/D102279 commit 99d63ccff04b672694f8a2b3eed024b873dc163d Author: Pratyush Das <reikdas@gmail.com> Date: Wed May 12 17:28:41 2021 +0000 Add type information to integral template argument if required. Non-comprehensive li…
jrtc27
pushed a commit
to CTSRD-CHERI/compiler-rt
that referenced
this issue
Jan 18, 2022
LLVM has lifted strong requirements for CAS failure memory orders in 431e3138a and 819e0d105e84. Add support for honoring them in `AtomicCAS`. google/sanitizers#970 Differential Revision: https://reviews.llvm.org/D99434
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Tsan wholesale ignores compare_exchange failure ordering. Instrumentation pass now passes it to runtime. We need to respect it and use instead of success ordering on failure. Note: in C++17 failure ordering can be stronger than success ordering.
The text was updated successfully, but these errors were encountered: