- Sep 10, 2021
-
-
Louis Dionne authored
[libc++][NFC] Remove remnants of _LIBCPP_HAS_NO_STDOUT, which should have been removed by 87dd5198
-
Saiyedul Islam authored
Sphinx was giving warning on unescaped special symbol *. It was an issue on systems treating warning as error.
-
Simon Pilgrim authored
As reported on PR51796, the _mm256_loadu2_m128i in particular was inserting bitcasts and shuffles with different types making it trickier for some combines, and prevented the value tracker from identifying the shuffle sequences as a single insert_subvector style concat_vectors pattern. This patch instead concatenate the 128-bit unaligned loads with _mm256_set_m128*, which was written to avoid the unnecessary bitcasts and only emits a single shuffle. Differential Revision: https://reviews.llvm.org/D109497
-
Louis Dionne authored
-
Louis Dionne authored
Also, include <type_traits> unconditionally. There really isn't much of a benefit in skipping it when exceptions are disabled.
-
Craig Topper authored
Followup to D109483
-
Stella Stamenova authored
The original change to add the workaround is from 10 years ago and a lot has happened with msvc and cmake and llvm's usage of cmake since and we no longer need the workaround for any scenarios that I am aware of. Build more is now correctly configured for multi-configuration generators such as Visual Studio. The workaround is, however, causing issues with some of the recent mlir tests as because of the workaround we cannot correctly determine whether assertions are enabled (see https://reviews.llvm.org/D105961). The original change is: ``` commit b46fdac4 Author: Andrew Trick <atrick@apple.com> Date: Tue Jun 28 16:32:01 2011 cmake: Our MSVC build does not support config-time build mode. llvm-svn: 134008 ``` Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D109521
-
Nick Desaulniers authored
Follow up to suggestions in D109103 via hans: I think UnreachableDefault (or UnreachableFallthrough) would be a better name now, since it doesn't just omit the range check, it also omits the last bit test. Reviewed By: hans Differential Revision: https://reviews.llvm.org/D109455
-
Louis Dionne authored
-
Louis Dionne authored
-
Louis Dionne authored
This will simplify an upcoming diff.
-
Chris Lattner authored
-
Craig Topper authored
This library function only exists in compiler-rt not libgcc. So this would fail to link unless we were linking with compiler-rt. This is consistent with the recent removal of calls to mulodi4 on 32-bit targets like D108928. I suppose maybe we could keep the libcalls for platforms like Darwin that use compiler-rt exclusively? Reviewed By: nickdesaulniers, MaskRay Differential Revision: https://reviews.llvm.org/D109385
-
Chris Lattner authored
This renames the primary methods for creating a zero value to `getZero` instead of `getNullValue` and renames predicates like `isAllOnesValue` to simply `isAllOnes`. This achieves two things: 1) This starts standardizing predicates across the LLVM codebase, following (in this case) ConstantInt. The word "Value" doesn't convey anything of merit, and is missing in some of the other things. 2) Calling an integer "null" doesn't make any sense. The original sin here is mine and I've regretted it for years. This moves us to calling it "zero" instead, which is correct! APInt is widely used and I don't think anyone is keen to take massive source breakage on anything so core, at least not all in one go. As such, this doesn't actually delete any entrypoints, it "soft deprecates" them with a comment. Included in this patch are changes to a bunch of the codebase, but there are more. We should normalize SelectionDAG and other APIs as well, which would make the API change more mechanical. Differential Revision: https://reviews.llvm.org/D109483
-
Sam Clegg authored
In the case that TLS is used in the single-threaded program, and therefore effectively lowered away, we still optionally create a `__tls_base` symbols, but the code for setting it was assuming it was always created. Differential Revision: https://reviews.llvm.org/D109518
-
Aart Bik authored
new flag requirements crossed the checkin of this new test Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D109524
-
Jon Chesterfield authored
The hsa library must be initialized before any calls into it and destructed after the last call into it. There have been a number of bugs in this area related to member variables which would like to use raii to manage resources acquired from hsa. This patch moves the init/shutdown of hsa into a class, such that when used as the first member variable (could be a base), the lifetime of other member variables are reliably scoped within it. This will allow other classes to use raii reliably when used as member variables within the global. Reviewed By: pdhaliwal Differential Revision: https://reviews.llvm.org/D109512
-
Fangrui Song authored
llvm::errs() is unbuffered. On a POSIX platform, composing a diagnostic string may invoke the ::write syscall multiple times, which can be slow. Buffer writes to a temporary SmallString when composing a single diagnostic to reduce the number of ::write syscalls to one (also easier to read under strace/truss). For an invocation of ld.lld with 62000+ lines of `ld.lld: warning: symbol ordering file: no such symbol: ` warnings (D87121), the buffering decreases the write time from 1s to 0.4s (for /dev/tty) and from 0.4s to 0.1s (for a tmpfs file). This can speed up `relocation R_X86_64_PC32 out of range` diagnostic printing as well with `--noinhibit-exec --no-fatal-warnings`. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D87272
-
Neumann Hon authored
This patch adds class SystemZFrameLowering which is a SystemZ-specific class detailing special registers used by calling conventions on the target. SystemZELFFrameLowering and SystemZXPLINKFrameLowering implement this class for ELF and XPLINK64 respectively. Previous functionality in SystemZFrameLowering is moved to SystemZELFFrameLowering. SystemZXPLINKFrameLowering can then be implemented in future patches. Reviewed By: uweigand, Kai Differential Revision: https://reviews.llvm.org/D108777
-
Jon Chesterfield authored
Given D109057, change test runner to use the libomptarget-x-bc-path argument instead of the LIBRARY_PATH environment variable to find the device library. Also drop the use of LIBRARY_PATH environment variable as it is far too easy to pull in the device library from an unrelated toolchain by accident with the current setup. No loss in flexibility to developers as the clang commandline used here is still available. Reviewed By: jdoerfert, tianshilei1992 Differential Revision: https://reviews.llvm.org/D109061
-
- Sep 09, 2021
-
-
Ryan Mansfield authored
Reviewed By: teemperor Differential Revision: https://reviews.llvm.org/D109508
-
Akira Hatanaka authored
module lookup by name alone This removes the need to create a fake source file that imports a module. rdar://64538073 Differential Revision: https://reviews.llvm.org/D109485
-
Kazu Hirata authored
-
Aart Bik authored
Further enhance the set of operations that can be handled by the sparse compiler Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D109413
-
Nathan Sidwell authored
Extends handling of list initialization of bounded array parameters. This adds the missing checks on converting each initializer for both std::initializer_list and arrays. And extends CompareImplicitConversionSequence to compares array size, for two conversions to array type. As noted in this patch, there's a defect in the std concerning the partial orderability of conversion sequences. DR2492 has a suggested direction that will be simple to add once it (hopefully) is accepted. Differential Revision: https://reviews.llvm.org/D103088
-
Louis Dionne authored
We generally don't put a comment on the #endif when the #if block is so small that it's unambiguous what the #endif refers to.
-
Louis Dionne authored
-
LLVM GN Syncbot authored
-
Jon Chesterfield authored
-
Louis Dionne authored
Thanks to Arthur O'Dwyer for fixing up some of the tests. Differential Revision: https://reviews.llvm.org/D75960
-
Alex Zinenko authored
Conversion to the LLVM dialect is being refactored to be more progressive and is now performed as a series of independent passes converting different dialects. These passes may produce `unrealized_conversion_cast` operations that represent pending conversions between built-in and LLVM dialect types. Historically, a more monolithic Standard-to-LLVM conversion pass did not need these casts as all operations were converted in one shot. Previous refactorings have led to the requirement of running the Standard-to-LLVM conversion pass to clean up `unrealized_conversion_cast`s even though the IR had no standard operations in it. The pass must have been also run the last among all to-LLVM passes, in contradiction with the partial conversion logic. Additionally, the way it was set up could produce invalid operations by removing casts between LLVM and built-in types even when the consumer did not accept the uncasted type, or could lead to cryptic conversion errors (recursive application of the rewrite pattern on `unrealized_conversion_cast` as a means to indicate failure to eliminate casts). In fact, the need to eliminate A->B->A `unrealized_conversion_cast`s is not specific to to-LLVM conversions and can be factored out into a separate type reconciliation pass, which is achieved in this commit. While the cast operation itself has a folder pattern, it is insufficient in most conversion passes as the folder only applies to the second cast. Without complex legality setup in the conversion target, the conversion infra will either consider the cast operations valid and not fold them (a separate canonicalization would be necessary to trigger the folding), or consider the first cast invalid upon generation and stop with error. The pattern provided by the reconciliation pass applies to the first cast operation instead. Furthermore, having a separate pass makes it clear when `unrealized_conversion_cast`s could not have been eliminated since it is the only reason why this pass can fail. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D109507
-
Hansang Bae authored
Fixed code that exceeds 72-column. Differential Revision: https://reviews.llvm.org/D109469
-
Uday Bondhugula authored
Fix extra space print for llvm global op when the 'unamed_addr' attribute was empty. This led to two spaces being printed in the custom form between non-whitespace chars. A round trip would add an extra space to a typical spaced form. NFC. Differential Revision: https://reviews.llvm.org/D109502
-
Sam Clegg authored
As before we maintain backwards compat with older object files by also infering the TLS flag based on the name of the segment. This change is was split out from https://reviews.llvm.org/D108877. Differential Revision: https://reviews.llvm.org/D109426
-
Louis Dionne authored
-
Louis Dionne authored
Once all the bots are passing with from-scratch configs, we can attempt to make the from-scratch config the default configuration. Differential Revision: https://reviews.llvm.org/D103417
-
Sanjay Patel authored
The motivating case is an infinite loop shown with a reduced test from: https://llvm.org/PR51762 To solve this, I'm proposing we delete the most obviously broken part of this code. The bug example shows a fundamental problem: we ask computeKnownBits if a transform will be profitable, alter the code by creating new instructions, then rely on computeKnownBits to return the same answer to actually eliminate instructions. But there's no guarantee that the results will be the same between the 1st and 2nd calls. In the infinite loop example, we get different answers, so we add instructions that conflict with some other transform, and we're stuck. There's at least one other problem visible in the test diff for `@zext_or_masked_bit_test_uses`: the code doesn't check uses properly, so we can end up with extra instructions created. Last, it's not clear if this set of transforms actually improves analysis or codegen. I spot-checked a few targets and don't see a clear win: https://godbolt.org/z/x87EWovso If we do see a regression from this change, codegen seems like the right place to add a cmp -> bit-hack fold. If this is too big of a step, we could limit the computeKnownBits calls by not passing a context instruction and/or limiting the recursion. I checked that those would stop the infinite loop for PR51762, but that won't guarantee that some other example does not fall into the same loop. Differential Revision: https://reviews.llvm.org/D109440
-
Corentin Jabot authored
P0692R1 was implemented in https://reviews.llvm.org/D92024 but the status page was not updated.
-
Louis Dionne authored
It was added after we changed the way the CI jobs are run, in particular how they are pinned down to Linux instances only. As a result, the job would sometimes run on Mac machines, which we're trying to keep only for jobs that absolutely need it due to capacity concerns.
-
Florian Mayer authored
this makes the code slightly more readable. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D109442
-