- Sep 20, 2023
-
-
Yeting Kuo authored
The pr does two things. One is to fix internal compiler error when we need to spill callee saves but none of them is GPR, another is to fix wrong register number for pushed registers are {ra, s0-s11}. -
LLVM GN Syncbot authored
-
Tobias Hieta authored
This helper will format python files with black/darker and C/C++ files with clang-format. The format helper is written so that we can expand it with new formatters in the future like clang-tidy.
-
Matthias Springer authored
When cloning an op, the `notifyOperationInserted` callback is triggered for all nested ops. Similarly, the `notifyOperationRemoved` callback should be triggered for all nested ops when removing an op. Listeners may inspect the IR during a `notifyOperationRemoved` callback. Therefore, when multiple ops are removed in a single `RewriterBase::eraseOp` call, the notifications must be triggered in an order in which the ops could have been removed one-by-one: * Op removals must be interleaved with `notifyOperationRemoved` callbacks. A callback is triggered right before the respective op is removed. * Ops are removed post-order and in reverse order. Other traversal orders could delete an op that still has uses. (This is not avoidable in graph regions and with cyclic block graphs.) Differential Revision: Imported from https://reviews.llvm.org/D144193.
-
Fangrui Song authored
-
Dhruv Chawla authored
This gives an improvement of 0.6%: https://llvm-compile-time-tracker.com/compare.php?from=7d35fe6d08e2b9b786e1c8454cd2391463832167&to=0456c8e8a42be06b62ad4c3e3cf34b21f2633d1e&stat=instructions:u Differential Revision: https://reviews.llvm.org/D158600
-
Dhruv Chawla authored
[InstCombine] Use a cl::opt to control calls to getOrEnforceKnownAlignment in LoadInst and StoreInst This is in preparation for the InferAlignment pass which handles inferring alignment for instructions separately. It is better to handle this as a separate pass as inferring alignment is quite costly, and InstCombine running multiple times in the pass pipeline makes it even more so. Differential Revision: https://reviews.llvm.org/D158527
-
Dhruv Chawla authored
This pass aims to infer alignment for instructions as a separate pass, to reduce redundant work done by InstCombine running multiple times. It runs late in the pipeline, just before the back-end passes where this information is most useful. Differential Revision: https://reviews.llvm.org/D158529
-
Dhruv Chawla authored
These tests are in preparation for the InferAlignment pass. They consist mainly of tests that break when alignment inference is disabled in LoadInst and StoreInst within InstCombine. Differential Revision: https://reviews.llvm.org/D158530
-
Brandon Wu authored
-
Fangrui Song authored
-
martinboehme authored
I've received a report of a null pointer dereference happening on the `LocDst->getType()` dereference. I wasn't unfortunately able to find a repro, but I'd argue the new version is better for the reduced indentation alone.
-
Fangrui Song authored
https://reviews.llvm.org/D75042 added a special case about R_ARM_PCA to relocateNonAlloc. This is untested and actually unused in the wild.
-
Fangrui Song authored
-
Nikolas Klauser authored
This makes it obvious that libc++ is used in an unsupported configuration, and the compiler probably has to be updated. It often happens that people try to use libc++ and don't realize that their compiler is too old. Differential Revision: https://reviews.llvm.org/D158214
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Argyrios Kyrtzidis authored
[DependencyScanningFilesystem] Make sure the local/shared cache filename lookups use only absolute paths (#66122) Previously a relative path would be used as a key for cache lookup and if the same relative path was used from another compiler invocation with a different working directory then the first cache entry was erroneously returned.
-
Yeting Kuo authored
Zcmp push/pop can reduce more code size then save-restore calls. There are two reasons, 1. Call for save-restore calls needs 4-8 bytes, but Zcmp push/pop only needs 2 bytes. 2. Zcmp push/pop can also handles small shift of sp.
-
Pranav Kant authored
https://reviews.llvm.org/D153812 removed this macro from implementations. Clean this up from tests as well.
-
Alex Langford authored
This doesn't seem to be used at all, no need to keep it around.
-
Sergei Barannikov authored
LEA_ADDri and LEAX_ADDri are printed / encoded the same way as ADDri. I had to change the type of simm13Op so that it can be used in both 32- and 64-bit modes. This required the changes in operands of some InstAliases.
-
Joseph Huber authored
Summary: Someone broke this table in the documentation. Fix it by adding the proper spacing.
-
Peiming Liu authored
The use cases of the two operations are largely overlapped, let's simplify it and only use one of them.
-
Jim Ingham authored
to the "testdir" which is the build directory for that test, not the original source directory. That caused subsequent tests to fail.
-
Arthur Eubanks authored
This allows us to not have to pass -mllvm flags to set the large data threshold for (in-LLD/not-distributed) ThinLTO. Follows https://reviews.llvm.org/D52322, which did the same for the code model. Since the large data threshold is tied to the code model and we disallow mixing different code models, do the same for the large data threshold.
-
DianQK authored
Sink common instructions are not always performance friendly. We need to implement hoist common instructions on switch instruction to solve the following problem: ``` define i1 @foo(i64 %a, i64 %b, i64 %c, i64 %d) { start: %test = icmp eq i64 %a, %d br i1 %test, label %switch_bb, label %exit switch_bb: ; preds = %start switch i64 %a, label %bb0 [ i64 1, label %bb1 i64 2, label %bb2 ] bb0: ; preds = %switch_bb %0 = icmp eq i64 %b, %c br label %exit bb1: ; preds = %switch_bb %1 = icmp eq i64 %b, %c br label %exit bb2: ; preds = %switch_bb %2 = icmp eq i64 %b, %c br label %exit exit: ; preds = %bb2, %bb1, %bb0, %start %result = phi i1 [ false, %start ], [ %0, %bb0 ], [ %1, %bb1 ], [ %2, %bb2 ] ret i1 %result } ``` The pre-commit test is D156617. Reviewed By: XChy, nikic Differential Revision: https://reviews.llvm.org/D155711 -
DianQK authored
Pre-commit test for D155711. Differential Revision: https://reviews.llvm.org/D156617
-
Douglas Yung authored
Fix test added in D150987 to account for different path separators which was causing the test to fail on Windows. Should fix https://lab.llvm.org/buildbot/#/builders/216/builds/27535
-
Fangrui Song authored
-
Austin Kerbow authored
Add assembler directives for preloading kernel arguments that correspond to new fields in the kernel descriptor for the length and offset of arguments that will be placed in SGPRs prior to kernel launch. Alignment of the arguments in SGPRs is equivalent to the kernarg segment when accessed via the kernarg_segment_ptr. Kernarg SGPRs are allocated directly after other user SGPRs. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D159459
-
michaelrj-google authored
The list of printf copts available in config.json wasn't working because the printf_core subdirectory was included before the printf_copts variable was defined, making it effectively nothing for the printf internals. Additionally, the tests weren't respecting the flags so they would cause the tests to fail. This patch reorders the cmake in src and adds flag handling in test.
-
Louis Dionne authored
Fixes #66468
-
Louis Dionne authored
Since we are defining these typedefs inside namespace std, we need to refer to ::once_flag (the C Standard Library version). Otherwise 'once_flag' refers to 'std::once_flag', and that's not something we can pass to the C Standard Library '::call_once()' function later on.
-
DianQK authored
Closes #65763. This will provide more opportunities for constant propagation for subsequent optimizations.
-