LLVM/project cc84d6a — llvm/lib/Support KnownFPClass.cpp, llvm/test/Transforms/Attributor nofpclass-bitcast-int-to-fp-x87.ll

[KnownFPClass] Refine `KnownFPClass::bitcast` deductions for `x86_fp80` (#224072)

Improves `KnownFPClass` deductions `i80` to `x86_fp80` bitcasts.

Non-canonical NaN's are treated as `fcSNan` if the quiet bit is known
clear, and `fcQNan` if the quiet bit is known set.

AI Disclosure:
I used ChatGPT Codex (5.6 sol and Astra-6) and Claude (Sonnet/Opus 5) to
help generate the tests and to review the code.
DeltaFile
+960-0llvm/test/Transforms/Attributor/nofpclass-bitcast-int-to-fp-x87.ll
+106-24llvm/unittests/Support/KnownFPClassTest.cpp
+80-1llvm/lib/Support/KnownFPClass.cpp
+1,146-253 files

LLVM/project 6880a2a — libcxx/include/__charconv traits.h, libcxx/test/std/utilities/charconv/charconv.from.chars integral.pass.cpp floating_point.pass.cpp

[libc++] Suppress unsigned-integer-overflow warning in <charconv> (#225801)

Invoking __complement with 0 as parameter triggers the unsigned integer
overflow UBSan.
DeltaFile
+186-192libcxx/test/std/utilities/charconv/charconv.to.chars/integral.pass.cpp
+10-64libcxx/test/support/charconv_test_helpers.h
+30-34libcxx/test/std/utilities/charconv/charconv.from.chars/integral.roundtrip.pass.cpp
+13-11libcxx/test/std/utilities/charconv/charconv.from.chars/floating_point.pass.cpp
+16-4libcxx/test/std/utilities/charconv/charconv.from.chars/integral.pass.cpp
+2-1libcxx/include/__charconv/traits.h
+257-3066 files

LLVM/project da7ae36 — lldb/test/API/functionalities/process_save_core_minidump_size_of_image TestMinidumpSizeOfImage.py

[lldb][minidump][test] Disable test_size_of_image... when remote testing (#231498)

The test assumes that the program can load the shared library, which it
cannot unless we copy it to the remote.

The shared library is also built outside of the usual build process, so
it's using the host compiler and possibly other host things.
DeltaFile
+2-0lldb/test/API/functionalities/process_save_core_minidump_size_of_image/TestMinidumpSizeOfImage.py
+2-01 files

LLVM/project 630f72e — llvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 fmaddsub-combine-bf16.ll fmaddsub-combine-fp16.ll

[X86] Don't form (FM)ADDSUB for bf16, or for narrow f16 vectors without VLX (#231445)

The shuffle combines that form (FM)ADDSUB only check for FMA, and only
exclude f16 from ADDSUB. There are no bf16 (FM)ADDSUB instructions, and
the AVX512-FP16 FMADDSUB needs VLX for 128/256-bit vectors. So an
add/sub shuffle of `<8 x half>` with `+avx512fp16` but no VLX, or of `<8
x bfloat>` (from FSUB/FADD or from FMA/FMSUB) with `+avx10.2`, fails to
select:

```
LLVM ERROR: Cannot select: t16: v8f16 = X86ISD::FMADDSUB t2, t4, t6
LLVM ERROR: Cannot select: t20: v8bf16 = X86ISD::FMADDSUB t7, t8, t9
```

Check the element type in both combines: reject bf16, and accept f16
only where f16 FMA is legal for the vector type (512-bit with
AVX512-FP16, 128/256-bit also with VLX). The new tests cover
128/256/512-bit f16 with and without VLX, and bf16 with and without
`contract` and from FMAs; the f16 no-VLX and bf16 RUN lines crash

    [6 lines not shown]
DeltaFile
+168-0llvm/test/CodeGen/X86/fmaddsub-combine-fp16.ll
+49-0llvm/test/CodeGen/X86/fmaddsub-combine-bf16.ll
+15-2llvm/lib/Target/X86/X86ISelLowering.cpp
+232-23 files

LLVM/project 4fdc737 — flang/lib/Evaluate fold-logical.cpp, flang/test/Evaluate fold-out_of_range.f90 fold-out-of-range-integer-8.f90

[flang] Fix null pointer dereference in OUT_OF_RANGE folding (#224270)

Folding `OUT_OF_RANGE` could crash when the default logical kind is
8:`CompareUnsigned` assumed intrinsic comparisons always yield
`LogicalResult`(LOGICAL(4)). Unwrap as `SomeLogical` and convert to
`LogicalResult`.
Add a `fold-out_of_range.f90` RUN line with `-fdefault-integer-8` and
a`test_kind` check.

Fixes #212392
DeltaFile
+15-0flang/test/Evaluate/fold-out-of-range-integer-8.f90
+2-1flang/lib/Evaluate/fold-logical.cpp
+2-0flang/test/Evaluate/fold-out_of_range.f90
+19-13 files

LLVM/project 9fcbda6 — llvm/lib/Target/AMDGPU SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU minimumnum.bf16.ll maximumnum.bf16.ll

[AMDGPU] Widen scalar bf16 minimumnum and maximumnum to packed ops (#230467)

Promote scalar bf16 minimumnum and maximumnum to v2bf16 on targets with
packed BF16 instructions. This uses the existing scalar-to-vector
legalization and selects a single packed min/max instruction on gfx1250.

Add gfx1250 coverage in both register modes to the existing BF16 min/max
tests.

Fixes #230156

Assisted by GPT 6.1 Sol
DeltaFile
+149-0llvm/test/CodeGen/AMDGPU/minimumnum.bf16.ll
+149-0llvm/test/CodeGen/AMDGPU/maximumnum.bf16.ll
+5-2llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+303-23 files

LLVM/project f832002 — orc-rt/include/orc-rt/connect-tcp TCPConnector.h, orc-rt/lib/connect-tcp TCPConnectorHelpers.h TCPConnectConnector.cpp

[orc-rt] Add connectors for tcp:connect and tcp:listen. (#231473)

registerTCPConnect registers a "tcp" connector that supports only
"connect". registerTCPConnectAndListen registers one that also supports
"listen", and is used instead of it. A process that should be reachable
only by the controller it names never links the code to listen.

Descriptors are "<host>:<port>" or "[<IPv6 address>]:<port>". The host
for "listen" must be a numeric address. A listening executor accepts one
controller and then stops listening. It must name its port, since
nothing would report one the system chose. TCP does not identify the
peer, so both actions trust it as VettedPeer::unchecked.

On Windows, the TCP primitives and the socket CA are stubs that report
the transport as not yet supported.

ogre now registers registerTCPConnectAndListen, so it accepts
"tcp:connect" and "tcp:listen" specs as well as "socket:adopt".

Assisted-by: Claude
DeltaFile
+229-0orc-rt/test/unit/connect-tcp/TCPConnectorTest.cpp
+89-0orc-rt/lib/connect-tcp/TCPConnectorHelpers.cpp
+65-0orc-rt/lib/connect-tcp/TCPListenConnector.cpp
+63-0orc-rt/lib/connect-tcp/TCPConnectConnector.cpp
+54-0orc-rt/include/orc-rt/connect-tcp/TCPConnector.h
+52-0orc-rt/lib/connect-tcp/TCPConnectorHelpers.h
+552-09 files not shown
+669-1415 files

LLVM/project a541253 — llvm/examples/OrcV2Examples/OrcV2CBindingsAddObjectFile OrcV2CBindingsAddObjectFile.c, llvm/unittests/ExecutionEngine/Orc OrcCAPITest.cpp

[examples] Set target triple on modules in examples. (#231480)

If no triple is set then the object format component of the Module's
triple will be set by getDefaultFormat in Triple.cpp, typically to ELF.
In AArch64AsmPrinter::emitStartOfAsmFile, the "ELF" default will cause
control to fall through the following check:

  if (!TT.isOSBinFormatELF())
    return;

and into a region that assumes an MCTargetStreamer. On Darwin/arm64,
which does not set an MCTargetStreamer, this will cause a nullptr
access.

Fix the issue by setting the Module's triple to the host triple.

Updates examples not fixed earlier by commit 9b989cbefc7.

rdar://189532634
DeltaFile
+4-0llvm/examples/OrcV2Examples/OrcV2CBindingsAddObjectFile/OrcV2CBindingsAddObjectFile.c
+2-0llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp
+6-02 files

LLVM/project 25d2343 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 trimmed-copyable-lane-schedule.ll

[SLP]Recalc deps for copyable scalars of cancelled bundles

Only the non-copyable members of a cancelled bundle of a trimmed node
were marked for the dependency recalculation. Copyable scalars kept
stale dependencies, were never picked by the final scheduling and
stayed far from their users, extending live ranges. This regressed
709.cactus_r by 2% on Grace.

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/231499
DeltaFile
+7-10llvm/test/Transforms/SLPVectorizer/AArch64/trimmed-copyable-lane-schedule.ll
+5-5llvm/test/Transforms/SLPVectorizer/X86/external-bin-op-user.ll
+3-3llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+1-1llvm/test/Transforms/SLPVectorizer/X86/trim-root-with-combined-node.ll
+1-1llvm/test/Transforms/SLPVectorizer/X86/reassoc-flattened-copyable-operand.ll
+1-1llvm/test/Transforms/SLPVectorizer/X86/deleted-node-with-copyable-operands.ll
+18-213 files not shown
+21-249 files

LLVM/project 6c42b07 — libcxx/include string, libcxx/include/__string extern_template_lists.h

[libc++] Optimize basic_string::operator=(const value_type*) (#227622)

This refactors `__assign_no_alias` to accept aliased strings and uses it
in `assign(const value_type*)` (which `operator=` forwards to).
DeltaFile
+20-18libcxx/include/string
+2-3libcxx/include/__string/extern_template_lists.h
+22-212 files

LLVM/project 1d2670e — lldb/test/API/functionalities/gdb_remote_client TestEmptyThreadList.py

[lldb][test] Attempt to fix flakyness of TestEmptyThreadList.py (#231486)

Has failed in CI and our buildbots, on AArch64 and x86_64.
```
FAIL: test_thread_list_goes_empty (TestEmptyThreadList.TestEmptyThreadList.test_thread_list_goes_empty) ---------------------------------------------------------------------- Traceback (most recent call last):
  File "/home/buildbot/workspace/lldb-aarch64-ubuntu/llvm-project/lldb/test/API/functionalities/gdb_remote_client/TestEmptyThreadList.py", line 61, in test_thread_list_goes_empty
    self.assertState(process.GetState(), lldb.eStateStopped)
  File "/home/buildbot/workspace/lldb-aarch64-ubuntu/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 3117, in assertState
    self.fail(self._formatMessage(msg, error))
AssertionError: exited (10) != stopped (5)
Config=aarch64-/home/buildbot/workspace/lldb-aarch64-ubuntu/build/bin/clang ----------------------------------------------------------------------
```
My theory is that "S13" is being mapped to 19 aka SIGCONT in the base
UnixSignals list. This has stop=False, so when the test passes, the
empty thread path wins and we stop. When it is failing, it's because
that auto resume executed first.

To fix this use SIGTRAP which has stop=True. Fixes #227396.
DeltaFile
+4-4lldb/test/API/functionalities/gdb_remote_client/TestEmptyThreadList.py
+4-41 files

LLVM/project b6842f8 — clang/docs ReleaseNotes.md, clang/lib/Sema SemaInit.cpp

[clang] Fix failed assertion crash when initializing compound literal pointer at file scope with error value (#229940)

e.g.
```C
x y; // error: unknown type name 'x'
constexpr int *p = (int*){y}; // failed assert
```

The fix was: before attempting to check if the pointer is null, first
make sure its not value dependent.

Fixes #229888

---------

Co-authored-by: aalmkainzi <aa.almkainzi at wakeb.tech>
DeltaFile
+2-1clang/lib/Sema/SemaInit.cpp
+3-0clang/test/Sema/constexpr.c
+1-0clang/docs/ReleaseNotes.md
+6-13 files

LLVM/project e69542d — clang/docs ReleaseNotes.md, clang/lib/Analysis ThreadSafetyCommon.cpp

[clang][ThreadSafety] Support lock_returned on function pointers (#226561)

d1e84bb9ad3b allowed the thread safety function attributes on function
pointers, but not lock_returned, so a call through a function pointer
could not return a known capability:

    struct Ops {
      struct Mutex *(*lock_of)(struct Dev *d) LOCK_RETURNED(&d->lock);
    };

Handle lock_returned like the other attributes:

- Allow it on variables and fields of function pointer or function
reference type, rechecked after template instantiation.
- Parse its argument in the prototype's scope, so it can name the
pointee's parameters.
- Look it up on the callee declaration rather than only a direct callee,
substituting the call's arguments for the pointee's parameters.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+30-0clang/test/SemaCXX/warn-thread-safety-analysis.cpp
+27-0clang/test/Sema/warn-thread-safety-analysis.c
+17-4clang/test/SemaCXX/warn-thread-safety-parsing.cpp
+7-5clang/lib/Analysis/ThreadSafetyCommon.cpp
+10-0clang/docs/ReleaseNotes.md
+7-2clang/lib/Sema/SemaDeclAttr.cpp
+98-111 files not shown
+100-127 files

LLVM/project 99ee738 — mlir/lib/Transforms/Utils GreedyPatternRewriteDriver.cpp, mlir/test/Transforms canonicalize-cfg-reachability.mlir test-strict-pattern-driver.mlir

[mlir] Avoid rewriting unreachable blocks in the greedy driver

A rewrite can disconnect a block after the iteration's initial CFG
sweep. Queued operations can develop self-referential SSA uses in
unreachable code, causing crashes or repeated rewrites that prevent the
worklist pass from returning. Track reachability through rewriter
notifications and skip these operations until the next iteration removes
their blocks.

The reproducer in #221152 exposes this gap in the initial sweep added by
#153957 for #153732. #154038 similarly skips unreachable blocks in the
walk-based driver. Reachable graph-region self-cycles in #194824 and
#205064 remain separate; #207185 proposes a fold-specific fix for them.

A forwarding ReachabilityListener sits between the rewriter and the
worklist driver and records, per region, which blocks changed their
terminator and which blocks were removed. Queries happen between
rewrites, once per popped operation, and update a per-region cache of
reachable blocks and their successors incrementally: added edges extend

    [47 lines not shown]
DeltaFile
+332-13mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp
+334-0mlir/test/Transforms/greedy-cfg-reachability.mlir
+156-4mlir/test/lib/Dialect/Test/TestPatterns.cpp
+118-0mlir/test/Transforms/canonicalize-dce.mlir
+72-2mlir/test/Transforms/test-strict-pattern-driver.mlir
+57-0mlir/test/Transforms/canonicalize-cfg-reachability.mlir
+1,069-194 files not shown
+1,166-2310 files

LLVM/project e36df85 — llvm/lib/Transforms/InstCombine InstCombineSelect.cpp, llvm/test/Transforms/InstCombine select-of-symmetric-selects.ll

[InstCombine] Mark profiles unknown in foldSelectOfSymmetricSelect (#231346)

We cannot infer the new weights without additional information, so mark
them unknown.

This finishes the profcheck fixes for InstCombine.
DeltaFile
+9-4llvm/test/Transforms/InstCombine/select-of-symmetric-selects.ll
+7-1llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+0-1llvm/utils/profcheck-xfail.txt
+16-63 files

LLVM/project 5f40c90 — llvm/lib/Target/X86 X86PfmCounters.td

[X86] Add PFM Counters for GraniteRapids (#231329)

Just alias to SapphireRapids for now given it does not have its own
scheduling model. This is mainly useful for having a cycles counter when
running llvm-exegesis for benchmarking.
DeltaFile
+1-0llvm/lib/Target/X86/X86PfmCounters.td
+1-01 files

LLVM/project fcc4c8d — libcxx/test/libcxx-03 system_reserved_names.gen.py

[libcxx] Don't use #define __unused in libcxx-03 for glibc (#230209)

Ports 3c16a8b183693e8df2e2173764e10c33c33ab06a to the cxx-03 headers.
This pops up when trying to bump the container version due to the ubuntu
26.04 update.
DeltaFile
+1-1libcxx/test/libcxx-03/system_reserved_names.gen.py
+1-11 files

LLVM/project 7a16836 — libcxx/include/__cxx03 bitset

[libcxx] Fix -Wshift-counter-overfliw in cxx03 bitset (#230208)

I thought 83ec4c471b462cb650ce947d7d6554df3256140a fixed this, but it
turns out the gcc disablement was a red herring and clang was actually
warning in a different spot. This commit reverts that commit and applies
the disablement in the correct spot. I've actually tested that this
fixes the frozen-cxx-03 headers job.
DeltaFile
+3-1libcxx/include/__cxx03/bitset
+3-11 files

LLVM/project 97062ab — llvm/test/Transforms/SLPVectorizer/AArch64 trimmed-copyable-lane-schedule.ll

[SLP][NFC]Add a test with a slight regression after scheduling cancelling, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/231484
DeltaFile
+69-0llvm/test/Transforms/SLPVectorizer/AArch64/trimmed-copyable-lane-schedule.ll
+69-01 files

LLVM/project a757690 — llvm/test/Transforms/LoopVectorize select-minmax-multi-def-use.ll

[NFC][LV] Tests for parallel def-use chains (#225405)

This patch is an extension of the work in #198300 by adding a test for
vectorization of parallel def-use chains in loops.

Assisted-by: Codex
DeltaFile
+676-0llvm/test/Transforms/LoopVectorize/select-minmax-multi-def-use.ll
+676-01 files

LLVM/project 633dd6f — clang/test/Analysis lifetime-end-order.cpp

Update the test file.
DeltaFile
+39-33clang/test/Analysis/lifetime-end-order.cpp
+39-331 files

LLVM/project 1f6d91a — llvm/lib/Transforms/InstCombine InstCombineCasts.cpp, llvm/test/Transforms/InstCombine fpcast.ll

[InstCombine] Fold fpto[su]i of llvm.trunc

fptoui and fptosi already round toward zero, so a preceding llvm.trunc
is redundant and the conversion can take the untruncated value. NaN,
infinity, and out of range inputs produce poison in both forms.

```llvm
%t = call float @llvm.trunc.f32(float %x)
%r = fptosi float %t to i32
  -->
%r = fptosi float %x to i32
```

The trunc may have other users; only the conversion operand is replaced.
DeltaFile
+6-10llvm/test/Transforms/InstCombine/fpcast.ll
+5-0llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+11-102 files

LLVM/project 71404b1 — llvm/lib/Transforms/InstCombine InstCombineCasts.cpp, llvm/test/Transforms/InstCombine fpcast.ll

Update for comments
DeltaFile
+2-4llvm/test/Transforms/InstCombine/fpcast.ll
+1-1llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+3-52 files

LLVM/project 7772945 — llvm/test/CodeGen/AMDGPU amdgpu-simplify-libcall-pow.ll

Fix lit test issue.
DeltaFile
+5-8llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow.ll
+5-81 files

LLVM/project 761979c — llvm/test/Transforms/InstCombine fpcast.ll

Add FMF test
DeltaFile
+22-0llvm/test/Transforms/InstCombine/fpcast.ll
+22-01 files

LLVM/project 2dbcf69 — llvm/test/Transforms/InstCombine fpcast.ll

[InstCombine] Add tests for fpto[su]i of llvm.trunc. NFC

fpto[su]i rounds toward zero, so a preceding llvm.trunc is redundant.
Cover scalar, vector, and multi use cases.
DeltaFile
+72-0llvm/test/Transforms/InstCombine/fpcast.ll
+72-01 files

LLVM/project ce0e0f0 — lldb/test/API/functionalities/process_save_core_minidump TestProcessSaveCoreMinidump64b.py TestProcessSaveCoreMinidump.py, lldb/test/API/functionalities/process_save_core_minidump_size_of_image TestMinidumpSizeOfImage.py

Reland "[lldb][minidump][test] Enable more minidump tests on AArch64 (#231467)" (#231474)

This reverts commit d9823582cb13b0dd493dd7162457683b24f54e5e.

Some tests were failing when on a Windows host because they tried to
delete the minidump file without deleting the target first. On Windows
you cannot unlink a file that something still has open, that something
being lldb here.

test_save_linux_mini_dump_thread_options cannot work remotely due to a
bug in the save routine. See
https://github.com/llvm/llvm-project/issues/231472.
DeltaFile
+60-25lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
+2-2lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py
+1-1lldb/test/API/tools/lldb-dap/save-core/TestDAP_save_core.py
+1-1lldb/test/API/functionalities/process_save_core_minidump_size_of_image/TestMinidumpSizeOfImage.py
+64-294 files

LLVM/project 0e802c0 — llvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 sjlj-shadow-stack-dead-eflags.ll

Revert "X86: Mark the dead EFLAGS clobbers in the SjLj expansions (#227271)" (#231476)

This reverts commit e377790bd393b05f222950fbc19e97a8c9bf1956 and
follow-up fix attempt 68c8099747bd4f2675897c984c2555a12ad580b9
(#231451).

Breaks tests, see bot comments on both PRs.
DeltaFile
+0-113llvm/test/CodeGen/X86/sjlj-shadow-stack-dead-eflags.ll
+5-10llvm/lib/Target/X86/X86ISelLowering.cpp
+5-1232 files

LLVM/project ec7c314 — clang/docs ReleaseNotes.md, clang/lib/Sema SemaTemplateDeduction.cpp

[clang] Fixed auto type inference failing when the rhs is a bit-field expression (#226784)

e.g.
```C
void f()
{
    struct S { unsigned i : 2; };
    struct S s = {};
    auto x = s.i; // previously failed. now accepted and x is an `unsigned int`
}
```

Fixes #226280
DeltaFile
+12-0clang/test/C/C23/n3007.c
+2-1clang/lib/Sema/SemaTemplateDeduction.cpp
+1-0clang/docs/ReleaseNotes.md
+15-13 files

LLVM/project fc1cf20 — clang/lib/Driver Driver.cpp, clang/test/Driver hip-amdgcnspirv-output-name.c

[Clang][Driver] Name unbundled non-RDC HIP SPIR-V images .spv

An amdgcnspirv device-only compile without -o wrote a SPIR-V binary
with a .out suffix. Use .spv for that case.
DeltaFile
+31-0clang/test/Driver/hip-amdgcnspirv-output-name.c
+7-2clang/lib/Driver/Driver.cpp
+38-22 files