[clang][test] Remove unnecessary `FileManager` arguments (#225467)
This test was introduced in commit
dfffaf579f2b4bc9184c23f271a57e1fa1ed6f01 and wrongly passed the file
size and modification time to a lookup function that takes two bools.
This PR fixes that by removing the superfluous arguments.
[ConstraintElim] Link values to decompositions during queries if needed. (#224623)
Decomposition is context sensitive and uses information at the query
point to determine if operations have the required wrap flags.
This can lead to situation where at the time facts are added, we fail to
decompose an operation (like `%y = add %x, 1`), and only add it as
variable `%y`.
If at query time, we can decompose `%y`, the query will contains `%x`
and `1`
as variable/constant, with no connection to the fact added earlier.
This can pessimize results in some cases. To avoid this, add additional
rows connecting the variable and the decomposition (e.g.` %y ==
decompose
(add %x, 1))` and re-try the query.
For now, only check top-level operands. This helps with a few cases in
[13 lines not shown]
[TableGen][AMDGPU][RFC] Write register names rather than return them
MCRegisterInfo::getName() and TargetRegisterInfo::getRegAsmName()
return a std::string, which every caller pays for whether or not it
needs one. Replace them with printName() and printRegAsmName(), which
take the stream to write to.
Most callers print the name and are done, and they now write it where
it goes. Where a name goes in the middle of a message, the statement
that built the message becomes several. The callers that do need the
name as a string keep one in a local variable and write into that;
those that look a name up, among them the MIR parser building its map
of every register, reuse one SmallString across the lookups and
allocate less than they did.
DIDumpOptions::GetNameForDWARFReg takes a stream too and says whether
it wrote a name, which its callers used to ask by testing the returned
StringRef for emptiness. The three that fill it in kept a std::string
alive for the StringRef to point at, and no longer need one.
[2 lines not shown]
[FLANG][Semantics] Add check for DATA statement in interface body. (#221397)
Check and reject DATA statements in interface bodies before
lowering. A regression test is also added.
Fixes #219525
[InstCombine] Optimize selects feeding into BinOp (#224478)
Transform:
`(A ? B : C) op (D ? E : F)`
into:
`A ? (B op (D ? E : F)) : (C op (D ? E : F))`
only if D can be implied by A
This allows for more parts of the expression to be predicated, and
allows more CSE and reuse of nodes calculated as part of an exclusive
sum algorithm.
https://alive2.llvm.org/ce/z/Dawj5u
textproc/goldendict-ng: Switch to the latest xapian-core
to restore possibility for installing GoldenDict-ng on Plasma Desktop.
libzim support has to be disabled since libzim port depends on xapian-core14.
PR: 298766
Approved by: eduardo@ (maintainer)
[libc] Add secure_getenv implementation for Linux (#225013)
Add implementation of POSIX.1-2024 secure_getenv for Linux.
* Fullbuild mode only
* Query AT_SECURE from the auxiliary vector, failing closed if missing
or non-zero.
* Add integration test verifying normal operation and secure execution
mode behavior.
Assisted-by: Automated tooling, human reviewed.
[ELF] Range-check the x86-64 GD-to-IE TLS optimizations (#225228)
Add range-checks to relaxTlsGdToIe so that they fail when the
PC-relative displacement is larger than 32-bit (signed). The un-relaxed
paths in X86_64::relocate already do this via checkInt()
Assisted-By: Opus 5
[SLP]Drop unprofitable splat subtrees before the profitability trim
Their reuse pricing distorts the main tree's trim decisions; price the
restored tree from per-node costs on revert instead of incrementally.
Reviewers: bababuck, RKSimon
Pull Request: https://github.com/llvm/llvm-project/pull/224470
[RISCV] Eliminate redundant VSLIDEDOWN_VL/VSLIDEUP_VL pairs (#223863)
Given this pattern
```
%down = RISCVISD::VSLIDEDOWN_VL undef, %val, %shift, %mask, %vl0
%up = RISCVISD::VSLIDEUP_VL %val, %down, %shift, %mask, %vl1
```
We can simplify it with `%val`, as it's doing redundant shifting.
This pattern usually show up when we emit lots of
insert/extract_subvector or concat_vectors while legalizing ops. Since
those ISD will not be cleaned up by any DAG combine, they are
immediately lowered into RISCVISD. This patch adds the missing DAG
combine to clean them up.
[SLP]Vectorize bool-to-bitmask reductions as a bitcast of zero tests
An or-reduction of boolean leaves each shifted by their own bit position
(an array of bools packed into a bitmask) is a bitcast of the per-lane
zero tests to an integer, which the backend lowers to a movmsk (X86).
Emit that instead of the shift and reduce sequence when it is cheaper.
Fixes #41997
Assisted-by: Cursor
Reviewers: RKSimon
Pull Request: https://github.com/llvm/llvm-project/pull/223434
[cmake] Build libxml from source in release (#221365)
With 23.x we started linking a static libxml in release builds to avoid
requiring that to be installed, and the varying names of that library on
different linux distros. That broke more than it fixed because the
static libxml in our docker images are built targeting ICU, and ICU's
shared library version changes quickly, so even between 2 ubuntu
versions the binaries will not work.
With this change we now build from source in the release build, which is
already what windows does, and we disable ICU / iconv since those don't
seem vital for the windows manifest use case. This seems easier than
building a libxml out of band in our CI images that do the release
builds.
Fixes https://github.com/llvm/llvm-project/issues/215764
Assisted-By: codex
[scudo] Skip secondary release if interval greater than current time. (#225242)
If the current time is less than the release interval, the call to
releaseOlderThan wraps around and releases all entries. Skip releasing
when detecting this case.