[AArch64] Improve expansion of immediates with shifted negated components. (#162286)
Improve the expansion of 64-bit immediates that consist of a smaller
immediate shifted and negated with itself. Generally, this allows
materialising the smaller immediate with MOVN+MOVK, and shifting and
negating the result with an EOR or EON, saving a MOVK instruction
compared to expanding the original immediate explicitly.
As a refinement, when the smaller immediate contains a 16-bit chunk of
ones or zeros, the intermediate MOVK can be omitted, also saving a MOVK
compared to the default expansion.
[DA] Add test where inferDomainOfAffine causes overflow (NFC) (#171990)
Add test case where a dependency is missed by Exact SIV test. The root
cause is an overflow in `inferDomainOfAffine`. This will be fixed by
#171991 .
Reland: [ORC] Tailor ELF debugger support plugin to load-address patching only (#169482)
In 4 years the ELF debugger support plugin wasn't adapted to other
object formats or debugging approaches. After the renaming NFC in
https://github.com/llvm/llvm-project/pull/168343, this patch tailors the
plugin to ELF and section load-address patching. It allows removal of
abstractions and consolidate processing steps with the newly enabled
AllocActions from https://github.com/llvm/llvm-project/pull/168343.
The key change is to process debug sections in one place in a
post-allocation pass. Since we can handle the endianness of the ELF file
the single `visitSectionLoadAddresses()` visitor function now, we don't
need to track debug objects and sections in template classes anymore. We
keep using the `DebugObject` class and drop `DebugObjectSection`,
`ELFDebugObjectSection<ELFT>` and `ELFDebugObject`.
Furthermore, we now use the allocation's working memory for load-address
fixups directly. We can drop the `WritableMemoryBuffer` from the debug
object and most of the `finalizeWorkingMemory()` step, which saves one
[4 lines not shown]
[libc++] Use the C++11 syntax for the no_thread_safety_analysis attribute (#171800)
Using the C++11 syntax makes the attribute placement more consistent.
[sancov] Add -diff and -union options to compute set difference and union of sancov files (#171191)
Add two new actions for `.sancov` files:
`-diff`: Computes the difference between two `.sancov` files (A - B) and
writes the result to a new file. Requires exactly two inputs and an
`--output` option. The output preserves the binary format (magic number
and bitness) of the first input.
`-union`: Computes the union of one or more `.sancov` files and writes
the result to a new file. Requires at least one input and an `--output`
option. The output preserves the binary format of the first input.
A warning is shown if input files differ in bitness (32-bit vs 64-bit),
but the operation proceeds using the first file’s bitness.
[mlir][tosa] Extend narrowing pass (#170712)
- unify the i64->i32 and f64->f32 narrowing logic inside the shared
implementation
- register tosa::ConstOp in the non-aggressive rewrite set so standalone
constants are narrowed
---------
Signed-off-by: Vitalii Shutov <vitalii.shutov at arm.com>
Co-authored-by: Luke Hutton <Luke.Hutton at arm.com>
[Clang][C++26] Remove the notion of replaceability. (#172150)
In Kona, WG21 decided to revert trivial relocation (P2786).
Given that the notion of replaceability that was introduced at the same
time does not appear to be used by clang 21 users, and is less likely to
come back, it is easier to fully remove wholesale.
Subsequent patches will deal with relocation.
[NFC] [C++20] [Modules] Add a test for module local template instantiation in namespace
This was found when debugging
https://github.com/llvm/llvm-project/issues/164466
I think more tests are always good. So I want to land this as a
regression check.
[AArch64][GlobalISel] SIMD fpcvt codegen for rounding nodes (#171446)
This is followup to patch to
https://github.com/llvm/llvm-project/pull/165546, which allowed simd
fpcvt instructions to be generated from l/llround and l/llrint nodes.
This patch extends this work to enable simd fpcvt instruction generation
with GlobalISel.
[LangRef] Fix inequalities and add examples for `loop.dependence.*.mask` (#170861)
For both the war/raw mask, `>=` was used where it should have been `>`.
This change matches the current implementation.
The examples added in this patch should help clarify why this change is
needed.
[CGExprScalar] Fix inc/dec of vector larger than 64-bit (#172301)
Use getSigned() to create the 1 or -1 constant, so it gets properly sign
extended.
This miscompile was found while working on
https://github.com/llvm/llvm-project/pull/171456.