- Jul 22, 2022
-
-
Johannes Doerfert authored
The namespaces were missing causing the symbols to have "C" mangling. To avoid this in the future we qualify the names now fully.
-
Johannes Doerfert authored
-
Fangrui Song authored
-
Fangrui Song authored
lowerGlobalAddress added by D128427 can be used for PIC. The actual condition is that the global value needs to be dso_local (a dso_preemptable one needs GOT indirection). load-store.ll has UB due to out-of-bounds load/store. Fix the UB in the variable test and add an array test. Note: NOPIC array index is currently wrong. Reviewed By: wangleiat Differential Revision: https://reviews.llvm.org/D129977
-
Fangrui Song authored
-
Chenbing Zheng authored
Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D130220
-
Fangrui Song authored
-
Fangrui Song authored
-
Volodymyr Sapsai authored
Diagnostic for `-Wauto-import` shouldn't be a warning because it doesn't represent a potential problem in code that should be fixed. And the emitted fix-it is likely to trigger `-Watimport-in-framework-header` which makes it challenging to have a warning-free codebase. But it is still useful to see how include directives are translated into modular imports and which module a header belongs to, that's why keep it as a remark. Keep `-Wauto-import` for now to allow a gradual migration for codebases using `-Wno-auto-import`, e.g., `-Weverything -Wno-auto-import`. rdar://79594287 Differential Revision: https://reviews.llvm.org/D130138
-
Slava Gurevich authored
Using invalidated vector iterator is at best a UB and could crash depending on STL implementation. Fixing via minimal changes to preserve the existing code style. Coverity warning 1454828 (scan.coverity.com) Differential Revision: https://reviews.llvm.org/D130312
-
Phoebe Wang authored
Truncation from double to half is not always identical to truncating to float first and then to half. https://godbolt.org/z/56s9517hd On the other hand, expanding to float and then to double is always identical to expanding to double directly. https://godbolt.org/z/Ye8vbYPnY Reviewed By: RKSimon, skan Differential Revision: https://reviews.llvm.org/D130151
-
Ryan Prichard authored
Correct the logic used to set `ATOMIC_*_LOCK_FREE` preprocessor macros not to rely on the ABI alignment of types. Instead, just assume all those types are aligned correctly by default since clang uses safe alignment for `_Atomic` types even if the underlying types are aligned to a lower boundary by default. For example, the `long long` and `double` types on x86 are aligned to 32-bit boundary by default. However, `_Atomic long long` and `_Atomic double` are aligned to 64-bit boundary, therefore satisfying the requirements of lock-free atomic operations. This fixes PR #19355 by correcting the value of `__GCC_ATOMIC_LLONG_LOCK_FREE` on x86, and therefore also fixing the assumption made in libc++ tests. This also fixes PR #30581 by applying a consistent logic between the functions used to implement both interfaces. Reviewed By: hfinkel, efriedma Differential Revision: https://reviews.llvm.org/D28213
-
Ryan Prichard authored
The default host CPU for an i386 triple is typically at least an i586, which has cmpxchg8b (Clang feature, "cx8"). Therefore, `__CLANG_ATOMIC_LLONG_LOCK_FREE` is 2 on the host, but the value should be 1 for the device. Also, grep for `__CLANG_ATOMIC_*` instead of `__GCC_ATOMIC_*`. The CLANG macros are always emitted, but the GCC macros are omitted for the *-windows-msvc targets. The `__GCC_HAVE_SYNC_COMPARE_AND_SWAP` macro always has GCC in its name, not CLANG, however. Reviewed By: tra Differential Revision: https://reviews.llvm.org/D127465
-
Ilia Diachkov authored
The patch adds SPIRVPrepareFunctions pass, which modifies function signatures containing aggregate arguments and/or return values before IR translation. Information about the original signatures is stored in metadata. It is used during call lowering to restore correct SPIR-V types of function arguments and return values. This pass also substitutes some llvm intrinsic calls to function calls, generating the necessary functions in the module, as the SPIRV translator does. The patch also includes changes in other modules, fixing errors and enabling many SPIR-V features that were omitted earlier. And 15 LIT tests are also added to demonstrate the new functionality. Differential Revision: https://reviews.llvm.org/D129730 Co-authored-by:
Aleksandr Bezzubikov <zuban32s@gmail.com> Co-authored-by:
Michal Paszkowski <michal.paszkowski@outlook.com> Co-authored-by:
Andrey Tretyakov <andrey1.tretyakov@intel.com> Co-authored-by:
Konrad Trifunovic <konrad.trifunovic@intel.com>
-
Nick Desaulniers authored
-
Philip Reames authored
This code confuses LV's "Uniform" and LVL/LAI's "Uniform". Despite the common name, these are different. * LVs notion means that only the first lane *of each unrolled part* is required. That is, lanes within a single unroll factor are considered uniform. This allows e.g. widenable memory ops to be considered uses of uniform computations. * LVL and LAI's notion refers to all lanes across all unrollings. IsUniformMem is in turn defined in terms of LAI's notion. Thus a UniformMemOpmeans is a memory operation with a loop invariant address. This means the same address is accessed in every iteration. The tweaked piece of code was trying to match a uniform mem op (i.e. fully loop invariant address), but instead checked for LV's notion of uniformity. In theory, this meant with UF > 1, we could speculate a load which wasn't safe to execute. This ends up being mostly silent in current code as it is nearly impossible to create the case where this difference is visible. The closest I've come in the test case from 54cb87, but even then, the incorrect result is only visible in the vplan debug output; before this change we sink the unsafely speculated load back into the user's predicate blocks before emitting IR. Both before and after IR are correct so the differences aren't "interesting". The other test changes are uninteresting. They're cases where LV's uniform analysis is slightly weaker than SCEV isLoopInvariant.
-
Philip Reames authored
This a reproducer for bug in predicated instruction handling. The final result code is correct, but the reasoning by which we get there isn't.
-
Craig Topper authored
We can always fold zext.b since it is just andi. The others require Zba/Zbb. Reviewed By: reames Differential Revision: https://reviews.llvm.org/D130302
-
Alexander Shaposhnikov authored
Relax the check to allow evaluation of atomic loads (but still skip volatile loads). Test plan: 1/ ninja check-llvm check-clang 2/ Bootstrapped LLVM/Clang pass tests Differential revision: https://reviews.llvm.org/D130211
-
LLVM GN Syncbot authored
-
Augusto Noronha authored
This reverts commit 23cf42e7.
-
LLVM GN Syncbot authored
-
Daniel Thornburgh authored
-
Chi Chun Chen authored
-
Joseph Huber authored
Summary: Some of the buildbots don't find the libraries because they don't build for the GPU. Although it should always be there it's unclear why these buildbots are having problemsd. LTO is only interesting on the GPU and these tests take extra time anyway so I'm just going to disable them for now.
-
Teresa Johnson authored
Adds a number of utilities that are used to help create and update memprof related metadata. These will be used during profile matching and annotation, as well as by the inliner when updating the metadata. Also adds unit tests for the utilities. See also related RFCs: RFC: Sanitizer-based Heap Profiler [1] RFC: A binary serialization format for MemProf [2] RFC: IR metadata format for MemProf [3] (Note that the IR metadata format has changed from the RFC during implementation, as described in the preceeding patch adding the basic metadata and verification support.) Depends on D128141. Differential Revision: https://reviews.llvm.org/D128854
-
Sam McCall authored
After this, NUMERIC_CONSTANT and strings should parse only one way. There are 8 types of literals, and 24 valid (literal, TokenKind) pairs. This means adding 8 new named guards (or 24, if we want to assert the token). It seems fairly clear to me at this point that the guard names are unneccesary indirection: the guards are in fact coupled to the rule signature. (Also add the zero guard I forgot in the previous patch.) Differential Revision: https://reviews.llvm.org/D130066
-
Ziqing Luo authored
message expressions For an Obj-C message expression `[o m]`, the adding matcher will match the declaration of the method `m`. This commit overloads the existing `callee` ASTMatcher, which originally was only for C/C++ nodes but also applies to Obj-C messages now. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D129398
-
Siva Chandra Reddy authored
Printf's integer converter has been modified to use the new converter. In future, it will be used to implement other parts of the libc. Reviewed By: michaelrj Differential Revision: https://reviews.llvm.org/D130227
-
Martin Storsjö authored
If we build the Target libraries with -fvisibility=hidden, then LLVM_EXTERNAL_VISIBILITY must also be able to override it back to default visibility. Currently, the LLVM_EXTERNAL_VISIBILITY define is a no-op for mingw targets, thus set CMAKE_CXX_VISIBILITY_PRESET correspondingly. This unbreaks the mingw dylib build, if the compiler actually takes hidden visiblity into account (e.g. after D130121). (Later, once hidden visiblity can be used for MinGW targets, we can make LLVM_EXTERNAL_VISIBILITY and LLVM_LIBRARY_VISIBILITY expand to actual attributes, and reverse this commit.) Differential Revision: https://reviews.llvm.org/D130200
-
Philip Reames authored
-
Jacques Pienaar authored
Missed previously and needed to flip the default. Most of these just flipped to _Raw to retain existing state/keep this small except for TOSA dialect which got flipped to _Both as no further change was needed..
-
Augie Fackler authored
-
Augie Fackler authored
This probably should have been part of D123089, but the effects of it don't show up until we start removing functions from the table in D130107. Oops. Differential Revision: https://reviews.llvm.org/D130184
-
Augie Fackler authored
This allows us to accept annotations from out-of-tree languages (the example test is derived from Rust) so they can enjoy the benefits of LLVM's optimizations without requiring LLVM to have language-specific knowledge. Differential Revision: https://reviews.llvm.org/D123091
-
Augie Fackler authored
Prior to this change, we relied on the hard-coded list for all of the information performed by MemoryBuiltins. With this change, we're able to start relying on properites of functions described in attributes, which opens the door to out-of-tree compilers being able to describe their allocator functions to LLVM's optimizer logic without having to register their implementation details with LLVM. Differential Revision: https://reviews.llvm.org/D123090
-
Sanjay Patel authored
[PatternMatch][InstCombine] match a vector with constant expression element(s) as a constant expression The InstCombine test is reduced from issue #56601. Without the more liberal match for ConstantExpr, we try to rearrange constants in Negator forever. Alternatively, we could adjust the definition of m_ImmConstant to be more conservative, but that's probably a larger patch, and I don't see any downside to changing m_ConstantExpr. We never capture and modify a ConstantExpr; transforms just want to avoid it. Differential Revision: https://reviews.llvm.org/D130286
-
Sanjay Patel authored