[Flang] Fix fixed-form OpenMP prescan for continuation lines (#213856)
Fixes #193180
Fixed-form OpenMP sources that split directives across continuation
lines or use column-72 padding failed to parse.
Improve prescan handling for !$omp comment cards, padding continuation,
and blank removal after directive line splicing.
[orc-rt] Add GDBJITRegistrar for debug object registration (#215739)
Ports the executor side of llvm/lib/ExecutionEngine/Orc/TargetProcess/
JITLoaderGDB.cpp to orc-rt, and adds the deregistration that the LLVM
version does not have.
orc_rt::gdb_jit::registerObject / deregisterObject maintain the
process-wide __jit_debug_descriptor list that debuggers implementing the
GDB JIT interface walk to discover JIT'd debug objects. They are exposed
to controllers by sps_ci::addGDBJITRegistrar as the allocation-action
pair orc_rt_ci_aa_sps_GDBJITRegistrar_{register,deregister}, meant to be
attached as a finalize/dealloc pair to the allocation holding the debug
object: dealloc actions run before their slab is unmapped, so
deregistration is guaranteed to happen while the object is still mapped.
Deregistration unlinks the entry, notifies, and only then frees it:
debuggers read symfile_addr out of the entry during the rendezvous, so
it must stay live across the call. The descriptor is afterwards reset to
JIT_NOACTION with a null relevant_entry, rather than being left pointing
[5 lines not shown]
[libc++] Fix `expected::error_or(...) &&` test (#215553)
In tests that should test the `expected::error_or(...) &&` member
function the `e` member is declared as `const`, thus the `const &`
version is used and the `&&` overload stays untested. This PR removes
the `const` specifier from the variable.
mold: updated to 2.42.0
2.42.0
New Features
We have made numerous optimizations throughout the linker during this release cycle. mold 2.42.0 should be noticeably faster than previous versions, especially when linking large programs on machines with many cores.
--pack-dyn-relocs=android and --pack-dyn-relocs=android+relr are now supported. These options encode dynamic relocations in the Android packed relocation format (APS2), which significantly reduces the size of the dynamic relocation table of Android binaries. (59957fc, 7a66f71, 400dfad)
--compress-debug-sections now accepts a compression level, such as zstd:9 or zlib:6. Plain zstd and zlib remain equivalent to zstd:3 and zlib:1, respectively, which were the previous hardcoded defaults. (56fc571, 0420959, 6695f13)
The -w and --no-warnings options are now supported. They suppress warnings and cancel --fatal-warnings, while real errors are still reported. This matches the behavior of lld. (51b9683)
The -Ttext-segment option, which sets the address of the first byte of the text segment, is now supported for compatibility with GNU ld. (ac73431)
mold now supports the SFrame version 3 stack unwinding format. SFrame is a compact alternative to .eh_frame used for asynchronous stack unwinding by profilers and debuggers. As of binutils 2.46, the GNU assembler emits SFrame version 3 when the --gsframe flag is given, so object files containing .sframe sections are becoming common. .sframe sections cannot be treated as opaque bytes; mold parses input .sframe sections, discards entries for functions removed by --gc-sections or --icf, and rebuilds a single merged section sorted by function address, along with a PT_GNU_SFRAME segment so that the runtime can locate it. Relocatable output (-r) is supported as well. (d0aa95a)
mold now discards temporary local symbols such as .L.str.42 by default, as lld does. Compilers emit a large number of such symbols for unnamed program elements, but they are compiler-internal; nothing references them through the symbol table, and debug info refers to their data by section offset. Discarding them makes large debug builds a few percent smaller and keeps compiler-internal labels out of symbolized addresses. The new --discard-none option restores the previous behavior. -r and --emit-relocs continue to keep all local symbols. (45dea59)
fluidsynth: updated to 2.6.0
2.6.0
New Features
Add automatic Gain Control / Output Limiter on final rendering stage, refer to related FluidSettings
The synth gained support for signed 32-bit & 24-bit linear PCM, and WASAPI is the first audio driver being able to use 24-bit audio
Add support for MIDI RPN 5 - Modulation Depth Range
Add new reverb engines to fix flaws of fluidsynth's previous FDN reverb, refer to wiki for an overview
Implement GM2 bank select mode
Musically Breaking Changes
Fix a bug introduced 17 years ago in 1.1.0 that caused sample fine-tune to be applied incorrectly for some Soundfont instruments
Implement MIDI RP-020 to fix MIDI files that use MTS being played back incorrectly
Fluidsynth's default reverb engine was changed to Dattorro - a plate-style reverbator
Fluidsynth now uses a higher order sinc interpolation, the previous 7th order sinc was dropped due to quality issues
[7 lines not shown]
[mlir] [arith] Fold trunc(extremum(ext(lhs), ext(rhs))) (#214658)
For example, now we can't fold the following case:
```
%lhs = arith.extf %arg0 : f16 to f32
%rhs = arith.extf %arg1 : f16 to f32
%maximum = arith.maximumf %lhs, %rhs fastmath<nnan> : f32
%maximumTrunc = arith.truncf %maximum : f32 to f16
```
to
```
%maximum = arith.maximumf %arg0, %arg1 fastmath<nnan> : f16
```
And this patch made this optimization. We can extend the op list to
arith.select, arith.cmpf and so on in the future.
[6 lines not shown]
[flang][OpenMP] Add parsing and semantic checks for USES_ALLOCATORS (#213955)
Closes #213958
Adds Flang frontend support for the OpenMP `uses_allocators` clause,
including parsing, unparsing, and semantic checks for allocator traits
and version-dependent syntax. Lowering remains unimplemented.
[ORC] Drop AutoRegisterCode option for JIT-debug registration (#215721)
AutoRegisterCode was introduced in 4c7f53b99c0 to gate calls to the
debugger rendezvous breakpoint `__jit_debug_register_code()`. The
assumption was that this would facilitate batched registration of JIT'd
debug info: clients could call `__jit_debug_register_code()` manually
after multiple object files worth of debug info were accumulated. This
assumption turns out not to be true: Debuggers only consume the most
recently recorded object file when the rendezvous breakpoint is
triggered, and all previously recorded, as-yet-unregistered, debug info
is ignored.
Since calling the rendezvous function is essential for correctness when
a debugger is attached, and essentially free when a debugger is not
attached, we should just call it unconditionally.
[flang][docs] Update runtime trampoline documentation (#215233)
Follow-up documentation cleanup for the runtime trampoline pool added by
#183108 and the FAQ update in #207656.
This updates the documentation to match the current implementation,
including the default and `-fsafe-trampoline` paths, runtime pool
behavior, API naming, and `scratch` handling.