LLVM 19.1.0-final update and possible RC4

Hi,

I have just worked through the queue of changes today and while there are not that many open or unreviewed bugs in the queue right now there are still very many PR’s merged since RC3 and the diffstat is pretty big.

117 files changed, 3161 insertions(+), 504 deletions(-)

full diffstats RC3 to current release/19.x
 .github/workflows/release-binaries-save-stage/action.yml                            |    6 +
 .github/workflows/release-doxygen.yml                                               |    7 +-
 .github/workflows/release-lit.yml                                                   |    7 +-
 .github/workflows/release-sources.yml                                               |    4 +
 .github/workflows/release-tasks.yml                                                 |   12 ++
 clang-tools-extra/docs/ReleaseNotes.rst                                             |   35 ++++
 clang/docs/ReleaseNotes.rst                                                         |   25 +++
 clang/include/clang/AST/ASTContext.h                                                |    7 -
 clang/include/clang/AST/TemplateName.h                                              |    4 +-
 clang/include/clang/AST/Type.h                                                      |   11 +-
 clang/include/clang/Serialization/ASTWriter.h                                       |    4 +-
 clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def                         |    5 +
 clang/lib/AST/ASTContext.cpp                                                        |   25 +--
 clang/lib/AST/TemplateName.cpp                                                      |    9 +
 clang/lib/Basic/Targets/AArch64.cpp                                                 |   40 ++++-
 clang/lib/Basic/Targets/AArch64.h                                                   |    3 +
 clang/lib/Driver/ToolChains/Darwin.cpp                                              |   10 +-
 clang/lib/Format/ContinuationIndenter.cpp                                           |   10 +-
 clang/lib/Format/FormatToken.h                                                      |    3 +-
 clang/lib/Format/TokenAnnotator.cpp                                                 |   53 +++---
 clang/lib/Format/UnwrappedLineParser.cpp                                            |   11 +-
 clang/lib/Format/WhitespaceManager.cpp                                              |    4 +-
 clang/lib/Headers/emmintrin.h                                                       |    2 +-
 clang/lib/Headers/xmmintrin.h                                                       |    2 +-
 clang/lib/Sema/SemaTemplateInstantiate.cpp                                          |   73 ++++----
 clang/lib/Serialization/ASTWriter.cpp                                               |    3 +
 clang/lib/StaticAnalyzer/Checkers/Taint.cpp                                         |    7 +
 clang/test/Analysis/analyzer-config.c                                               |    1 +
 clang/test/Analysis/taint-generic.c                                                 |   49 +++++-
 clang/test/CodeGen/X86/strictfp_patterns.c                                          |   26 +++
 clang/test/CodeGen/aarch64-targetattr.c                                             |    9 +
 clang/test/Driver/Inputs/MacOSX15.0.sdk/SDKSettings.json                            |    2 +-
 clang/test/Driver/Inputs/MacOSX15.1.sdk/SDKSettings.json                            |    1 +
 clang/test/Driver/darwin-builtin-modules.c                                          |    3 +
 clang/test/Driver/linker-wrapper-passes.c                                           |   71 --------
 clang/test/Modules/pr106483.cppm                                                    |   41 +++++
 clang/test/Preprocessor/aarch64-target-features.c                                   |   16 ++
 clang/test/SemaTemplate/alias-template-with-lambdas.cpp                             |   75 +++++++-
 clang/test/lit.cfg.py                                                               |   12 --
 clang/test/lit.site.cfg.py.in                                                       |    4 -
 clang/tools/scan-build-py/CMakeLists.txt                                            |    6 +-
 clang/unittests/AST/CMakeLists.txt                                                  |    1 -
 clang/unittests/AST/ProfilingTest.cpp                                               |   75 --------
 clang/unittests/Format/FormatTest.cpp                                               |   54 ++++--
 clang/unittests/Format/FormatTestJS.cpp                                             |    8 +
 clang/unittests/Format/QualifierFixerTest.cpp                                       |   36 ++--
 clang/unittests/Format/TokenAnnotatorTest.cpp                                       |   60 ++++++-
 compiler-rt/lib/builtins/CMakeLists.txt                                             |    6 +-
 compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h                          |    9 +
 compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp                                |    2 +-
 libcxx/include/__algorithm/three_way_comp_ref_type.h                                |    1 +
 libcxx/include/format                                                               |   12 +-
 libunwind/include/CMakeLists.txt                                                    |    1 -
 libunwind/include/mach-o/compact_unwind_encoding.modulemap                          |    4 -
 lld/MachO/ObjC.cpp                                                                  |   10 +-
 lld/test/MachO/objc-category-merging-minimal.s                                      |   20 +--
 llvm/docs/ReleaseNotes.rst                                                          |   14 ++
 llvm/include/llvm/IR/IntrinsicsBPF.td                                               |    6 +-
 llvm/lib/CodeGen/DwarfEHPrepare.cpp                                                 |    7 +
 llvm/lib/CodeGen/MachinePipeliner.cpp                                               |   12 +-
 llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp                                       |   22 ++-
 llvm/lib/CodeGen/WindowScheduler.cpp                                                |   29 ++--
 llvm/lib/IR/BasicBlock.cpp                                                          |   24 ++-
 llvm/lib/Support/Z3Solver.cpp                                                       |    1 +
 llvm/lib/Target/AArch64/AArch64Processors.td                                        |    7 +-
 llvm/lib/Target/AMDGPU/AMDGPU.td                                                    |   23 ++-
 llvm/lib/Target/AMDGPU/GCNSubtarget.h                                               |    9 +
 llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp                                         |    9 +-
 llvm/lib/Target/AMDGPU/SIInstrInfo.cpp                                              |    4 +
 llvm/lib/Target/AMDGPU/SIInstrInfo.h                                                |    8 +
 llvm/lib/Target/PowerPC/PPCISelLowering.cpp                                         |   14 +-
 llvm/lib/Target/PowerPC/PPCInstr64Bit.td                                            |    4 +-
 llvm/lib/Target/PowerPC/PPCInstrInfo.td                                             |   12 +-
 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp                                           |   51 ------
 llvm/lib/Target/X86/X86SchedIceLake.td                                              |    2 +
 llvm/lib/Target/X86/X86SchedSkylakeServer.td                                        |    2 +
 llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp                          |   14 +-
 llvm/lib/Transforms/Scalar/ConstraintElimination.cpp                                |    2 +-
 llvm/test/CodeGen/AArch64/dag-combine-freeze.ll                                     |   31 ++++
 llvm/test/CodeGen/AArch64/dwarf-eh-prepare-dbg.ll                                   | 1175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 llvm/test/CodeGen/AMDGPU/buffer-fat-pointer-atomicrmw-fadd.ll                       |    3 +
 llvm/test/CodeGen/AMDGPU/buffer-fat-pointer-atomicrmw-fmax.ll                       |    5 +
 llvm/test/CodeGen/AMDGPU/buffer-fat-pointer-atomicrmw-fmin.ll                       |    5 +
 llvm/test/CodeGen/AMDGPU/llvm.amdgcn.struct.buffer.load.format.v3f16.ll             |    1 +
 llvm/test/CodeGen/AMDGPU/load-constant-i16.ll                                       |   10 +-
 llvm/test/CodeGen/AMDGPU/load-global-i16.ll                                         |   10 ++
 llvm/test/CodeGen/AMDGPU/load-global-i32.ll                                         |    2 +
 llvm/test/CodeGen/AMDGPU/pseudo-scalar-transcendental.mir                           |  120 +++++++++++++
 llvm/test/CodeGen/AMDGPU/spill-csr-frame-ptr-reg-copy.ll                            |    1 +
 llvm/test/CodeGen/AMDGPU/waitcnt-vmcnt-loop.mir                                     |  129 ++++++++++++++
 llvm/test/CodeGen/BPF/sockex2.ll                                                    |    2 +-
 llvm/test/CodeGen/Hexagon/swp-ws-fail-2.mir                                         |    1 +
 llvm/test/CodeGen/Hexagon/swp-ws-pragma-initiation-interval-fail.mir                |   83 +++++++++
 llvm/test/CodeGen/Hexagon/swp-ws-resource-reserve.mir                               |  100 +++++++++++
 llvm/test/CodeGen/Hexagon/swp-ws-stall-cycle.mir                                    |   59 +++++++
 llvm/test/CodeGen/Hexagon/swp-ws-zero-cost.mir                                      |   45 +++++
 llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-LoadReserve-StoreCond-64bit-only.ll |    2 +-
 llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-LoadReserve-StoreCond.ll            |    9 +-
 llvm/test/CodeGen/PowerPC/f128-aggregates.ll                                        |   12 +-
 llvm/test/CodeGen/SPARC/inlineasm.ll                                                |   10 ++
 llvm/test/CodeGen/X86/scatter-schedule.ll                                           |    4 +-
 llvm/test/Transforms/ConstraintElimination/pr105785.ll                              |   46 +++++
 llvm/test/Transforms/Coroutines/coro-pgo-setbranchweights.ll                        |   42 +++++
 llvm/test/Transforms/DCE/intrinsics-bpf.ll                                          |   33 ++++
 llvm/test/tools/llvm-mca/X86/Generic/resources-avx512.s                             |   35 +++-
 llvm/test/tools/llvm-mca/X86/Generic/resources-avx512vl.s                           |   54 +++++-
 llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512.s                       |   35 +++-
 llvm/test/tools/llvm-mca/X86/IceLakeServer/resources-avx512vl.s                     |   54 +++++-
 llvm/test/tools/llvm-mca/X86/SapphireRapids/resources-avx512.s                      |   35 +++-
 llvm/test/tools/llvm-mca/X86/SapphireRapids/resources-avx512vl.s                    |   54 +++++-
 llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512.s                       |   35 +++-
 llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-avx512vl.s                     |   54 +++++-
 llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512.s                              |   35 +++-
 llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vl.s                            |   54 +++++-
 llvm/unittests/IR/BasicBlockDbgInfoTest.cpp                                         |    4 +-
 llvm/unittests/TargetParser/TargetParserTest.cpp                                    |    2 +-
 llvm/utils/release/build_llvm_release.bat                                           |    1 +
 117 files changed, 3161 insertions(+), 504 deletions(-)

So I am currently leaning on doing a RC4 and hoping that the flow of changes slow down during the next two weeks and give people some time to test the latest batch of changes.

Since I am posting this on a saturday and don’t expect people to see it until Monday and the release is supposed to happen on Tuesday I know it’s not a lot of time for feedback, but let me know if think this is a bad idea, but from my point of view I rather have another RC and have a solid final version than push the final and have some bad regressions that we missed.

3 Likes

To be fair, this is almost a third of the changes.

Ignoring docs, tests & CI, I get:

51 files changed, 349 insertions(+), 251 deletions(-)

which looks less extreme.

Running git diff llvmorg-19.1.0-rc3 --stat=100 -- clang/include clang/lib clang/tools compiler-rt libcxx libunwind lld/MachO llvm/include llvm/lib llvm/utils on current release/19.x branch

 clang/include/clang/AST/ASTContext.h                        |  7 ----
 clang/include/clang/AST/TemplateName.h                      |  4 +-
 clang/include/clang/AST/Type.h                              | 11 +++--
 clang/include/clang/Serialization/ASTWriter.h               |  4 +-
 clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def |  5 +++
 clang/lib/AST/ASTContext.cpp                                | 25 +++--------
 clang/lib/AST/TemplateName.cpp                              |  9 ++++
 clang/lib/Basic/Targets/AArch64.cpp                         | 40 ++++++++++++++----
 clang/lib/Basic/Targets/AArch64.h                           |  3 ++
 clang/lib/Driver/ToolChains/Darwin.cpp                      | 10 ++++-
 clang/lib/Format/ContinuationIndenter.cpp                   | 10 ++---
 clang/lib/Format/FormatToken.h                              |  3 +-
 clang/lib/Format/TokenAnnotator.cpp                         | 53 ++++++++++++++----------
 clang/lib/Format/UnwrappedLineParser.cpp                    | 11 +++--
 clang/lib/Format/WhitespaceManager.cpp                      |  4 +-
 clang/lib/Headers/emmintrin.h                               |  2 +-
 clang/lib/Headers/xmmintrin.h                               |  2 +-
 clang/lib/Sema/SemaTemplateInstantiate.cpp                  | 73 +++++++++++++++++----------------
 clang/lib/Serialization/ASTWriter.cpp                       |  3 ++
 clang/lib/StaticAnalyzer/Checkers/Taint.cpp                 |  7 ++++
 clang/tools/scan-build-py/CMakeLists.txt                    |  6 +--
 compiler-rt/lib/builtins/CMakeLists.txt                     |  6 ++-
 compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h  |  9 ++++
 compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp        |  2 +-
 libcxx/include/__algorithm/three_way_comp_ref_type.h        |  1 +
 libcxx/include/format                                       | 12 +++---
 libunwind/include/CMakeLists.txt                            |  1 -
 libunwind/include/mach-o/compact_unwind_encoding.modulemap  |  4 --
 lld/MachO/ObjC.cpp                                          | 10 ++---
 llvm/include/llvm/IR/IntrinsicsBPF.td                       |  6 +--
 llvm/lib/CodeGen/DwarfEHPrepare.cpp                         |  7 ++++
 llvm/lib/CodeGen/MachinePipeliner.cpp                       | 12 +++++-
 llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp               | 22 ++++++++--
 llvm/lib/CodeGen/WindowScheduler.cpp                        | 29 ++++++++-----
 llvm/lib/IR/BasicBlock.cpp                                  | 24 +++++------
 llvm/lib/Support/Z3Solver.cpp                               |  1 +
 llvm/lib/Target/AArch64/AArch64Processors.td                |  7 +++-
 llvm/lib/Target/AMDGPU/AMDGPU.td                            | 23 ++++++++---
 llvm/lib/Target/AMDGPU/GCNSubtarget.h                       |  9 ++++
 llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp                 |  9 ++--
 llvm/lib/Target/AMDGPU/SIInstrInfo.cpp                      |  4 ++
 llvm/lib/Target/AMDGPU/SIInstrInfo.h                        |  8 ++++
 llvm/lib/Target/PowerPC/PPCISelLowering.cpp                 | 14 ++++---
 llvm/lib/Target/PowerPC/PPCInstr64Bit.td                    |  4 +-
 llvm/lib/Target/PowerPC/PPCInstrInfo.td                     | 12 +++---
 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp                   | 51 -----------------------
 llvm/lib/Target/X86/X86SchedIceLake.td                      |  2 +
 llvm/lib/Target/X86/X86SchedSkylakeServer.td                |  2 +
 llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp  | 14 +++++--
 llvm/lib/Transforms/Scalar/ConstraintElimination.cpp        |  2 +-
 llvm/utils/release/build_llvm_release.bat                   |  1 +
 51 files changed, 349 insertions(+), 251 deletions(-)

Still, given (e.g.) some of the in-flight fixes for clang regressions, I think it’s probably the best move to do an rc4. :slight_smile:

PS. Thanks a lot @tobiashieta for working through the queue so quickly!

From my perspective, it makes fairly little difference whether a fix makes it into .0 or .1, and as such I don’t particularly care whether there is an rc4 or not.

However, what I do care about is that the LLVM 19 ABI stabilizes as soon as possible. As such, if you’re going to do an rc4 release, it would be great if it had stable ABI (i.e. no ABI-breaking changes accepted between rc4 and .0).

Strictly on the clang side of things, I am not aware of anything that would warrant a delay at this stage.
If we have more regressions to fix, they can be handled in .2. And the recent changes pushed in rc3 have been purposefully minimal.

I don’t see the harm of a delay either, so ultimately I am fairly neutral on the outcome here!

I think it mostly depends on how many issues are still open. LLVM 19.X Release Milestone · GitHub lists 23 issues, but I don’t know how many of those you actually consider blocking.

Since I am posting this on a saturday and don’t expect people to see it until Monday and the release is supposed to happen on Tuesday I know it’s not a lot of time for feedback

Today is also a US holiday, so some folks may not see this until tomorrow.

from my point of view I rather have another RC and have a solid final version than push the final and have some bad regressions that we missed.

I agree with this.

I have decided to do another RC and release RC4 today, there are some important commits that we still wait for and the number of changes are pretty huge.

For RC4->Final - I will be VERY conservative with the patches we accept. So please note this if you want to submit a patch.

4 Likes

What is the target date for the final now?

From the release announcement:

The next release will be 19.1.0-final the 17th of September .

2 Likes