- May 07, 2024
-
-
Florian Mayer authored
This reverts commit 0dbd804a.
-
Alexander Yermolovich authored
We need to update DW_AT_comp_dir/DW_AT_dwo_name TU in the .debug_info.dwo section so that the path is correct. Refactored helper functions to make it easier for next step.
-
Brandt Bucher authored
This uses non-volatile registers for the first four (six on Windows) registers used for `preserve_none` argument passing. This allows these registers to stay "pinned", even if the body of the `preserve_none` function contains calls to other "normal" functions. Example: ```c void boring(void); __attribute__((preserve_none)) void (continuation)(void *, void *, void *, void *); __attribute__((preserve_none)) void entry(void *a, void *b, void *c, void *d) { boring(); __attribute__((musttail)) return continuation(a, b, c, d); } ``` Before: ```asm pushq %rax movq %rcx, %rbx movq %rdx, %r14 movq %rsi, %r15 movq %rdi, %r12 callq boring@PLT movq %r12, %rdi movq %r15, %rsi movq %r14, %rdx movq %rbx, %rcx popq %rax jmp continuation@PLT ``` After: ```asm pushq %rax callq boring@PLT popq %rax jmp continuation@PLT ``` -
Chris authored
This change updates the logic that determines whether an `emitc.expression` result is translated into a dedicated variable assignment. Due to how the translation of `emitc.subscript` currently works, a previously inline-able `emitc.expression` would produce incorrect C++ if its single user was a `emitc.subscript` operation.
-
David Green authored
This removes the GISel versions of isREVMask, isTRNMask, isUZPMask and isZipMask. They are combined with the existing versions from SDAG into AArch64PerfectShuffle.h.
-
Fangrui Song authored
-
Simon Pilgrim authored
This appears to have been missed because later cpus don't inherit from Nehalem tuning much. Noticed while cleaning up for #90985
-
Alexey Bataev authored
Need to use the last address of the vectorized stores for the strided stores, not the first one, to correctly store the data.
-
Andy Kaylor authored
This change refactors RenderFloatingPointOptions() to eliminate some excessively complicated logic and a redundant switch statement. The logic being simplified is an artifact of the original -ffp-model implementation, and over time it has become unnecessary. The handling of diagnostics related to the -ffp-contract option is still a bit convoluted after this change. I will address that in a subsequent patch because I think it will make sense to make some minor changes to the driver behavior when that is cleaned up. The current patch should not make any change to observable behavior of the driver.
-
Alex Langford authored
I was cleaning up this portion of the code and realized these are completely unused.
-
alx32 authored
In some cases we see strings from categories being part of "data" sections (Ex:`__objc_const`), not part of of sections marked as `cstring_literals`. Since lld treats these sections differently we need to explicitly implement support for reading strings from the non-`cstring_literals` sections. Adding a test that previously would result in an assert.
-
alx32 authored
When generating categories, clang sometimes will generate references in the `.addrsig` section to the various category data items. Since we may erase such items after merging them, we also need to remove them from the `.addrsig` section - otherwise this will cause runtime asserts with the `.addrsig` section trying to access invalid data. Implementation wise, we use a hashset to keep track of all erased `InputSection`'s and then go through all `.addrsig` sections and remove references to any erased `InputSection`.
-
Luke Lau authored
Currently RISCVDeadRegisterDefinitions runs after vsetvli insertion, but in #70549 vsetvli insertion runs after vector regalloc and as a result we no longer convert some vsetvli a0, a0s to vsetvli x0, a0. This patch moves it to after vector regalloc, but before scalar regalloc so we still get the benefits of reducing register pressure.
-
Leandro Lupori authored
-
erichkeane authored
These two are very similar to the other 'var-list' variants, except they require that the type of the variable be a pointer. This patch implements that restriction.
-
David Green authored
-
Leandro Lupori authored
Besides duplicating code, privatizing variables in every section causes problems when synchronization barriers are used. This happens because each section is executed by a given thread, which will cause the program to hang if not all running threads execute the barrier operation. Fixes https://github.com/llvm/llvm-project/issues/72824
-
Luke Lau authored
Because LiveVariables has been run, we no longer need to lookup the users in MachineRegisterInfo anymore and can instead just check for the dead flag.
-
- May 06, 2024
-
-
Congcong Cai authored
-
Alexey Bataev authored
Need to check that the signed operand has an extra sign bit to be sure that we do not skip signedness, when trying to minimize bitwidth for smin/smax intrinsics.
-
Alexey Bataev authored
-
Franklin Zhang authored
Fix the issue that `char` constants are converted to `uint64_t` in the wrong way when doing the inlining.
-
David Tenty authored
This reverts commit 11066449. As noted in the original patch, this was designed to reverted once https://reviews.llvm.org/D142479 and https://reviews.llvm.org/D142660 landed, which has long since happened.
-
Zequan Wu authored
`SBProcess::GetMemoryRegionInfo` uses `qMemoryRegionInfo` packet to get memory region info, but this is not supported in gdb-server and causing downstream lldb test failures. This change ignores the the error from `SBProcess::GetMemoryRegionInfo` . Reported by @tedwoodward @jerinphilip.
-
Jan Voung authored
Revert "Reapply "Use an abbrev to reduce size of VALUE_GUID records in ThinLTO summaries" (#90610)" (#91194) Reverts llvm/llvm-project#90692 Breaking PPC buildbots. The bots are not meant to test LLD, but are running a test that is using an old version of LLD without the change (so is incompatible). Revert until a fix is found.
-
Michael Flanders authored
Adds more FP test macros for the upcoming test adds for #61092 and the issues opened from it: #88768, #88769, #88770, #88771, #88772. Fix bug in `{EXPECT,ASSERT}_FP_EXCEPTION`. `EXPECT_FP_EXCEPTION(0)` seems to be used to test that an exception did not happen, but it always does `EXPECT_GE(... & 0, 0)` which never fails. Update and refactor tests that break after the above bug fix. An interesting way things broke after the above change is that `ForceRoundingMode` and `quick_get_round()` were raising the inexact exception, breaking a lot of the `atan*` tests. The changes for all files other than `FPMatcher.h` and `libc/test/src/math/smoke/RoundToIntegerTest.h` should have the same semantics as before. For `RoundToIntegerTest.h`, lines 56-58 before the changes do not always hold since this test is used for functions with different exception and errno behavior like `lrint` and `lround`. I've deleted those lines for now, but tests for those cases should be added for the different nearest int functions to account for this. Adding @nickdesaulniers for review. -
Danny Mösch authored
Fixes #90285.
-
martinboehme authored
This relands #90348 with a fix for a [buildbot failure](https://lab.llvm.org/buildbot/#/builders/216/builds/38446) caused by the test being run with `-fno-rtti`.
-
Florian Hahn authored
Pre-commit tests for an upcoming patch.
-
Chris authored
An `emitc.expression` can only yield a single result, but some operations which have the `CExpression` trait can have multiple results, which can result in a crash when applying the `fold-expressions` pass. This change adds a check for the single-result condition and a simple test.
-
Yuanqiang Liu authored
-
Florian Hahn authored
-
Michael Kruse authored
Plugins are not loaded without the -cc1 phase. Do not report them when running on an assembly file or when linking. Many build tools add these options to all driver invocations, including LLVM's build system. Fixes #88173
-
Leandro Lupori authored
Fixes https://github.com/llvm/llvm-project/issues/78936
-
Leandro Lupori authored
Handle implicit firstprivate DSAs on task generating constructs. Fixes https://github.com/llvm/llvm-project/issues/64480
-
Jie Fu authored
llvm-project/llvm/lib/Target/X86/X86ISelLowering.cpp:3582:13: error: unused function 'isBlendOrUndef' [-Werror,-Wunused-function] static bool isBlendOrUndef(ArrayRef<int> Mask) { ^ 1 error generated. -
Jie Fu authored
llvm-project/llvm/lib/Target/X86/X86ISelLowering.cpp:40081:21: error: comparison of integers of different signs: 'int' and 'unsigned int' [-Werror,-Wsign-compare] for (int I = 0; I != NumElts; ++I) { ~ ^ ~~~~~~~ 1 error generated. -
Xing Xue authored
The destructors generated by the legacy IBM `xlclang++` compiler can take 1 or 2 arguments and the differences were handled by type `cast` where it is needed. Clang now treats the `cast` here as an error after https://github.com/llvm/llvm-project/commit/999d4f840777bf8de26d45947192aa0728edc0fb landed with `-Xextra -Werror`. The issue had been worked around by using `#pragma GCC diagnostic push/pop`. This patch defines 2 separate destructor types for 1 argument and 2 arguments respectively so `cast` is not needed.
-
Hans Wennborg authored
Followup to #89727
-
Simon Pilgrim authored
If we don't demand the same element from both single source shuffles (permutes), then attempt to blend the sources together first and then perform a merged permute. For vXi16 blends we have to be careful as these are much more likely to involve byte/word vector shuffles that will result in the creation of additional shuffle instructions. This fold might be worth it for VSELECT with constant masks on AVX512 targets, but I haven't investigated this yet, but I've tried to write combineBlendOfPermutes so to be prepared for this. The PR34592 -O0 regression is an unfortunate failure to cleanup with a later pass that calls SimplifyDemandedElts like the -O3 does - I'm not sure how worried we should be tbh.
-