[M68k,Xtensa][test] Regenerate tests after LiveVariables removal changes (#233183)
Fix after #229069 (InstrEmitter no longer emits kill flags) and #228618
(LiveIntervals runs before PHIElimination).
x11-themes/cosmic-icons: New port: Icon theme for the COSMIC desktop environment
COSMIC Icons is a set of standard icons for the COSMIC desktop environment.
The icon set also bundles special icons that are used throughout the
COSMIC app ecosystem.
WWW: https://github.com/pop-os/cosmic-icons
PR: 299137
Reported by: Josh Megnauth <jo.sh at tutanota.com> (new maintainer)
[tools] Parse library options into LLVMContext (#233182)
cl::ParseCommandLineOptions sets library options in T::Global, so IR
options will no longer affect them after LLVMCore migrates off cl::opt.
Switch to cl::parseCommandLineOptions.
[libc++] Fix use-after-free during self-assignment (#225296)
The range [data(), data() + size() + 1) points into the string's own
buffer and is one element longer than the capacity when the buffer is
full, so assigning it reallocates:
std::string str;
str.resize(str.capacity(), 'a'); // size() == capacity()
str.assign(str.data(), str.data() + str.size() + 1); // reallocates
__assign_trivial called __grow_by_without_replace up front and read the
range afterwards, by which point the buffer holding it had been
released: that is a heap-use-after-free for a long string, and for a
short string the long representation has been written over the small
buffer the range points into, so the assignment silently stores garbage.
Allocate the new buffer and read the range into it before releasing the
buffer the string holds. That also keeps the range valid in the exotic
case where it is the byte representation of the string object itself,
[14 lines not shown]
emulators/wine-devel: Update 11.19 => 11.20
Changelog:
- Relay debugging for ARM64EC.
- Improvements in XML validation.
- CDROM support moved to the Mount Manager.
- Various bug fixes.
https://gitlab.winehq.org/wine/wine/-/releases/wine-11.20
PR: 299505
Sponsored by: UNIS Labs (vvd, commit patch)
[lld][MachO][NFC] Don't let the output path trip cstring-dedup.s's check-not (#232631)
The __cstring check uses --implicit-check-not foo/bar, but llvm-objdump
prints the input file's full path first. When that path contains "bar"
(e.g. /home/isanbard/...), the test fails. Pass --no-leading-headers so
the path isn't printed. That also suppresses the "Contents of
(__TEXT,__cstring) section" line, so drop that STR check; --section
already restricts the output to __cstring.
Assisted-by: Claude Opus 5.5
[flang][OpenMP] Don't treat different runtime conditions as subsets
When two METADIRECTIVE candidates have the same score and one selector is
a strict subset of the other, the superset wins. Flang ranks every
runtime condition with the same property, so isStrictSubset saw
different conditions as the same:
!$omp metadirective &
!$omp& when(user={condition(a)}, &
!$omp& implementation={vendor(score(4): llvm)}: taskyield) &
!$omp& when(user={condition(b)}, device={kind(host)}, &
!$omp& implementation={vendor(score(3): llvm)}: taskwait)
Both candidates score 5, and `b` was tested first, so TASKWAIT ran when
both conditions were true. Neither selector is a subset of the other, so
clause order should decide.
This patch adds a UserCondition key to VariantMatchInfo, and
isStrictSubset requires equal keys when the first selector has a
[9 lines not shown]
[LFI][MC] Mark .note.LFI.ABI section with SHF_GNU_RETAIN (#233164)
Sections in a COMDAT group are subject to garbage collection during
linking when `--gc-sections` is enabled (even SHT_NOTE sections).
Because nothing references `.note.LFI.ABI.<arch>`, the deduplicated note
was previously removed by the linker with `-Wl,--gc-sections`.
Add `SHF_GNU_RETAIN` to `.note.LFI.ABI.<arch>` so that linkers recognize
it as a GC root while still deduplicating it via COMDAT.
Fixes #233086.
[libc][math] Add integer-only implementation for exp2f.
- Correctly rounded to all rounding mode (statically).
- Share core computations with expf integer-only static-rounding version
- Optimize for code size.
Assisted-by: Gemini for analysis and refactoring.
[libc] Add floating-point bitwise operations to FPUtil.
Add `fp_and`, `fp_or`, `fp_xor`, `fp_andnot`, and `fp_not` to
`src/__support/FPUtil/fp_bitwise.h` to perform bitwise operations on
floating-point values directly in FP/SIMD registers when SSE2 or AArch64 NEON
is available, avoiding GPR round-trips.
[mlir][ArithToLLVM] Preserve defined signed remainder by -1
Select a zero dividend when the divisor is -1 before emitting llvm.srem.
This preserves arith.remsi(INT_MIN, -1) == 0 without introducing LLVM UB.
Support scalar and vector operands, including multidimensional vectors.
Add regression coverage to the existing ArithToLLVM conversion test.
Tests were not run as requested.
[libc][NFC] Fix typo 'implemenation' in comments (#233089)
Fix the misspelling "implemenation" -> "implementation" in comments in
libc/src/__support/mathvec/*.h and libc/src/string/string_length.h.
No functional change.
[clang][Driver] Honor `--offload-jobs` in device-only compilation
`--offload-jobs=N` runs independent device compilations in parallel, but
it had no effect when only device code is compiled; multi-target
device-only builds still compiled each target one at a time.
Two things got in the way. The device-only compile produces an object
directly, and that step was not treated as one that can run in parallel.
Each target's compile is also followed by its own device link, so the
compiles that could run together are not next to each other, and only
neighboring steps were grouped for parallel execution.
Treat the object-producing device compile as parallelizable, and group
same-kind compiles even when other independent steps sit between them.
The grouped compiles do not depend on those in-between steps, so the
output is unchanged and only the build time drops.
[llvm-reduce] Parse library options into LLVMContext (#233162)
cl::ParseCommandLineOptions sets library options in T::Global,
no longer read by LibraryOptionsContext::get since #233044.
Switch to cl::parseCommandLineOptions.
[mlir][ArithToLLVM] Preserve defined signed remainder by -1
Select a zero dividend when the divisor is -1 before emitting llvm.srem.
This preserves arith.remsi(INT_MIN, -1) == 0 without introducing LLVM UB.
Support scalar and vector operands, including multidimensional vectors.
Add regression coverage to the existing ArithToLLVM conversion test.
Tests were not run as requested.
[libc++] Granularize <execution> (#229315)
Move execution policies into `__execution/execution_policies.h`
to separate them from upcoming C++26 sender/receiver components.
Also move `__type_traits/is_execution_policy.h` into `__execution`
directory.
This is a prerequisite for #229095.
[OpenMP] Fix construct context at TARGET and repeated-construct subsets
OMPContext has two bugs in how construct selectors are matched. Both can
select the wrong variant:
- The construct context should start at the innermost enclosing TARGET,
but Clang and Flang add every enclosing construct. Inside a TARGET
region nested in a PARALLEL, construct={parallel} matched the outer
PARALLEL. OMPContext::addTrait now drops the constructs recorded before
a target trait.
- A selector that only repeats a construct, such as
construct={parallel do, parallel} over construct={parallel do}, adds no
property. isStrictSubset required fewer properties, so a score tie
between the two fell back to clause order. A shorter ordered construct
sequence now also makes a strict subset. If the shorter selector has a
user condition, or an ISA name the longer one lacks, the tie still falls
back to clause order, since different conditions or ISA names share one
property.
[9 lines not shown]
libthr: Remove deadcode in join_common
The while loop previous can only be break when ret == ETIMEDOUT. They
never produce EBUSY. Remove the deadcode here.
Reviewed by: kib
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D60711