LLVM/project 561fa0e — clang/test/CIR/CodeGenSYCL functionptr-addrspace.cpp

[CIR][SYCL][NFC] Add functionptr-addrspace test (#230327)

Port clang/test/CodeGenSYCL/functionptr-addrspace.cpp to ClangIR.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply at anthropic.com>
DeltaFile
+33-0clang/test/CIR/CodeGenSYCL/functionptr-addrspace.cpp
+33-01 files

LLVM/project 0ffb828 — bolt/lib/Rewrite RewriteInstance.cpp, bolt/test bolt-reserved.test

[BOLT] Ignore __bolt_reserved syms in perf2bolt/heatmap (#230300)

Aggregation and heatmap don't rewrite the binary, so skipping setting
reserved space is safe. This unblocks aggregation from BOLTed binary
that used and updated these markers.

Test Plan: updated bolt-reserved.test
DeltaFile
+13-0bolt/test/bolt-reserved.test
+4-0bolt/lib/Rewrite/RewriteInstance.cpp
+17-02 files

LLVM/project a26bff1 — llvm/lib/Target/WebAssembly WebAssemblyFastISel.cpp, llvm/test/CodeGen/WebAssembly fast-isel-simd128.ll

[WebAssembly] Fall back to SelectionDAG for vector compares in FastISel (#227368)

FastISel's selectICmp and selectFCmp each classify compare operands
with a single scalar test: anything but i64 is treated as i32, and
anything but f64 as f32, vectors included. A vector compare therefore
emits a scalar i32.eq/i32.ne (or f32.eq) that consumes the two v128
registers holding the operands, and the resulting module fails
validation ("type mismatch: expected i32, found v128").

Return false for vector operands in both selectors so the SelectionDAG
lowers them to SIMD compares, and extend the existing
fast-isel-simd128.ll test to cover vector compares on both wasm32 and
wasm64 (UTC-generated checks, with the vectors passed in as arguments).

The vector compare only reaches this path when the rest of the block
does not bail out, which is why it went unnoticed: the common shapes
(a vector icmp feeding extractelement, a bitcast, an intrinsic, or a
branch condition) all miss somewhere in FastISel and the SelectionDAG
revisits the block, replacing the bad compare. A vector compare

    [4 lines not shown]
DeltaFile
+65-0llvm/test/CodeGen/WebAssembly/fast-isel-simd128.ll
+14-0llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
+79-02 files

LLVM/project 825b7fa — libc/include/llvm-libc-macros/linux sys-inotify-macros.h, libc/include/sys inotify.yaml

[libc] add sys/inotify (#230314)

The sys/inotify header has linux functions for watching a directory.
This PR adds those functions, and their relevant macros and type. Tests
are fairly simple since the functions are all syscall wrappers.

Assisted-by: Automated tooling, human reviewed
DeltaFile
+82-0libc/include/sys/inotify.yaml
+73-0libc/test/src/sys/inotify/linux/CMakeLists.txt
+56-0libc/src/sys/inotify/linux/CMakeLists.txt
+54-0libc/include/llvm-libc-macros/linux/sys-inotify-macros.h
+50-0libc/test/src/sys/inotify/linux/inotify_init_test.cpp
+49-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+364-035 files not shown
+1,028-041 files

LLVM/project 8b7a4fb — llvm/utils/gn/secondary/clang/lib/CodeGenUtils BUILD.gn

[gn build] Port a789eb1d665b (#230326)
DeltaFile
+0-1llvm/utils/gn/secondary/clang/lib/CodeGenUtils/BUILD.gn
+0-11 files

LLVM/project b08e005 — clang/lib/CIR/CodeGen CIRGenCall.cpp, clang/test/CIR/CodeGen spir-call-calling-conv.c spir-call-calling-conv.cpp

[CIR] Emit calling convention on call sites (#230123)

Adds calling convention on the call sites. 

Note: I opted to execlude support for runtime calling convention
(classic getRuntimeCC()) on calls to runtime functions created in CIR
passes (EH, __cxa_atexit, __cxa_guard_*, dynamic_cast, global init).
These keep the default C calling convention and are marked with
TODO(cir) and `MissingFeatures::opFuncCallingConv()` for a follow-up.

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply at anthropic.com>
DeltaFile
+65-0clang/test/CIR/CodeGen/spir-call-calling-conv.cpp
+41-0clang/test/CIR/CodeGen/spir-call-calling-conv.c
+40-0clang/test/CIR/Lowering/call-calling-conv.cir
+39-0clang/test/CIR/IR/call-calling-conv.cir
+38-0clang/test/CIR/CodeGenSYCL/call-calling-conv.cpp
+21-16clang/lib/CIR/CodeGen/CIRGenCall.cpp
+244-1621 files not shown
+476-6627 files

LLVM/project f93f4e3 — llvm/lib/CodeGen/AsmPrinter EHStreamer.cpp, llvm/test/CodeGen/X86 eh-call-site-info-for-inline-asm.ll

[X86] Emit LSDA call site info for inline asm calls marked `unwind` (#218276)

LLVM currently doesn't consider inline asm calls with the `unwind`
keyword when generating the list of LSDA call sites of a function.
For example, given the following IR

```llvm
declare i32 @rust_eh_personality(i32, i32, i64, ptr, ptr)
declare void @bar()

define void @example() personality ptr @rust_eh_personality {
entry:
  call void asm sideeffect alignstack inteldialect unwind "call foo", ""()

  invoke void @bar()
          to label %cont unwind label %lpad

cont:
  ret void

    [98 lines not shown]
DeltaFile
+49-0llvm/test/CodeGen/X86/eh-call-site-info-for-inline-asm.ll
+6-0llvm/lib/CodeGen/AsmPrinter/EHStreamer.cpp
+55-02 files

LLVM/project 89157ec — bolt/include/bolt/Core BinaryContext.h, bolt/lib/Core BinaryEmitter.cpp BinaryContext.cpp

[BOLT] Keep ambiguous references next to function boundaries valid

A reference into code without a relocation that names its target, e.g. a
RIP-relative LEA whose relocation was against a section symbol, cannot be told
apart from "Next - Delta" and "Prev + Offset" when it lands right before or
after a function start. HHVM built with LLVM 23 has such a reference to
"sqlite3RCStrUnref - 1", which lands in padding and makes BOLT fail with
-strict. Without padding, BOLT silently kept such references relative to the
preceding function. See bolt/test/X86/unanchored-code-reference.s.

BOLT now collects these references from code and, when they are within
--boundary-ref-distance bytes (default 2) of a function start, keeps the
functions around them in place in lite mode. When all functions are processed,
it emits those functions unoptimized and back-to-back with the original bytes
between them, and checks after linking that they kept their size and distance.

Absolute references right before a function start are now relative to that
function. This replaces the workaround for "fptr - 1" in de-virtualized member
function pointer calls, which dropped the relocation and left the input
address in the code.
DeltaFile
+253-0bolt/test/X86/unanchored-code-reference.s
+224-0bolt/test/X86/unanchored-code-reference-fuse.s
+221-0bolt/lib/Core/BinaryContext.cpp
+57-21bolt/lib/Rewrite/RewriteInstance.cpp
+49-0bolt/include/bolt/Core/BinaryContext.h
+43-4bolt/lib/Core/BinaryEmitter.cpp
+847-253 files not shown
+883-259 files

LLVM/project 2e9e63d — clang/include/clang/Basic BuiltinsX86.td, clang/test/Sema ms-x86-builtins-int64-lp64.c

[BuiltinsX86] Use long long for the __int64 MS intrinsics (#154946)

Microsoft declares _Interlocked*64, _xgetbv and _xsetbv with __int64,
which is
long long on every target. BuiltinsX86.td used int64_t and uint64_t,
which are
long on LP64, so declaring them as Microsoft does fails there:

  error: conflicting types for '_InterlockedIncrement64'

Use long long int and unsigned long long int, as __emul does.
DeltaFile
+10-10clang/include/clang/Basic/BuiltinsX86.td
+19-0clang/test/Sema/ms-x86-builtins-int64-lp64.c
+29-102 files

LLVM/project f821f0f — llvm/cmake/modules MLGOLower.cmake, llvm/lib/Analysis CMakeLists.txt

[mlgo] Allow passing pre-emitc-ed models
DeltaFile
+79-58llvm/cmake/modules/MLGOLower.cmake
+98-0llvm/lib/Analysis/models/inline-oz-test-model.inc
+49-0llvm/lib/Analysis/models/regalloc-eviction-test-model.inc
+13-12llvm/lib/CodeGen/CMakeLists.txt
+13-12llvm/lib/Analysis/CMakeLists.txt
+3-21llvm/lib/CodeGen/MLRegAllocEvictAdvisor.cpp
+255-10320 files not shown
+324-19526 files

LLVM/project 7a92038 — libcxx/docs FeatureTestMacroTable.md, libcxx/docs/Status Cxx26Papers.csv Cxx20Issues.csv

[libc++][docs] Migrate generated and status tables to Markdown
DeltaFile
+285-564libcxx/docs/FeatureTestMacroTable.md
+337-337libcxx/docs/Status/Cxx26Issues.csv
+307-307libcxx/docs/Status/Cxx17Issues.csv
+300-300libcxx/docs/Status/Cxx23Issues.csv
+292-292libcxx/docs/Status/Cxx20Issues.csv
+208-208libcxx/docs/Status/Cxx26Papers.csv
+1,729-2,00813 files not shown
+2,363-2,68719 files

LLVM/project 7c994b0 — libcxx/utils generate_feature_test_macro_components.py

[libc++][docs] Apply Python formatting
DeltaFile
+3-1libcxx/utils/generate_feature_test_macro_components.py
+3-11 files

LLVM/project 199dfca — libcxx/docs/Helpers Styles.md, libcxx/docs/Status Cxx23.md Cxx20.md

[libc++][docs] Convert generated and status table documentation with rst2myst
DeltaFile
+54-28libcxx/docs/Helpers/Styles.md
+25-19libcxx/docs/Status/Cxx29.md
+25-19libcxx/docs/Status/Cxx26.md
+22-18libcxx/docs/Status/Cxx23.md
+22-18libcxx/docs/Status/Cxx20.md
+22-18libcxx/docs/Status/Cxx17.md
+170-1201 files not shown
+180-1317 files

LLVM/project 55d6178 — libcxx/docs FeatureTestMacroTable.rst FeatureTestMacroTable.md, libcxx/docs/Status Cxx29.rst Cxx26.rst

[libc++][docs] Rename generated and status table documentation to Markdown
DeltaFile
+0-581libcxx/docs/FeatureTestMacroTable.rst
+581-0libcxx/docs/FeatureTestMacroTable.md
+0-44libcxx/docs/Status/Cxx29.rst
+0-44libcxx/docs/Status/Cxx26.rst
+44-0libcxx/docs/Status/Cxx26.md
+44-0libcxx/docs/Status/Cxx29.md
+669-6699 files not shown
+836-83615 files

LLVM/project 0ed5f0c — llvm/docs conf.py

[docs] Enable absolute documentation link checks

Configure the LLVM documentation URL prefixes so the Sphinx build rejects
absolute links to documents in the same project. Clang is already configured.

Part of #214861
DeltaFile
+11-1llvm/docs/conf.py
+11-11 files

LLVM/project 80842b0 — lldb/docs index.md, lldb/docs/man lldb.rst

[lldb][docs] Use project-local documentation links

Replace same-project absolute URLs with relative Markdown links and Sphinx
cross-references so local and archived documentation stays self-contained.
Update generated Python API docstrings at their header and SWIG inputs,
and repair stale Python and frame-recognizer destinations.

Validation: docs-lldb-html and docs-lldb-man, followed by fresh Sphinx
rebuilds (-E), on a merge of the three independent self-link fixes with
the checker enabled and warnings-as-errors disabled. No self-link warnings
or new warning messages compared with the audit baseline.
C/C++ formatting: git-clang-format --diff against main for the three
modified API headers reported no changes.

Part of #214861

Assisted-by: Codex
DeltaFile
+4-4lldb/docs/use/lldbdap.md
+4-4lldb/docs/resources/lldbdap-contributing.md
+3-3lldb/docs/man/lldb.rst
+2-2lldb/docs/index.md
+1-1lldb/include/lldb/API/SBThread.h
+1-1lldb/include/lldb/API/SBFrame.h
+15-155 files not shown
+20-2011 files

LLVM/project dbc24fa — llvm/lib/Transforms/Utils SimplifyLibCalls.cpp, llvm/test/Transforms/InstCombine memrchr-3.ll memrchr-4.ll

[SimplifyLibCalls] Mark profiles unknown in optimizeMemRChr (#230289)

The selects created here are purely synthesized so we have no way of
preserving weights in the general case. Thus, mark the weights as
unknown.
DeltaFile
+11-6llvm/test/Transforms/InstCombine/memrchr-4.ll
+8-3llvm/test/Transforms/InstCombine/memrchr-3.ll
+6-2llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
+0-2llvm/utils/profcheck-xfail.txt
+25-134 files

LLVM/project dfa5b78 — libcxx/docs/Helpers ReleaseNotesTemplate.rst, libcxx/docs/ReleaseNotes 24.rst 23.rst

[libc++][docs] Use project-local links in release notes (#228624)

Replace absolute libc++ homepage links with Sphinx document references
in
release notes 20 through 24 and the release-note template.

I would leave these historical documents alone, but I have to fix these,
or the doc build will fail with warnings when I enable the absolute
self-link Sphinx doc build warning.

Validation: docs-libcxx-html, followed by a fresh Sphinx rebuild (-E),
on
a merge of the three independent self-link fixes with the checker
enabled
and warnings-as-errors disabled. No self-link warnings or new warning
messages compared with the audit baseline.

Part of #214861

Assisted-by: Codex
DeltaFile
+3-3libcxx/docs/ReleaseNotes/24.rst
+3-3libcxx/docs/ReleaseNotes/23.rst
+3-3libcxx/docs/ReleaseNotes/22.rst
+3-3libcxx/docs/ReleaseNotes/21.rst
+3-3libcxx/docs/ReleaseNotes/20.rst
+3-3libcxx/docs/Helpers/ReleaseNotesTemplate.rst
+18-186 files

LLVM/project 3337598 — llvm/cmake/modules MLGOLower.cmake, llvm/lib/Analysis CMakeLists.txt

[mlgo] Allow passing pre-emitc-ed models
DeltaFile
+79-58llvm/cmake/modules/MLGOLower.cmake
+98-0llvm/lib/Analysis/models/inline-oz-test-model.inc
+49-0llvm/lib/Analysis/models/regalloc-eviction-test-model.inc
+13-12llvm/lib/CodeGen/CMakeLists.txt
+13-12llvm/lib/Analysis/CMakeLists.txt
+3-21llvm/lib/CodeGen/MLRegAllocEvictAdvisor.cpp
+255-10320 files not shown
+323-19826 files

LLVM/project f4fe49e — clang/lib/Sema SemaDeclAttr.cpp, clang/test/SemaCUDA cluster_dims.cu

[Clang] Fix cluster_dims thread block limit checks

The limit is on the total number of thread blocks, 8 for NVPTX and 16
for AMDGPU, but two checks got in the way. A 4-bit cap on each dimension
rejected cluster_dims(16, 1, 1) while accepting the same 16 blocks as
cluster_dims(4, 4, 1), and an omitted dimension contributed 0 rather
than 1, zeroing the product so cluster_dims(15, 15) compiled cleanly.

Bound each dimension only enough to keep the product from overflowing
and let the existing total size diagnostic enforce the limit. Code that
relied on the unenforced limit now fails to compile.
DeltaFile
+12-8clang/lib/Sema/SemaDeclAttr.cpp
+15-1clang/test/SemaCUDA/cluster_dims.cu
+27-92 files

LLVM/project 6fbb8d6 — llvm/lib/Transforms/InstCombine InstCombineMulDivRem.cpp, llvm/test/Transforms/InstCombine mul.ll

[InstCombine] Fix profile propagation in visitMul (#230304)

Within visitMul there is a fold that creates a new select with the same
condition as an existing select, which lets us directly propagate the
metadata.
DeltaFile
+5-3llvm/test/Transforms/InstCombine/mul.ll
+5-3llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
+0-1llvm/utils/profcheck-xfail.txt
+10-73 files

LLVM/project da76460 —

[bazel] Add target parser to dep (#230316)

Fix layering check.

`clang/lib/CodeGenUtils/TargetUtils.cpp` now includes
`llvm/TargetParser/Triple.h`
DeltaFile
+0-00 files

LLVM/project 662e1c3 — llvm/lib/Support UnicodeNameToCodepointGenerated.cpp, llvm/test/CodeGen/AMDGPU fcmp.f16.ll load-global-i16.ll

Merge branch 'main' into users/rnk/fix-self-doclink-lldb
DeltaFile
+23,347-23,371llvm/lib/Support/UnicodeNameToCodepointGenerated.cpp
+5,287-5,656llvm/test/CodeGen/AMDGPU/load-global-i8.ll
+2,827-5,340llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll
+3,366-3,401llvm/test/CodeGen/AMDGPU/load-global-i16.ll
+3,103-3,156llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-private.mir
+1,450-4,799llvm/test/CodeGen/AMDGPU/fcmp.f16.ll
+39,380-45,7235,069 files not shown
+341,708-164,8665,075 files

LLVM/project a48b38e — clang/lib/CIR/CodeGen CIRGenModule.cpp, clang/test/CIR/CodeGen global-var-template-ctor.cpp

[CIR] Don't double-init global variables anymore. (#230279)

My last patch, #228586, did some additional work to make sure we
properly initialized globals even if they had multiple blocks in their
initializer rather than assuming there was one.

As a result, the dynamic initialization of a variable referenced
multiple times regressed, as we started failing verification because we
are double-emitting the initializer.

Note we ALWAYS double-emitted the initializer, but we replaced it every
time. The change above caused us to re-use the same set of blocks to
better tolerate multiple blocks, and as a side effect, the second block
initialization added instead of replacing.

This patch fixes this by making sure we only define a global variable if
it isn't yet defined.
DeltaFile
+29-11clang/test/CIR/CodeGen/global-var-template-ctor.cpp
+6-0clang/lib/CIR/CodeGen/CIRGenModule.cpp
+35-112 files

LLVM/project a3621f4 — clang-tools-extra/docs/clang-tidy Contributing.rst, flang/docs GettingStarted.md GettingInvolved.md

[docs] Repair remaining absolute self-documentation links (#228625)

Replace same-project absolute URLs with relative source links or Sphinx
cross-references in LLVM, Flang, libc, clang-tools-extra, and OpenMP.
Use the explicit LangRef label for atomic.ignore.denormal.mode metadata.
This lets Sphinx validate the targets and keeps local and archived
documentation self-contained.

Validated by building all docs-*-html targets for these subprojects with
the pending Sphinx build warning merged in.

Part of #214861

Assisted-by: Codex
DeltaFile
+4-4libc/docs/dev/code_style.md
+2-2openmp/docs/CommandLineArgumentReference.md
+2-2llvm/docs/AMDGPUUsage.rst
+1-1flang/docs/GettingStarted.md
+1-1flang/docs/GettingInvolved.md
+1-1clang-tools-extra/docs/clang-tidy/Contributing.rst
+11-112 files not shown
+13-138 files

LLVM/project 6b6ca22 — clang/lib/Sema SemaDeclCXX.cpp

extract lambda to local var
DeltaFile
+16-17clang/lib/Sema/SemaDeclCXX.cpp
+16-171 files

LLVM/project 3293272 — flang/lib/Semantics check-data.cpp, flang/test/Semantics data28.f90

[flang][semantics] Reject DATA-style initializer on EXTERNAL/INTRINSIC (#222256)

An `entity-decl` carrying a legacy `/initialization/` (an extension) was silently
accepted, and the initializer dropped, when the name had already been
declared `EXTERNAL` or `INTRINSIC`:

```fortran
subroutine s
  external foo
  integer foo /1/   ! accepted, no initialization emitted
end subroutine
```

`DataChecker::Leave(const parser::EntityDecl &)` passed the value list to
`AccumulateDataInitializations` without checking the symbol's class, so the
initialization never reached the emitted code and no diagnostic was produced.
Reversing the two statements already errors, so the behaviour was also
order-dependent. For an intrinsic name that is not an unrestricted specific
function (`sum`), the accumulated value instead tripped

    [9 lines not shown]
DeltaFile
+36-0flang/test/Semantics/data28.f90
+10-1flang/lib/Semantics/check-data.cpp
+46-12 files

LLVM/project d08459d — orc-rt/include/orc-rt/support LockedAccess.h

[orc-rt] Mark LockedAccess's constructor as noexcept. (#230311)

The ORC runtime does not use exceptions for errors internally, so mark
this noexcept. In practice the mutex and lock types we use (STL mutexes
and locks) don't throw unless corrupted or misconfigured. If we ever
want to support locks whose acquisition can legitimately fail we'll need
an alternative Error-based representation of failure.
DeltaFile
+1-1orc-rt/include/orc-rt/support/LockedAccess.h
+1-11 files

LLVM/project f8f362d — llvm/lib/Target/AMDGPU SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.cooperative.atomic-basic.ll

[AMDGPU] Use vector memory types for 64/128-bit cooperative atomics (#229501)

The 16x8B and 8x16B cooperative atomic intrinsics had integer memory
types (`i64`/`i128`) that didn't match their vector values, which broke
value tracking on the loaded value and could crash the compiler. This
patch uses the value type as the memory type and updates the selection
patterns to match. Codegen for existing cooperative atomics is
unchanged.
DeltaFile
+187-4llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cooperative.atomic-basic.ll
+2-2llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+189-62 files

LLVM/project e0d351f — lldb/include/lldb/Target Process.h, lldb/source/Target Process.cpp ThreadPlanSingleThreadTimeout.cpp

Don't let the ThreadPlanSingleStepTimeout interrupt an already stopped process (#227898)

When the ThreadPlanSingleThreadTimeout timeout fires, first check
whether the process is stopped before sending the interrupt.

This is a simpler way to address the problem that was identified in:

https://github.com/llvm/llvm-project/pull/224272

The problem solved there is that if the stop processing is still going
on when the timer fires, we send the interrupt request event which gets
enqueued and then handled after the stop event processing has restarted
the inferior to continue the thread plan work.

That patch involved trying to figure out, when you receive the event,
whether it was stale or not. It was harder to reason about - and not all
the way right, though that probably could be fixed.

But when you get a stop event, we first set the private state to stopped

    [6 lines not shown]
DeltaFile
+12-6lldb/source/Target/ThreadPlanSingleThreadTimeout.cpp
+10-0lldb/source/Target/Process.cpp
+1-0lldb/include/lldb/Target/Process.h
+23-63 files