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

LLVM/project fbc316d — llvm/test/TableGen RuntimeLibcallEmitter-bad-system-library-entry-error.td RuntimeLibcallEmitter-library-dispatch.td, llvm/utils/TableGen/Basic RuntimeLibcallsEmitter.cpp

RuntimeLibcalls: Require system library members to be libraries

Every SystemRuntimeLibrary now lists only LibcallLibrary and LibraryRef
members, so the inline path that expanded unhomed RuntimeLibcallImpl members
directly into the system's block, including its SystemAvailableImpls
bitset, is dead. Remove it, and error on any member that is not a
library. The generated RuntimeLibcalls.inc is unchanged.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+118-108llvm/test/TableGen/RuntimeLibcallEmitter.td
+94-103llvm/test/TableGen/RuntimeLibcallEmitter-calling-conv.td
+18-117llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
+12-50llvm/test/TableGen/RuntimeLibcallEmitter-multiple-impls.td
+3-21llvm/test/TableGen/RuntimeLibcallEmitter-library-dispatch.td
+15-6llvm/test/TableGen/RuntimeLibcallEmitter-bad-system-library-entry-error.td
+260-4056 files not shown
+278-41612 files

LLVM/project 77921a0 — clang/include/clang/Analysis CFG.h, clang/lib/Analysis CFG.cpp ReachableCode.cpp

[Analysis] Don't treat code after analyzer_noreturn calls as unreachable (#229577)

Since #150952, the CFG treats calls to functions attributed
'analyzer_noreturn' like calls to 'noreturn' functions, so
-Wunreachable-code reported the code following such a call as never
executed even though the call can return.

Record in CFGBlock whether a noreturn block ends in a real 'noreturn'
call or an 'analyzer_noreturn' call. The CFG keeps the code after an
'analyzer_noreturn' call as the alternate successor of the exit edge and
the reachability scan used by -Wunreachable-code follows it. All other
clients still treat the two kinds identically.

rdar://188741139
DeltaFile
+35-11clang/include/clang/Analysis/CFG.h
+28-12clang/lib/Analysis/ReachableCode.cpp
+38-0clang/test/Sema/warn-unreachable-analyzer-noreturn.c
+20-11clang/lib/Analysis/CFG.cpp
+19-0clang/test/Analysis/analyzer-noreturn.c
+18-0clang/test/Analysis/analyzer-noreturn-cfg-output.c
+158-346 files

LLVM/project 47e8159 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 fused-alt-fmul.ll

[SLP]Fix crash on fused alternate node with reuse shuffles

Size the vector type by the unique scalars, same as the opcode mask;
the reuse-shuffle vectorization factor made them mismatch.

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/230303
DeltaFile
+89-0llvm/test/Transforms/SLPVectorizer/X86/fused-alt-fmul.ll
+1-2llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+90-22 files

LLVM/project 4319629 — llvm/test/CodeGen/NVPTX f16-instructions.ll frem-precise.ll, llvm/test/Transforms/ExpandIRInsts/NVPTX frem.ll

[NVPTX] Use ExpandIRInsts for frem (#224141)

Our current expansion is not sufficiently accurate.
DeltaFile
+489-0llvm/test/Transforms/ExpandIRInsts/NVPTX/frem.ll
+113-61llvm/test/CodeGen/NVPTX/frem.ll
+64-33llvm/test/CodeGen/NVPTX/f16x2-instructions.ll
+38-58llvm/test/CodeGen/NVPTX/f32x2-instructions.ll
+84-0llvm/test/CodeGen/NVPTX/frem-precise.ll
+22-25llvm/test/CodeGen/NVPTX/f16-instructions.ll
+810-1773 files not shown
+824-2209 files

LLVM/project a1000a7 —

[LazyMachineBlockFrequencyInfo] Fix link with MSVC and LLVM_BUILD_LLVM_DYLIB_VIS=ON (#228320)
DeltaFile
+0-00 files

LLVM/project e3d2755 — clang/include/clang/CIR/Dialect/Builder CIRBaseBuilder.h, clang/lib/CIR/Dialect/Transforms CallConvLoweringPass.cpp

[CIR] Pass x87 long double vectors on x86_64

Vectors of x87 long double now go through x86_64 calling-convention
lowering instead of hitting NYI. The ABI library sizes their elements at
128 bits like clang does, so the signatures match classic codegen.

Unions are still moved as a value of their storage type, and a long
double stores only 10 of its 16 bytes. So a union holding an x87 value
next to another member stays NYI unless it's a plain long double and the
other members fit in those 10 bytes. That also stops a silent miscompile
of unions like `union { long double ld; char c[16]; }`.

Assisted-by: Cursor / Claude Opus 5.5
DeltaFile
+291-0clang/test/CIR/CodeGen/call-conv-lowering-x86_64-x87-vector.c
+102-12clang/test/CIR/Transforms/abi-lowering/x86_64-aggregate-nyi.cir
+93-14clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+66-0clang/test/CIR/CodeGen/vector-logical-long-double.cpp
+21-4clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h
+18-0clang/test/CIR/Transforms/abi-lowering/x86_64-vector.cir
+591-301 files not shown
+602-357 files

LLVM/project f8d6f8b — llvm/test/MC/RISCV option-invalid.s option-arch.s

[nspr] initial commit
DeltaFile
+25-0llvm/test/MC/RISCV/option-arch.s
+14-0llvm/test/MC/RISCV/option-invalid.s
+39-02 files