- Sep 08, 2021
-
-
Aart Bik authored
Perhaps one of these days I will actually learn how to spell opaque.... Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D109391
-
Siva Chandra Reddy authored
-
Nico Weber authored
This reverts commit 6be7f5c3. We'll need this file eventually, but it in fact shouldn't have been in cfe02847. It's currently unreferenced.
-
Nico Weber authored
-
Rainer Orth authored
Many `flang` tests currently `FAIL` on Solaris because the module files aren't found. I could trace this to `sys::fs::getMainExecutable` not being implemented. This patch does this and fixes all affected `flang` tests. Tested on `amd64-pc-solaris2.11`. Differential Revision: https://reviews.llvm.org/D109374
-
Philip Reames authored
Follow on to D109029. I realized we had no mention of mustprogrress in the comment (as it prexisted mustprogress in the codebase). In the process of adding it, I tweaked the preconditions into something I think is more clear. Note that mustprogress is checked in the code. Differential Revision: https://reviews.llvm.org/D109091
-
Mehdi Amini authored
This prints a more helpful error for folks who aren't intrinsically familiar with the system. Differential Revision: https://reviews.llvm.org/D109378
-
Geoffrey Martin-Noble authored
Right now all but the last bullet are relying on applied "must not" that isn't there and the last bullet is a "must". Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D109389
-
Sanjay Patel authored
This could go either direction since the instruction count is the same either way, but there are a few reasons to prefer this: 1. We already do the related transform with 'and' (see just above the new code). 2. We try (too hard) to compensate for not having this and possibly other folds in transformZExtICmp(), and that leads to bugs like https://llvm.org/PR51762 . 3. Codegen looks better across a variety of targets. https://alive2.llvm.org/ce/z/uEgn4P
-
Sanjay Patel authored
-
Roman Lebedev authored
-
Roman Lebedev authored
-
Irina Dobrescu authored
This patch adds improvements for sext/zext of a vector extract in Global ISel. For example, this piece of code: define i64 @si64(<4 x i32> %0, i32 %1) { %3 = extractelement <4 x i32> %0, i64 1 %s = sext i32 %3 to i64 ret i64 %s } Used to have this lowering: si64: mov s0, v0.s[1] fmov w8, s0 sxtw x0, w8 ret Whereas this patch makes it lower to this: si64: smov x0, v0.h[0] ret Differential Revision: https://reviews.llvm.org/D108137 -
Roman Lebedev authored
-
Nico Weber authored
The public header lldb/include/lldb/Host/XML.h includes libxml/xmlreader.h, so this must be a public dep.
-
Nico Weber authored
-
Roman Lebedev authored
-
Nico Weber authored
-
Nico Weber authored
-
Louis Dionne authored
This was manually taken from https://llvm.org/D100311.
-
Nico Weber authored
This is enough to get the lit-based tests to pass on macOS. Doesn't yet add build targets for: - Any LLDB unit tests - swig bindings - various targets not needed by lit tests LLDB has many dependency cycles, something GN doesn't allow. For that reason, I've omitted some dependency edges. Hopefully we can clean up the cycles one day. LLDB has a public/private header distinction, but mostly ignores it. Many libraries include private headers from other modules. Since LLDB is the first target the LLVM/GN build that uses Objective-C++ code, add some machinery to the toolchain file to handle that. Differential Revision: https://reviews.llvm.org/D109185
-
Arthur Eubanks authored
Index is 0 when the return value has the returned attribute. But the return value cannot have the returned attribute, so the check is pointless. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D109334
-
Elliot Saba authored
On X86, the stackprobe emission code chooses the `R11D` register, which is illegal on i686. This ends up wrapping around to `EBX`, which does not get properly callee-saved within the stack probing prologue, clobbering the register for the callers. We fix this by explicitly using `EAX` as the stack probe register. Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D109203
-
Ye Luo authored
What is exactly needed is only a boolean. Pulling OFFLOAD_SUCCESS/FAIL only adds confusion. Differential Revision: https://reviews.llvm.org/D109303
-
Nikita Popov authored
Functions can have a personality function, as well as prefix and prologue data as additional operands. Unused operands are assigned a dummy value of i1* null. This patch addresses multiple issues in use-list order preservation for these: * Fix verify-uselistorder to also enumerate the dummy values. This means that now use-list order values of these values are shuffled even if there is no other mention of i1* null in the module. This results in failures of Assembler/call-arg-is-callee.ll, Assembler/opaque-ptr.ll and Bitcode/use-list-order2.ll. * The use-list order prediction in ValueEnumerator does not take into account the fact that a global may use a value more than once and leaves uses in the same global effectively unordered. We should be comparing the operand number here, as we do for the more general case. * While we enumerate all operands of a function together (which seems sensible to me), the bitcode reader would first resolve prefix data for all function, then prologue data for all functions, then personality functions for all functions. Change this to resolve all operands for a given function together instead. Differential Revision: https://reviews.llvm.org/D109282
-
Arthur Eubanks authored
-
Nikita Popov authored
Support opaque pointers in SymbolicallyEvaluateGEP() by using the value type of a GlobalValue base or falling back to i8 if there isn't one. We don't unconditionally generate i8 GEPs here because that would lose inrange attribues, and because some optimizations on globals currently rely on GEP types (e.g. the globals SROA mentioned in the comment). Differential Revision: https://reviews.llvm.org/D109297
-
Andy Kaylor authored
Copying IR during linking causes a type mismatch due to the field being missing in IRMover/Valuemapper. Adds the full range of typed attributes including elementtype attribute in the copy functions. Patch by Chenyang Liu Differential Revision: https://reviews.llvm.org/D108796
-
Fangrui Song authored
-
Maksim Panchenko authored
Print relocations interleaved with disassembled instructions for executables with relocatable sections, e.g. those built with "-Wl,-q". Differential Revision: https://reviews.llvm.org/D109016
-
Arthur Eubanks authored
We're trying to get the parameter index of sret and see if it's part of a function's varargs. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D109335
-
Roman Lebedev authored
Reland "[InstCombine] Recognize `((x * y) s/ x) !=/== y` as an signed multiplication overflow check (PR48769)" This reverts commit 91f7a4ff, relanding commit 13ec913b. The original commit was reverted because of (essentially) https://bugs.llvm.org/show_bug.cgi?id=35922 which has now been addressed by d0eeb64b.
-
Arthur O'Dwyer authored
These are specced as `inline constexpr auto`; the extra `const` isn't doing anything except being inconsistent with the other CPOs. Now all the implemented CPOs can be detected by git grep 'inline constexpr auto.*fn' ../libcxx/include/ and I think that's beautiful. -
Arthur O'Dwyer authored
There were basically two bugs here: When C++20 `to_address` is called on `int arr[10]`, then `const _Ptr&` becomes a reference to a const array, and then we dispatch to `__to_address<const int(&)[10]>`, which, oops, gives us a `const int*` result instead of an `int*` result. Solution: We need to provide the two standard-specified overloads of `std::to_address` in exactly the same way that we provide two overloads of `__to_address`. When `__to_address` is called on a pointer type, `__to_address(const _Ptr&)` is disabled so we successfully avoid trying to instantiate pointer_traits of that pointer type. But when it's called on an array type, it's not disabled for array types, so we go ahead and instantiate pointer_traits<int[10]>, which goes boom. Solution: We need to disable `__to_address(const _Ptr&)` for both pointer and array types. Also disable it for function types, so that they get the nice error message; and put a test on it. Differential Revision: https://reviews.llvm.org/D109331
-
Joe Loser authored
Add tests showing `span` is trivially_destructible and nothrow_destructible. Note that we do not need to explicitly default the destructor in `span`. Reviewed By: ldionne, Mordante, #libc Differential Revision: https://reviews.llvm.org/D109286
-
Nick Desaulniers authored
Similar to D108842, D108844, and D108926. __has_builtin(builtin_mul_overflow) returns true for 32b x86 targets, but Clang is deferring to compiler RT when encountering long long types. This breaks ARCH=i386 + CONFIG_BLK_DEV_NBD=y builds of the Linux kernel that are using builtin_mul_overflow with these types for these targets. If the semantics of __has_builtin mean "the compiler resolves these, always" then we shouldn't conditionally emit a libcall. This will still need to be worked around in the Linux kernel in order to continue to support these builds of the Linux kernel for this target with older releases of clang. Link: https://bugs.llvm.org/show_bug.cgi?id=28629 Link: https://bugs.llvm.org/show_bug.cgi?id=35922 Link: https://github.com/ClangBuiltLinux/linux/issues/1438 Reviewed By: lebedev.ri, RKSimon Differential Revision: https://reviews.llvm.org/D108928
-
peter klausler authored
Implement IEEE Real::SQRT() operation, then use it to also implement Real::HYPOT(), which can then be used directly to implement Complex::ABS(). Differential Revision: https://reviews.llvm.org/D109250
-
Nico Weber authored
No observable behavior change, but makes the generated Plugins.def a bit easier to read. Differential Revision: https://reviews.llvm.org/D109367
-
Alex Zinenko authored
The lowering has been incorrectly using the operands of the original op instead of rewritten operands provided to matchAndRewrite call. This may lead to spurious materializations and generally invalid IR. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D109355
-
Alexandre Rames authored
Use the `HBuilder` interface to provide default implementations of `llvm::hash_value`. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D109024
-