[all-commits] [llvm/llvm-project] 6c68a1: [CostModel][X86] Add variable divisor div/rem cost...
Adam Smith via All-commits
all-commits at lists.llvm.org
Fri Sep 11 14:31:55 PDT 2026
Branch: refs/heads/users/adams381/cir-union-bitfield-declared-extent
Home: https://github.com/llvm/llvm-project
Commit: 6c68a1661af7dce1f121fd20dfce72f4ddc4afc9
https://github.com/llvm/llvm-project/commit/6c68a1661af7dce1f121fd20dfce72f4ddc4afc9
Author: Adam Scott <adamscott200322 at gmail.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/Target/X86/X86TargetTransformInfo.cpp
A llvm/test/Analysis/CostModel/X86/div-rem-i64.ll
A llvm/test/Analysis/CostModel/X86/div-rem-strictfp.ll
M llvm/test/Analysis/CostModel/X86/div.ll
A llvm/test/Analysis/CostModel/X86/masked-divrem.ll
M llvm/test/Analysis/CostModel/X86/rem.ll
M llvm/test/Analysis/CostModel/X86/size-cost.ll
M llvm/test/Transforms/LoopVectorize/X86/cost-conditional-branches.ll
M llvm/test/Transforms/LoopVectorize/X86/cost-model.ll
M llvm/test/Transforms/LoopVectorize/X86/divs-with-tail-folding.ll
M llvm/test/Transforms/LoopVectorize/X86/pr109581-unused-blend.ll
M llvm/test/Transforms/LoopVectorize/X86/x86-predication.ll
M llvm/test/Transforms/SLPVectorizer/X86/alternate-int-inseltpoison.ll
M llvm/test/Transforms/SLPVectorizer/X86/alternate-int.ll
M llvm/test/Transforms/SLPVectorizer/X86/div-possibly-extended-with-poisons.ll
M llvm/test/Transforms/SLPVectorizer/X86/multi-nodes-to-shuffle.ll
M llvm/test/Transforms/SLPVectorizer/X86/no_alternate_divrem.ll
M llvm/test/Transforms/SLPVectorizer/X86/parent-node-split-non-schedulable.ll
M llvm/test/Transforms/SLPVectorizer/X86/runtime-alias-checks.ll
Log Message:
-----------
[CostModel][X86] Add variable divisor div/rem costs for scalar and <=i32 vectors (#215124)
Div and rem by a variable divisor have no X86 cost entry at all, so they
fall through to the BasicTTI default and cost 1. A 20 to 40 cycle
unpipelined instruction ends up priced the same as an add.
That mattered less while vector integer division always scalarized,
since the price was wrong but the decision was usually right anyway.
After #205263 the <=i32 shapes lower through a float divide, so the
vector cost model is now describing a sequence that really exists and it
still prices it as scalarization.
This adds scalar entries plus five feature gated vector tables.
Numbers are the maximum llvm-mca Block RThroughput across the CPUs that
fold the shape with the low power lines excluded (atom and jaguar).
Vector entries take the max within the tier a CPU's feature level
selects, since the lookup takes the first matching table. Scalar takes
it across all of them.
rem is priced the same as div because a variable rem is the same
instruction and the hardware hands back the remainder in rdx or AH. For
vector the fold pays a multiply and subtract to recover it but the
divide dominates the throughput so the number doesnt change.
div-rem-strictfp.ll is new and pins the strictfp gate. Two SLP tests run
on forced negative thresholds and needed those raised so both produce
output identical to before at the new value.
---------
Co-authored-by: Simon Pilgrim <llvm-dev at redking.me.uk>
Commit: a930601b854d881876a1b953f05f8632ade87304
https://github.com/llvm/llvm-project/commit/a930601b854d881876a1b953f05f8632ade87304
Author: Gauarv Chaudhary <137998824+ANAMASGARD at users.noreply.github.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td
A llvm/test/CodeGen/WebAssembly/simd-relaxed-fptoint.ll
Log Message:
-----------
[WebAssembly] Select relaxed_trunc for vector fptosi/fptoui with +relaxed-simd (#214148)
Fixes #211273
When `+relaxed-simd` is enabled, plain vector `fptosi`/`fptoui` from `<4
x float>` to `<4 x i32>` is still lowered to
`i32x4.trunc_sat_f32x4_{s,u}`. The relaxed SIMD instructions already
exist in the backend, but they were only wired to the
WebAssembly-specific `llvm.wasm.relaxed.trunc.*` intrinsics—not to
generic `fptosi`/`fptoui` IR.
This matters for frontends like LDC that emit ordinary `fptosi` for SIMD
casts (e.g. `_mm_cvttps_epi32`-style code). With
`+simd128,+relaxed-simd`, we should prefer
`i32x4.relaxed_trunc_f32x4_{s,u}`, which typically lowers more
efficiently
on native SIMD hardware.
The fix adds two TableGen selection patterns in
`WebAssemblyInstrSIMD.td`, gated on `HasRelaxedSIMD` with
`AddedComplexity = 1`, so they win over the existing
`fp_to_sint`/`fp_to_uint` → `trunc_sat` patterns when relaxed SIMD is
available.
This does not require fast-math: for representable inputs, relaxed
truncation matches LLVM semantics; for NaN/out-of-range inputs,
`fptosi`/`fptoui` already produce poison, so the backend is not required
to preserve `trunc_sat`'s
saturating behavior.
Explicit saturating conversions (`llvm.fptosi.sat` / `fp_to_sint_sat`)
and `+simd128`-only targets are unchanged.
## Test plan
- [x] `llvm-lit llvm/test/CodeGen/WebAssembly/simd-relaxed-fptoint.ll`
- [x] `llvm-lit llvm/test/CodeGen/WebAssembly/simd-conversions.ll`
- [x] `llvm-lit llvm/test/CodeGen/WebAssembly/simd-intrinsics.ll`
Signed-off-by: Gaurav Chaudhary <chaudharygaurav2004 at gmail.com>
Commit: 0a8a6c4d77ec8b103d2718f936724179246b9540
https://github.com/llvm/llvm-project/commit/0a8a6c4d77ec8b103d2718f936724179246b9540
Author: Razvan Lupusoru <razvan.lupusoru at gmail.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M flang/test/lib/OpenACC/CMakeLists.txt
Log Message:
-----------
[flang][acc] Add missing dependencies for TestOpenACCSupport (#222996)
Adds missing dependencies to avoid:
undefined reference to `mlir::acc::getOrCreateGPUModule` undefined
reference to `mlir::acc::OpenACCSupport::getVariableName` after
https://github.com/llvm/llvm-project/pull/222815
Commit: 8a36fb2bfef788e6448af7791edd68fd3c0afc56
https://github.com/llvm/llvm-project/commit/8a36fb2bfef788e6448af7791edd68fd3c0afc56
Author: forking-google-bazel-bot[bot] <265904573+forking-google-bazel-bot[bot]@users.noreply.github.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel
M utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl
Log Message:
-----------
[Bazel] Fixes 0f47e79 (#222999)
This fixes 0f47e798205bbaa84d12073c56d5d8c07ea65f59 (#218024).
Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=0f47e798205bbaa84d12073c56d5d8c07ea65f59
Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
Commit: 5e77e2f8bc888b40753e5add3fa1bcf6e50d9b60
https://github.com/llvm/llvm-project/commit/5e77e2f8bc888b40753e5add3fa1bcf6e50d9b60
Author: Alexey Bataev <a.bataev at outlook.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
M llvm/test/Transforms/PhaseOrdering/X86/vector-reductions-logical.ll
M llvm/test/Transforms/SLPVectorizer/AArch64/fmuladd-absorbed-copyable-sched-deps.ll
M llvm/test/Transforms/SLPVectorizer/AArch64/lcssa-phi-extract-scale.ll
M llvm/test/Transforms/SLPVectorizer/AArch64/reduce-fadd.ll
M llvm/test/Transforms/SLPVectorizer/AArch64/vec3-reorder-reshuffle.ll
M llvm/test/Transforms/SLPVectorizer/X86/crash_cmpop.ll
M llvm/test/Transforms/SLPVectorizer/X86/dot-product.ll
M llvm/test/Transforms/SLPVectorizer/X86/lookahead.ll
M llvm/test/Transforms/SLPVectorizer/X86/phi-removed-on-operand-vectorization.ll
M llvm/test/Transforms/SLPVectorizer/consecutive-access.ll
M llvm/test/Transforms/SLPVectorizer/extractelement-insertpoint.ll
Log Message:
-----------
[SLP]Treat 2-element FP reductions as always associative
A reduction of exactly 2 elements is a single operation, so no
reassociation is possible and the associativity check is not needed.
Emit vector.reduce.fadd/fmul with the reassoc flag for such
reductions even when the scalar operation lacks it, instead of
2 extracts + scalar operation.
Reviewers: bababuck, MrSidims
Pull Request: https://github.com/llvm/llvm-project/pull/222715
Commit: 374a8320bf21962b6749965b97294e4815641cb6
https://github.com/llvm/llvm-project/commit/374a8320bf21962b6749965b97294e4815641cb6
Author: Leo Camus <leo.camus23 at gmail.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M libc/utils/cmake_format.py
M libc/utils/cmake_format_test.py
Log Message:
-----------
[libc] Write LF line endings from cmake_format.py on every platform (#222742)
I ran the libc CMake formatter on Windows and it gave back a file whose
every line had changed:
```
$ printf 'add_library(foo STATIC\n a.c\n)\n' > CMakeLists.txt
$ python libc/utils/cmake_format.py -i CMakeLists.txt
Formatted CMakeLists.txt
$ python -c "print(open('CMakeLists.txt','rb').read())"
b'add_library(foo STATIC\r\n a.c\r\n)\r\n'
```
`format_cmake_content()` joins its lines with `"\n"`, but
`process_file()` hands that string to `open(temp_file, "w",
encoding="utf-8")`, and a text-mode write substitutes the platform line
separator. So on Windows, reformatting one command in a file rewrites
the endings of the whole file. `.gitattributes` declares no `text`/`eol`
rules and `llvm/docs/GettingStarted.md` tells people to clone with
`core.autocrlf=false`, so nothing normalizes those endings back before
the commit.
The read side already normalizes: `open(..., "r")` gives universal
newlines, so a CRLF file is LF by the time the formatter sees it.
Passing `newline="\n"` on the write makes both ends agree and gives the
same bytes on every platform.
The same substitution applies to stdout, which affects the piped output
and the `--diff` text (a CRLF diff does not apply against an LF file),
so I configured stdout the same way in `main()`.
One behaviour change worth flagging: on Windows, a CMake file that
currently has CRLF endings and needs reformatting now comes out with LF
rather than CRLF. Files that are already formatted are not written at
all, before or after, since the comparison is made on the LF-normalized
read.
For the tests, everything in `cmake_format_test.py` today asserts on the
string returned by `format_cmake_content()`, so nothing covers what
lands on disk. I added two cases that compare the bytes on disk and on
stdout against that string. They fail on Windows before this change (the
assertion prints `b'...\r\n...' != b'...\n...'`) and pass after; on
Linux and macOS they pass either way, since the separator is already LF.
The file went from 47 to 49 tests, all passing under `python -m unittest
cmake_format_test`.
I did not have `black` available on that machine, so the added code
follows the surrounding style by hand rather than by running the
formatter.
AI tools used
Commit: ba1687b72476eb368641b9a9f565a38cf41b7393
https://github.com/llvm/llvm-project/commit/ba1687b72476eb368641b9a9f565a38cf41b7393
Author: Nerixyz <nerixdev at outlook.de>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M lldb/include/lldb/API/SBFile.h
M lldb/source/API/SBFile.cpp
M lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
Log Message:
-----------
[lldb][Windows] Remove use of unstable ABI and fix SB API visibility (#222665)
Addresses the post-commit review comments from the original PR
(https://github.com/llvm/llvm-project/pull/217126#pullrequestreview-5162589053).
- `SBFile::OpenFdFromHandle` is now visible on all platforms (just
`#ifndef SWIG`) and returns -1 by default.
- Removed non-stable `PyLong_Check` in favor of `PyErr_Occurred` and
`PyErr_Clear`.
Commit: 93b2629d1d1f52e90549e6e12901c3f51ceba273
https://github.com/llvm/llvm-project/commit/93b2629d1d1f52e90549e6e12901c3f51ceba273
Author: Nick Desaulniers <ndesaulniers at google.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M clang/lib/CodeGen/CGExpr.cpp
M clang/lib/Sema/JumpDiagnostics.cpp
M clang/lib/Sema/SemaExpr.cpp
M clang/test/AST/ast-dump-expr-json.c
M clang/test/C/C11/n1285_1.c
M clang/test/CodeGen/attr-counted-by-with-sanitizers.c
M clang/test/CodeGen/attr-counted-by-without-sanitizers.c
A clang/test/CodeGen/compound-literal-lifetime.c
M clang/test/CodeGenObjC/arc-ternary-op.m
M clang/test/Sema/scope-check.c
Log Message:
-----------
[clang][CodeGen] Emit lifetime markers for block-scoped compound literals in C (#219045)
In C (C99/C11/C23 §6.2.4.5), block-scoped compound literals have
automatic storage duration extending to the end of the enclosing block
scope. Previously, Clang emitted alloca storage without lifetime
markers (@llvm.lifetime.start / @llvm.lifetime.end), preventing LLVM's
StackColoring pass from merging stack slots across disjoint scopes and
inflating stack frame size.
Following John McCall's guidance in #68746:
1. In Sema, record block-scoped compound literals in ExprCleanupObjects
so
the enclosing full-expression is wrapped in an ExprWithCleanups.
2. In CodeGen, emit @llvm.lifetime.start before evaluating initializers
and
schedule CallLifetimeEnd as a cleanup.
Checking a build of an x86_64 Linux kernel defconfig build, this shaves
448 bytes off the stack usage for azx_probe(), one of the larger stack
users in the kernel.
Assisted-by: Gemini
Fixes: https://github.com/llvm/llvm-project/issues/68746
Commit: cb029994abbda52adf1986df5c6198c3e1fff4da
https://github.com/llvm/llvm-project/commit/cb029994abbda52adf1986df5c6198c3e1fff4da
Author: Alexey Bataev <a.bataev at outlook.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
M llvm/test/Transforms/PhaseOrdering/X86/fma-reassociate-pairs.ll
M llvm/test/Transforms/SLPVectorizer/X86/fma-operand-index.ll
M llvm/test/Transforms/SLPVectorizer/X86/reassociated-fma-reduction.ll
M llvm/test/Transforms/SLPVectorizer/X86/revectorized_rdx_crash.ll
Log Message:
-----------
[SLP]Allow min-VF vectorization of seed-level reduction groups
Small reduced-value groups of single-use seed-level reductions may
vectorize at VF=2, if the values are used by the reduction operations
only and no scalar leftovers remain. For fadd this replaces the
ordered reduction fallback; for the other kinds trunk leaves such
groups scalar.
Reviewers: RKSimon, bababuck, MrSidims
Pull Request: https://github.com/llvm/llvm-project/pull/222757
Commit: 4e3bec11527cdbca2e79909f7a5badd12db191a7
https://github.com/llvm/llvm-project/commit/4e3bec11527cdbca2e79909f7a5badd12db191a7
Author: Helena Kotas <hekotas at microsoft.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/Target/SPIRV/SPIRVLegalizeImplicitBinding.cpp
Log Message:
-----------
[SPIRV] Refactor implicit binding legalization (#222848)
This change rewrites the `SPIRVLegalizeImplicitBinding` pass so that
binding collection is driven by intrinsic declarations rather than a
full-module instruction walk.
Previously, the pass used an `InstVisitor` to visit every instruction in
the module and find calls to a small set of intrinsics. The new
implementation iterates over the intrinsic declarations and their users,
making the cost proportional to the number of relevant resource calls
rather than the size of the module.
There is no change to the SPIR-V emitted for existing shaders. Implicit
bindings are still assigned the same numbers.
Other improvements include:
- Order IDs are extracted once into a `SmallVector` instead of being
recomputed on each sort comparisons.
- The separate `verifyUniqueOrderIdPerResource` walk is folded into the
binding assignment loop.
- Make helpers that replace implicit binding calls static.
- Added a `HasImplicitBinding` flag for early exit and accurate
`Changed` reporting, so a module with no implicit bindings (or with a
declaration that has no users) now returns `PreservedAnalyses::all()`
instead of unconditionally invalidating analyses.
Assisted by Claude Opus 5.
This is a second attempt to land this - I accidentally merged the first
one into a stack branch:
https://github.com/llvm/llvm-project/pull/221662
Commit: 8ad4ac7d28c618d8a35229c480fc8ea912dea1ec
https://github.com/llvm/llvm-project/commit/8ad4ac7d28c618d8a35229c480fc8ea912dea1ec
Author: Jackson Stogel <jtstogel at gmail.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M utils/bazel/llvm-project-overlay/libc/BUILD.bazel
M utils/bazel/llvm-project-overlay/libc/libc_build_rules.bzl
A utils/bazel/llvm-project-overlay/libc/startup/linux/BUILD.bazel
A utils/bazel/llvm-project-overlay/libc/startup/linux/startup_rules.bzl
A utils/bazel/llvm-project-overlay/libc/startup/linux/x86_64/BUILD.bazel
Log Message:
-----------
[bazel][libc] Add targets for startup objects on linux (#218995)
This PR adds Bazel targets for `crt{1,i,n}.o` startup objects on Linux
x86-64.
Commit: 800e7f8f308196b27cec5880789a1519e0bee70a
https://github.com/llvm/llvm-project/commit/800e7f8f308196b27cec5880789a1519e0bee70a
Author: Christian Kandeler <christian.kandeler at qt.io>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp
M clang-tools-extra/clangd/unittests/tweaks/ExtractFunctionTests.cpp
M clang-tools-extra/docs/ReleaseNotes.md
Log Message:
-----------
[clangd] Offer Extract to Function for single expression-statements (#219945)
The tweak refused to trigger whenever the extraction zone contained a
single statement that was an expression, e.g. a lone call like
`log("connection failed");` or an overloaded-operator statement like
`std::cout << "x";`. The former was blocked by an overly broad check in
validSingleChild(); the latter additionally required
getParentOfRootStmts() to recognize that such a statement can be its own
root statement even while marked Unselected, rather than being treated
as a container of root statements.
Fixes clangd/clangd#698
Fixes clangd/clangd#1254
Assisted-by: Claude
Commit: 83d02acbcde4c84e448a4b1d52878b7bcf8ecf6f
https://github.com/llvm/llvm-project/commit/83d02acbcde4c84e448a4b1d52878b7bcf8ecf6f
Author: Dennis Duda <git at seri.tools>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
A llvm/test/CodeGen/RISCV/fadd-fmul-dagcombine.ll
Log Message:
-----------
[DAGCombine] Do not gate a pre-legalization FADD fold on FMUL legality (#218748)
Now follows the same check as `fold (fadd A, (fneg B)) -> (fsub A, B)`
and `fold (fadd (fneg A), B) -> (fsub B, A)` a few lines above
Co-authored-by: Claude (Claude-Opus-5) <noreply at anthropic.com>
Commit: 18db3eee9d04da389180f907bfb1bf84bb589abd
https://github.com/llvm/llvm-project/commit/18db3eee9d04da389180f907bfb1bf84bb589abd
Author: Alex Strelnikov <strel at google.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M libc/fuzzing/stdio/printf_parser_fuzz.cpp
M libc/src/__support/printf_core/CMakeLists.txt
M libc/src/__support/printf_core/core_structs.h
M libc/src/__support/printf_core/parser.h
M libc/src/__support/printf_core/printf_main.h
M libc/test/UnitTest/CMakeLists.txt
M libc/test/UnitTest/LibcTest.cpp
M libc/test/UnitTest/PrintfMatcher.cpp
M libc/test/UnitTest/PrintfMatcher.h
M libc/test/UnitTest/StringUtils.h
M libc/test/src/__support/printf_core/CMakeLists.txt
M libc/test/src/__support/printf_core/parser_test.cpp
Log Message:
-----------
[libc] Template printf_core::Parser to support wchar_t. (#222988)
This is the next step in the ongoing refactor to support wide character
printf functions.
`printf_core::FormatSection` is also templated on character type as it
is required for parser_test. `FormatSection` is named in many more
places. In order to keep this PR on the smaller side, it also gets a
rename + `char` alias in the pattern of `basic_string_view` /
`string_view`.
Assisted-by: Automated tooling, human reviewed.
Commit: 241e034bcc466e368d5f61fe1836598390c58e69
https://github.com/llvm/llvm-project/commit/241e034bcc466e368d5f61fe1836598390c58e69
Author: Aman Maurya <amanmaurya9209 at gmail.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M clang/include/clang/Basic/BuiltinsPPC.def
M clang/lib/Headers/altivec.h
M clang/test/CodeGen/PowerPC/builtins-ppc-p9vector.c
A clang/test/SemaCXX/altivec-vec-msum-p9.cpp
Log Message:
-----------
[PowerPC] Add missing vec_msum and vec_vmsumudm builtins for POWER9 (#221199)
This patch exposes `__builtin_altivec_vmsumudm` in `BuiltinsPPC.def` and
adds the missing `vec_msum` and `vec_vmsumudm` intrinsics in
`<altivec.h>` matching GCC 11+ behavior.
Commit: abf41391777c822d4f5010b1f38d5a0f09102ea1
https://github.com/llvm/llvm-project/commit/abf41391777c822d4f5010b1f38d5a0f09102ea1
Author: Craig Topper <craig.topper at sifive.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
M llvm/test/Transforms/AggressiveInstCombine/AArch64/combine_ignore_debug.ll
M llvm/test/Transforms/AggressiveInstCombine/AArch64/or-load.ll
A llvm/test/Transforms/AggressiveInstCombine/RISCV/or-load.ll
A llvm/test/Transforms/AggressiveInstCombine/RISCV/store-merge.ll
Log Message:
-----------
[AggressiveInstCombine] Use DL.fitsInLegalInteger instead of TTI.isTypeLegal in consecutive load/store combine. (#220310)
riscv64 doesn't have a legal i32 type in the backend, but we
support i16, and i32 loads/stores. AArch64 also supports i16
loads/stores even though i16 isn't legal.
Replace TTI.isTypeLegal with DL.fitsInLegalInteger and a check for
a power of 2 number of bytes. This covers i16 and i32 for RISC-V
and i16 for AArch64.
We could further relax this to cover types that the backend can handle
by splitting, but I'd like to leave that for a future patch.
I had to update some existing tests to have more accurate datalayouts.
The RISC-V tests are reduced from existing tests from AArch64 or X86 to
show some of the load sizes that can now be matched.
Commit: 40de2ac09e4083b773c7fc4f9c701a864baad6be
https://github.com/llvm/llvm-project/commit/40de2ac09e4083b773c7fc4f9c701a864baad6be
Author: forking-google-bazel-bot[bot] <265904573+forking-google-bazel-bot[bot]@users.noreply.github.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M utils/bazel/llvm-project-overlay/libc/BUILD.bazel
M utils/bazel/llvm-project-overlay/libc/test/UnitTest/BUILD.bazel
M utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel
Log Message:
-----------
[Bazel] Fixes 18db3ee (#223009)
This fixes 18db3eee9d04da389180f907bfb1bf84bb589abd (#222988).
Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=18db3eee9d04da389180f907bfb1bf84bb589abd
Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
Commit: 318e5ab66c1496784eb16ed1af193a58c75efd59
https://github.com/llvm/llvm-project/commit/318e5ab66c1496784eb16ed1af193a58c75efd59
Author: Arseniy Obolenskiy <arseniy.obolenskiy at amd.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
M llvm/lib/Target/AMDGPU/SIInstrInfo.h
M llvm/test/CodeGen/AMDGPU/dpp_combine.ll
M llvm/test/CodeGen/AMDGPU/si-fold-operands-gfx11.mir
Log Message:
-----------
[AMDGPU] Do not commute DPP instructions with a non-identity dpp_ctrl (#218393)
DPP only swizzles src0, and that does not move with the operands, so
commuting changes which value each lane actually reads
Commit: dc7e9b16f229adbad90bafe1bd5685794ffb4710
https://github.com/llvm/llvm-project/commit/dc7e9b16f229adbad90bafe1bd5685794ffb4710
Author: Christopher Ferris <cferris1000 at users.noreply.github.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M compiler-rt/lib/scudo/standalone/release.h
M compiler-rt/lib/scudo/standalone/tests/release_test.cpp
Log Message:
-----------
[scudo] Refactor BufferPool code slightly. (#222811)
Pass the Buffer object in buffer creation functions. Add an error
message if the dynamic buffer creation fails.
Add a threaded unit test to verify the BufferPool handles concurrent
buffer creation properly.
Also, fix a few typos in the code.
Commit: 57ad7898dc17e228c3ce1d34a53626080131f384
https://github.com/llvm/llvm-project/commit/57ad7898dc17e228c3ce1d34a53626080131f384
Author: Kiva <zengtao at iscas.ac.cn>
Date: 2026-09-12 (Sat, 12 Sep 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
M llvm/test/Transforms/SLPVectorizer/RISCV/strided-load-common-alignment.ll
Log Message:
-----------
[RISCV][SLP] Use common alignment when checking constant-stride loads (#222520)
Fix SLP's constant-stride load legality check, which can widen naturally
aligned 32-bit loads into misaligned 64-bit RVV accesses and cause
`SIGBUS`.
In `BoUpSLP::canVectorizeLoads`, the check uses the first sorted load's
alignment, which may be stronger than that of later widened groups. Pass
`CommonAlignment` to `analyzeConstantStrideCandidate` instead, matching
the existing cost model and code generation. This is conservative: it
fixes the legality check without deriving a more precise alignment for
each widened group's starting address, so it may reject some otherwise
legal widening.
### Reproducer
The following reproduces the failure on the tested [SpacemiT K1 / Banana
Pi F3](https://docs.banana-pi.org/en/BPI-F3/BananaPi_BPI-F3) running
RV64 Linux, compiled with `-O3 -march=rv64gcv -mabi=lp64d
-mstrict-align`:
```c
struct Row {
unsigned x, y, padding[5];
};
_Static_assert(sizeof(unsigned) == 4, "requires 32-bit unsigned");
_Static_assert(sizeof(struct Row) == 28, "requires a 28-byte row");
__attribute__((noinline))
void gather_fields(const struct Row *p, unsigned *restrict out) {
p = __builtin_assume_aligned(p, 16);
out[0] = p[0].x + 3;
out[1] = p[0].y + 3;
out[2] = p[1].x + 3;
out[3] = p[1].y + 3;
}
int main(void) {
_Alignas(16) struct Row rows[2] = {
{5, 9, {0}}, {11, 17, {0}}};
unsigned out[4];
gather_fields(rows, out);
return out[0] != 8 || out[1] != 12 ||
out[2] != 14 || out[3] != 20;
}
```
The alignment assumption is satisfied, and the four loads at byte
offsets `0`, `4`, `28`, and `32` are naturally aligned and in bounds.
SLP widens the adjacent pairs into:
```llvm
%v = call <2 x i64> @llvm.experimental.vp.strided.load.v2i64.p0.i64(
ptr align 4 %p, i64 28, <2 x i1> splat (i1 true), i32 2)
```
On RV64 this lowers to:
```asm
li a2, 28
vsetivli zero, 2, e64, m1, ta, ma
vlse64.v v8, (a0), a2
```
whose second active lane accesses `base + 28`, which is not eight-byte
aligned. The legality check incorrectly uses alignment 16, although the
emitted intrinsic already carries `align 4`.
On the tested machine, the example raises `SIGBUS` before the fix and
returns zero afterward. The fixed compiler uses 32-bit vector loads and
retains vectorized arithmetic.
Commit: 78ae84025be3bc2e711e803b79b8515075c97a80
https://github.com/llvm/llvm-project/commit/78ae84025be3bc2e711e803b79b8515075c97a80
Author: Ambrose Leeb <aleeb at nvidia.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M clang/docs/ReleaseNotes.md
M clang/lib/CodeGen/CGVTables.cpp
M clang/lib/Headers/__clang_hip_runtime_wrapper.h
A clang/test/CodeGenCUDA/pure_deleted_virtual.cu
M clang/test/Headers/hip-header.hip
M clang/test/OpenMP/nvptx_target_pure_deleted_codegen.cpp
Log Message:
-----------
[Clang] [CUDA] Provide device-side definitions of `__cxa_[pure|deleted]_virtual()` (#217427)
Currently, we don't provide definitions of these on the device side, and
since there is also no C++ runtime on the device side, if a call to a
pure or deleted virtual function makes it into the final IR, the program
will fail to assemble because `ptxas` can’t find a definition of
`__cxa_pure_virtual()` or `__cxa_deleted_virtual()`.
This patch updates Clang to emit weak definitions of these functions
that trap.
Fixes #49183, fixes #67533.
Commit: f47e8e7f5e028c0e441caa2973e5971817927a05
https://github.com/llvm/llvm-project/commit/f47e8e7f5e028c0e441caa2973e5971817927a05
Author: Adam Smith <adams at nvidia.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M clang/include/clang/CIR/MissingFeatures.h
M clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
M clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
M clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.h
M clang/test/CIR/CodeGen/array-ctor.cpp
R clang/test/CIR/CodeGen/call-conv-lowering-x86_64-byref.cpp
A clang/test/CIR/CodeGen/call-conv-lowering-x86_64-non-byval.cpp
M clang/test/CIR/CodeGen/call-conv-lowering-x86_64-vptr.cpp
M clang/test/CIR/CodeGen/cleanup-conditional-with-wrapper-eh.cpp
M clang/test/CIR/CodeGen/cleanup-conditional-with-wrapper.cpp
M clang/test/CIR/CodeGen/lambda-dtor-field.cpp
M clang/test/CIR/CodeGen/partial-array-cleanup.cpp
M clang/test/CIR/CodeGenOpenACC/declare-copy.cpp
M clang/test/CIR/CodeGenOpenACC/declare-copyin.cpp
M clang/test/CIR/CodeGenOpenACC/declare-copyout.cpp
M clang/test/CIR/CodeGenOpenACC/declare-create.cpp
M clang/test/CIR/CodeGenOpenACC/declare-deviceresident.cpp
M clang/test/CIR/CodeGenOpenACC/declare-present.cpp
M clang/test/CIR/Transforms/abi-lowering/byval-sret-arg-attr-lowering.cir
R clang/test/CIR/Transforms/abi-lowering/indirect-byref-forward-param.cir
R clang/test/CIR/Transforms/abi-lowering/indirect-byref-nyi.cir
M clang/test/CIR/Transforms/abi-lowering/indirect-byval.cir
A clang/test/CIR/Transforms/abi-lowering/indirect-non-byval-forward-param.cir
A clang/test/CIR/Transforms/abi-lowering/indirect-non-byval-nyi.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-empty-class.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-record-packed.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-struct-indirect.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-struct-padded.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-union.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-vptr.cir
Log Message:
-----------
[CIR] Emit classic's attributes for a non-byval indirect argument (#222445)
CallConvLowering marked an indirect argument that is not byval with
llvm.byref. Classic gives this argument llvm.nofreeobj, llvm.noundef,
llvm.align, and llvm.dereferenceable instead.
A call site forwarding such a parameter used to identify it by reading
llvm.byref back, so the pass now records the parameter where the
signature rewrite creates it. The "byref" vocabulary is removed, since
it no longer names anything CIR emits.
Assisted-by: Cursor / claude-opus-5
Commit: 2e19a54753db13719d99fa126ef1a9cb2d3cc240
https://github.com/llvm/llvm-project/commit/2e19a54753db13719d99fa126ef1a9cb2d3cc240
Author: Amr Hesham <amr96 at programmer.net>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M clang/docs/ReleaseNotes.md
M clang/lib/Sema/SemaChecking.cpp
M clang/test/AST/ByteCode/cxx23.cpp
A clang/test/SemaCXX/vector-shuffle.cpp
Log Message:
-----------
[Clang][Sema] Report diagnostic for invalid mask in shufflevector (#221558)
Clang used to accept a vector with an integer representation as a valid
mask; otherwise, it reported a type mismatch. This led to accepting a
vector of booleans as a valid mask and reporting that types are not
equal if both arguments are equal but not vectors of integers.
Currently, it checks for the mask type and reports a clear error message
if the mask is a vector of bool or not a vector of integers
Fixes: #218132
Commit: 0a5aa293a4e76add0a3abefbf41320b70cb77c1f
https://github.com/llvm/llvm-project/commit/0a5aa293a4e76add0a3abefbf41320b70cb77c1f
Author: Sergey Shcherbinin <sscherbinin at nvidia.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/docs/CommandGuide/llvm-profdata.md
M llvm/include/llvm/ProfileData/SampleProf.h
M llvm/include/llvm/ProfileData/SampleProfReader.h
M llvm/include/llvm/ProfileData/SampleProfWriter.h
M llvm/lib/ProfileData/SampleProfReader.cpp
M llvm/lib/ProfileData/SampleProfWriter.cpp
A llvm/test/Transforms/SampleProfile/Inputs/composite-cs-profile.proftext
A llvm/test/Transforms/SampleProfile/composite-cs-profile.ll
M llvm/test/Transforms/SampleProfile/csspgo-inline-icall.ll
A llvm/test/tools/llvm-profdata/Inputs/composite-duplicate-type.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-empty-section.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-head-only.proftext
A llvm/test/tools/llvm-profdata/Inputs/composite-mixed-empty.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-mixed-nonempty.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-payload-oversized.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-payload-undersized.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-prepended-unknown.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-unknown-nested.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-unknown-oob.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-unknown-top.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-version-103.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-version-104.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-zero-block.proftext
A llvm/test/tools/llvm-profdata/Inputs/sample-composite-empty-lbr.proftext
A llvm/test/tools/llvm-profdata/composite-compress.test
A llvm/test/tools/llvm-profdata/composite-compressed-info.test
A llvm/test/tools/llvm-profdata/composite-empty-lbr.test
A llvm/test/tools/llvm-profdata/composite-eytzinger-split-nametable-partition.test
A llvm/test/tools/llvm-profdata/composite-head-only.test
A llvm/test/tools/llvm-profdata/composite-mixed-sections.test
A llvm/test/tools/llvm-profdata/composite-multiple-blocks.test
A llvm/test/tools/llvm-profdata/composite-payload-boundaries.test
A llvm/test/tools/llvm-profdata/composite-unknown-resume-nested.test
A llvm/test/tools/llvm-profdata/composite-version-reader.test
A llvm/test/tools/llvm-profdata/composite-vtable.test
A llvm/test/tools/llvm-profdata/composite-zero-block.test
M llvm/test/tools/llvm-profdata/sample-flatten-profile.test
M llvm/test/tools/llvm-profdata/sample-split-layout.test
A llvm/test/tools/llvm-profdata/show-composite-profile-info.test
M llvm/tools/llvm-profdata/llvm-profdata.cpp
M llvm/unittests/ProfileData/SampleProfTest.cpp
Log Message:
-----------
Introduction of Composite Profile section in ExtBinary format (#166553)
New sections are introduced for storing profile of vairous types:
* SecCompositeProfile (like SecLBRProfile but can conain multi-type
profile)
* SecCompositeFuncOffsetTable (like SecFuncOffsetTable but offsets point
to SecCompositeProfile)
The only change in the structure of ExtBinary is a substitution of
SecLBRProfile and SecFuncOffsetTable sections by new (composite) ones,
so, to void duplication of layout description and handling, all changes
are done on low-level: section types are modified in the existing layout
right before profile writing.
No new profile types are introduced - this change is rather a
preparation for future profiling extentions: only LBR profile can be
inside currently.
Processing of VTable profile is unmodified.
Extended description is here:
https://discourse.llvm.org/t/rfc-typifiedprofilesection-generalized-per-function-profile-blocks-in-extbinary-format/87881
Testing of the new scenario is added to
llvm/test/tools/llvm-profdata/sample-flatten-profile.test and also new
tests are introduced.
Assisted by GPT-5.
Commit: 5afbbd04803cc2e30d6026c98b245a1599d09ac9
https://github.com/llvm/llvm-project/commit/5afbbd04803cc2e30d6026c98b245a1599d09ac9
Author: Jeff Bailey <jbailey at raspberryginger.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M libc/src/__support/CPP/CMakeLists.txt
A libc/src/__support/CPP/vector.h
M libc/test/src/__support/CPP/CMakeLists.txt
A libc/test/src/__support/CPP/vector_test.cpp
Log Message:
-----------
[libc][CPP] Add vector container and unit tests (#222972)
Sequential group database entrypoints require dynamically resizable
buffers to parse arbitrary-length records and member lists reliably.
Rather than managing raw heap reallocations manually within subsystem
parsers, dynamic growth is encapsulated in a dedicated cpp::vector
container.
Add cpp::vector in libc/src/__support/CPP/vector.h with move semantics,
safe fallible allocation (returning bool for out-of-memory handling
without C++ exceptions), and RAII clean-up for trivially and
non-trivially destructible types.
* Add vector header library in libc/src/__support/CPP/CMakeLists.txt
* Implement vector container in libc/src/__support/CPP/vector.h
* Add comprehensive unit tests in
libc/test/src/__support/CPP/vector_test.cpp
* Register vector_test in libc/test/src/__support/CPP/CMakeLists.txt
Assisted-by: Automated tooling, human reviewed.
Commit: 33578bd6698a455c2faef2c5a5a9652f621ec9d5
https://github.com/llvm/llvm-project/commit/33578bd6698a455c2faef2c5a5a9652f621ec9d5
Author: Douglas Yung <douglas.yung at sony.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Log Message:
-----------
[SLP] Fix lambda added in #222755 which did not build with VS2019. (#223016)
PR #222755 added a lambda which fails to compile with VS2019 as can be
seen on our bot https://lab.llvm.org/buildbot/#/builders/46/builds/41157.
This change fixes the error by explicitly adding the variable Limit to
the lambda capture list.
Commit: 652436711805b4aa035341324465c880f19d297d
https://github.com/llvm/llvm-project/commit/652436711805b4aa035341324465c880f19d297d
Author: Larry Meadows <Lawrence.Meadows at amd.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
M llvm/lib/Transforms/IPO/OpenMPOpt.cpp
M llvm/test/Transforms/OpenMP/callback_parallel_regions.ll
M llvm/test/Transforms/OpenMP/custom_state_machines.ll
M llvm/test/Transforms/OpenMP/spmdization.ll
M llvm/test/Transforms/OpenMP/spmdization_guarding.ll
M llvm/test/Transforms/OpenMP/spmdization_indirect.ll
M llvm/test/Transforms/OpenMP/spmdization_no_guarding_two_reaching_kernels.ll
M openmp/device/include/Interface.h
M openmp/device/src/Mapping.cpp
Log Message:
-----------
[OpenMPOpt] Ask the runtime how many of a block's threads can be workers (#221450)
The custom state machine gates a thread on `InitCB < BlockHwSize -
WarpSize`,
reconstructing the worker count from the block size on the assumption
that the
main thread occupies a whole warp above them. That arithmetic has to be
kept in
step with whatever launch geometry the toolchain uses, and when it is
not, the
workers in between are left in neither group, waiting for no parallel
region
while the runtime hands them iterations.
Export the number the device runtime already computes in
`mapping::getMaxTeamThreads()`, which its own generic state machine
gates on, as
`__kmpc_get_max_team_threads()`, and gate on that instead. The new entry
point is
added to the virtual-use callback that keeps the state machine's callees
alive,
and the existing `runtimeFnsAvailable()` check skips the rewrite against
an older
device runtime.
NFC upstream, where `getMaxTeamThreads()` is `BlockSize - WarpSize`. It
matters
for a toolchain whose block is not laid out that way, and it is what
lets the
arithmetic live in one place.
Depends on #221449; the first commit is from that PR.
Tested on gfx90a: `llvm/test/Transforms/{OpenMP,Attributor}` 260 passed,
1
unsupported. No kernel in the AOMP smoke and smoke-fort suites changes
execution
mode.
Commit: ecb96165dc0f95cb81267e1178f7e60a4ab7faa6
https://github.com/llvm/llvm-project/commit/ecb96165dc0f95cb81267e1178f7e60a4ab7faa6
Author: Anshul Nigham <nigham at google.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M utils/bazel/llvm-project-overlay/libc/BUILD.bazel
Log Message:
-----------
Fix bazel build for libc:__support_fputil_fenv_impl (#223031)
Fixes https://github.com/llvm/llvm-project/pull/192079 (commit
041300fa0515) by adding missing dependency.
Commit: 4371ce908668ab70cbf9cc938657a2230cb9f417
https://github.com/llvm/llvm-project/commit/4371ce908668ab70cbf9cc938657a2230cb9f417
Author: Kevin McAfee <kmcafee at nvidia.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Log Message:
-----------
[NFC][SLPVectorizer] Capture TTI explicitly in the cost-caching lambdas (#223020)
Follow-up to #122348, which converted a number of lambdas in this file
to capture the TTI member explicitly. Covers a couple sites that have
been added since.
Commit: e0d48310ce627ffb85c708c9c3c93d135f14de9e
https://github.com/llvm/llvm-project/commit/e0d48310ce627ffb85c708c9c3c93d135f14de9e
Author: Adam Smith <adams at nvidia.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
M clang/test/CIR/Transforms/abi-lowering/x86_64-aggregate-nyi.cir
Log Message:
-----------
[CIR] Remove the NYI test case for a pointer-element vector (#223019)
#222736 removed CIR_AnyPtrType from VectorElementType, so `!cir.vector<2
x !cir.ptr<!s32i>>` no longer verifies. That stops
x86_64-aggregate-nyi.cir parsing at all, so the whole test fails rather
than just that case.
The case only pinned that the x86_64 bridge refuses the shape. No C or
C++ source produces it, since clang rejects a pointer element with
"invalid vector element type", so the verifier is the earlier and better
place for that rejection. The comment in isSupportedType justifying the
bridge-side exclusion is also removed.
Assisted-by: Cursor / claude-opus-5
Commit: 73abf955baf6a19491c1e70947b63ff411dc94aa
https://github.com/llvm/llvm-project/commit/73abf955baf6a19491c1e70947b63ff411dc94aa
Author: Eli Friedman <efriedma at qti.qualcomm.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M lldb/bindings/python/get-python-config.py
Log Message:
-----------
[lldb] Use lowercase for path "lib\site-packages" on Windows. (#222816)
Using an uppercase "L" doesn't have any visible effect for most uses.
But if you create a zip file with `set(cpack_generator ZIP)`, you get a
zip file which contains both "lib/" and "Lib/". That produces odd
results if you extract it on Linux.
Commit: 64b7dfef40e59b8596a272a431aa3a4abcef33c1
https://github.com/llvm/llvm-project/commit/64b7dfef40e59b8596a272a431aa3a4abcef33c1
Author: Clemens Wasser <clemens.wasser at gmail.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M llvm/include/llvm/IR/PassManager.h
M llvm/include/llvm/IR/PassManagerImpl.h
M llvm/lib/Transforms/Scalar/InferAlignment.cpp
M llvm/tools/llubi/lib/Interpreter.cpp
M polly/include/polly/ScopInfo.h
Log Message:
-----------
[PassManager] Store analysis results in contiguous storage (#222003)
Store per-IR analysis results in a `SmallVector` instead of `std::list`
to avoid a heap allocation per cached analysis. The lookup map stores
the raw result pointer, which stays stable behind the unique_ptr.
geomean -0.12% for optimizing builds, clang build -0.34%
https://llvm-compile-time-tracker.com/compare.php?from=e6734a41bb41d91cb880fe7abce46d8146182518&to=4fc43802817cf8daddbebadb0b7fbfaa6286e7fe&stat=instructions:u
Commit: 724c52ef24afd1a9994ba06e86319c15cd8490a6
https://github.com/llvm/llvm-project/commit/724c52ef24afd1a9994ba06e86319c15cd8490a6
Author: Adam Smith <adams at nvidia.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp
M clang-tools-extra/clangd/unittests/tweaks/ExtractFunctionTests.cpp
M clang-tools-extra/docs/ReleaseNotes.md
M clang/docs/ReleaseNotes.md
M clang/include/clang/Basic/BuiltinsPPC.def
M clang/include/clang/CIR/MissingFeatures.h
M clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
M clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
M clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.h
M clang/lib/CodeGen/CGExpr.cpp
M clang/lib/CodeGen/CGVTables.cpp
M clang/lib/Headers/__clang_hip_runtime_wrapper.h
M clang/lib/Headers/altivec.h
M clang/lib/Sema/JumpDiagnostics.cpp
M clang/lib/Sema/SemaChecking.cpp
M clang/lib/Sema/SemaExpr.cpp
M clang/test/AST/ByteCode/cxx23.cpp
M clang/test/AST/ast-dump-expr-json.c
M clang/test/C/C11/n1285_1.c
M clang/test/CIR/CodeGen/array-ctor.cpp
R clang/test/CIR/CodeGen/call-conv-lowering-x86_64-byref.cpp
A clang/test/CIR/CodeGen/call-conv-lowering-x86_64-non-byval.cpp
M clang/test/CIR/CodeGen/call-conv-lowering-x86_64-vptr.cpp
M clang/test/CIR/CodeGen/cleanup-conditional-with-wrapper-eh.cpp
M clang/test/CIR/CodeGen/cleanup-conditional-with-wrapper.cpp
M clang/test/CIR/CodeGen/lambda-dtor-field.cpp
M clang/test/CIR/CodeGen/partial-array-cleanup.cpp
M clang/test/CIR/CodeGenOpenACC/declare-copy.cpp
M clang/test/CIR/CodeGenOpenACC/declare-copyin.cpp
M clang/test/CIR/CodeGenOpenACC/declare-copyout.cpp
M clang/test/CIR/CodeGenOpenACC/declare-create.cpp
M clang/test/CIR/CodeGenOpenACC/declare-deviceresident.cpp
M clang/test/CIR/CodeGenOpenACC/declare-present.cpp
M clang/test/CIR/Transforms/abi-lowering/byval-sret-arg-attr-lowering.cir
R clang/test/CIR/Transforms/abi-lowering/indirect-byref-forward-param.cir
R clang/test/CIR/Transforms/abi-lowering/indirect-byref-nyi.cir
M clang/test/CIR/Transforms/abi-lowering/indirect-byval.cir
A clang/test/CIR/Transforms/abi-lowering/indirect-non-byval-forward-param.cir
A clang/test/CIR/Transforms/abi-lowering/indirect-non-byval-nyi.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-aggregate-nyi.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-empty-class.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-record-packed.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-struct-indirect.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-struct-padded.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-union.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-vptr.cir
M clang/test/CodeGen/PowerPC/builtins-ppc-p9vector.c
M clang/test/CodeGen/attr-counted-by-with-sanitizers.c
M clang/test/CodeGen/attr-counted-by-without-sanitizers.c
A clang/test/CodeGen/compound-literal-lifetime.c
A clang/test/CodeGenCUDA/pure_deleted_virtual.cu
M clang/test/CodeGenObjC/arc-ternary-op.m
M clang/test/Headers/hip-header.hip
M clang/test/OpenMP/nvptx_target_pure_deleted_codegen.cpp
M clang/test/Sema/scope-check.c
A clang/test/SemaCXX/altivec-vec-msum-p9.cpp
A clang/test/SemaCXX/vector-shuffle.cpp
M compiler-rt/lib/scudo/standalone/release.h
M compiler-rt/lib/scudo/standalone/tests/release_test.cpp
M flang/test/lib/OpenACC/CMakeLists.txt
M libc/fuzzing/stdio/printf_parser_fuzz.cpp
M libc/src/__support/CPP/CMakeLists.txt
A libc/src/__support/CPP/vector.h
M libc/src/__support/printf_core/CMakeLists.txt
M libc/src/__support/printf_core/core_structs.h
M libc/src/__support/printf_core/parser.h
M libc/src/__support/printf_core/printf_main.h
M libc/test/UnitTest/CMakeLists.txt
M libc/test/UnitTest/LibcTest.cpp
M libc/test/UnitTest/PrintfMatcher.cpp
M libc/test/UnitTest/PrintfMatcher.h
M libc/test/UnitTest/StringUtils.h
M libc/test/src/__support/CPP/CMakeLists.txt
A libc/test/src/__support/CPP/vector_test.cpp
M libc/test/src/__support/printf_core/CMakeLists.txt
M libc/test/src/__support/printf_core/parser_test.cpp
M libc/utils/cmake_format.py
M libc/utils/cmake_format_test.py
M lldb/bindings/python/get-python-config.py
M lldb/include/lldb/API/SBFile.h
M lldb/source/API/SBFile.cpp
M lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
M llvm/docs/CommandGuide/llvm-profdata.md
M llvm/include/llvm/Frontend/OpenMP/OMPKinds.def
M llvm/include/llvm/IR/PassManager.h
M llvm/include/llvm/IR/PassManagerImpl.h
M llvm/include/llvm/ProfileData/SampleProf.h
M llvm/include/llvm/ProfileData/SampleProfReader.h
M llvm/include/llvm/ProfileData/SampleProfWriter.h
M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
M llvm/lib/ProfileData/SampleProfReader.cpp
M llvm/lib/ProfileData/SampleProfWriter.cpp
M llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
M llvm/lib/Target/AMDGPU/SIInstrInfo.h
M llvm/lib/Target/SPIRV/SPIRVLegalizeImplicitBinding.cpp
M llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td
M llvm/lib/Target/X86/X86TargetTransformInfo.cpp
M llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
M llvm/lib/Transforms/IPO/OpenMPOpt.cpp
M llvm/lib/Transforms/Scalar/InferAlignment.cpp
M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
A llvm/test/Analysis/CostModel/X86/div-rem-i64.ll
A llvm/test/Analysis/CostModel/X86/div-rem-strictfp.ll
M llvm/test/Analysis/CostModel/X86/div.ll
A llvm/test/Analysis/CostModel/X86/masked-divrem.ll
M llvm/test/Analysis/CostModel/X86/rem.ll
M llvm/test/Analysis/CostModel/X86/size-cost.ll
M llvm/test/CodeGen/AMDGPU/dpp_combine.ll
M llvm/test/CodeGen/AMDGPU/si-fold-operands-gfx11.mir
A llvm/test/CodeGen/RISCV/fadd-fmul-dagcombine.ll
A llvm/test/CodeGen/WebAssembly/simd-relaxed-fptoint.ll
M llvm/test/Transforms/AggressiveInstCombine/AArch64/combine_ignore_debug.ll
M llvm/test/Transforms/AggressiveInstCombine/AArch64/or-load.ll
A llvm/test/Transforms/AggressiveInstCombine/RISCV/or-load.ll
A llvm/test/Transforms/AggressiveInstCombine/RISCV/store-merge.ll
M llvm/test/Transforms/LoopVectorize/X86/cost-conditional-branches.ll
M llvm/test/Transforms/LoopVectorize/X86/cost-model.ll
M llvm/test/Transforms/LoopVectorize/X86/divs-with-tail-folding.ll
M llvm/test/Transforms/LoopVectorize/X86/pr109581-unused-blend.ll
M llvm/test/Transforms/LoopVectorize/X86/x86-predication.ll
M llvm/test/Transforms/OpenMP/callback_parallel_regions.ll
M llvm/test/Transforms/OpenMP/custom_state_machines.ll
M llvm/test/Transforms/OpenMP/spmdization.ll
M llvm/test/Transforms/OpenMP/spmdization_guarding.ll
M llvm/test/Transforms/OpenMP/spmdization_indirect.ll
M llvm/test/Transforms/OpenMP/spmdization_no_guarding_two_reaching_kernels.ll
M llvm/test/Transforms/PhaseOrdering/X86/fma-reassociate-pairs.ll
M llvm/test/Transforms/PhaseOrdering/X86/vector-reductions-logical.ll
M llvm/test/Transforms/SLPVectorizer/AArch64/fmuladd-absorbed-copyable-sched-deps.ll
M llvm/test/Transforms/SLPVectorizer/AArch64/lcssa-phi-extract-scale.ll
M llvm/test/Transforms/SLPVectorizer/AArch64/reduce-fadd.ll
M llvm/test/Transforms/SLPVectorizer/AArch64/vec3-reorder-reshuffle.ll
M llvm/test/Transforms/SLPVectorizer/RISCV/strided-load-common-alignment.ll
M llvm/test/Transforms/SLPVectorizer/X86/alternate-int-inseltpoison.ll
M llvm/test/Transforms/SLPVectorizer/X86/alternate-int.ll
M llvm/test/Transforms/SLPVectorizer/X86/crash_cmpop.ll
M llvm/test/Transforms/SLPVectorizer/X86/div-possibly-extended-with-poisons.ll
M llvm/test/Transforms/SLPVectorizer/X86/dot-product.ll
M llvm/test/Transforms/SLPVectorizer/X86/fma-operand-index.ll
M llvm/test/Transforms/SLPVectorizer/X86/lookahead.ll
M llvm/test/Transforms/SLPVectorizer/X86/multi-nodes-to-shuffle.ll
M llvm/test/Transforms/SLPVectorizer/X86/no_alternate_divrem.ll
M llvm/test/Transforms/SLPVectorizer/X86/parent-node-split-non-schedulable.ll
M llvm/test/Transforms/SLPVectorizer/X86/phi-removed-on-operand-vectorization.ll
M llvm/test/Transforms/SLPVectorizer/X86/reassociated-fma-reduction.ll
M llvm/test/Transforms/SLPVectorizer/X86/revectorized_rdx_crash.ll
M llvm/test/Transforms/SLPVectorizer/X86/runtime-alias-checks.ll
M llvm/test/Transforms/SLPVectorizer/consecutive-access.ll
M llvm/test/Transforms/SLPVectorizer/extractelement-insertpoint.ll
A llvm/test/Transforms/SampleProfile/Inputs/composite-cs-profile.proftext
A llvm/test/Transforms/SampleProfile/composite-cs-profile.ll
M llvm/test/Transforms/SampleProfile/csspgo-inline-icall.ll
A llvm/test/tools/llvm-profdata/Inputs/composite-duplicate-type.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-empty-section.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-head-only.proftext
A llvm/test/tools/llvm-profdata/Inputs/composite-mixed-empty.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-mixed-nonempty.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-payload-oversized.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-payload-undersized.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-prepended-unknown.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-unknown-nested.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-unknown-oob.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-unknown-top.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-version-103.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-version-104.profdata
A llvm/test/tools/llvm-profdata/Inputs/composite-zero-block.proftext
A llvm/test/tools/llvm-profdata/Inputs/sample-composite-empty-lbr.proftext
A llvm/test/tools/llvm-profdata/composite-compress.test
A llvm/test/tools/llvm-profdata/composite-compressed-info.test
A llvm/test/tools/llvm-profdata/composite-empty-lbr.test
A llvm/test/tools/llvm-profdata/composite-eytzinger-split-nametable-partition.test
A llvm/test/tools/llvm-profdata/composite-head-only.test
A llvm/test/tools/llvm-profdata/composite-mixed-sections.test
A llvm/test/tools/llvm-profdata/composite-multiple-blocks.test
A llvm/test/tools/llvm-profdata/composite-payload-boundaries.test
A llvm/test/tools/llvm-profdata/composite-unknown-resume-nested.test
A llvm/test/tools/llvm-profdata/composite-version-reader.test
A llvm/test/tools/llvm-profdata/composite-vtable.test
A llvm/test/tools/llvm-profdata/composite-zero-block.test
M llvm/test/tools/llvm-profdata/sample-flatten-profile.test
M llvm/test/tools/llvm-profdata/sample-split-layout.test
A llvm/test/tools/llvm-profdata/show-composite-profile-info.test
M llvm/tools/llubi/lib/Interpreter.cpp
M llvm/tools/llvm-profdata/llvm-profdata.cpp
M llvm/unittests/ProfileData/SampleProfTest.cpp
M openmp/device/include/Interface.h
M openmp/device/src/Mapping.cpp
M polly/include/polly/ScopInfo.h
M utils/bazel/llvm-project-overlay/libc/BUILD.bazel
M utils/bazel/llvm-project-overlay/libc/libc_build_rules.bzl
A utils/bazel/llvm-project-overlay/libc/startup/linux/BUILD.bazel
A utils/bazel/llvm-project-overlay/libc/startup/linux/startup_rules.bzl
A utils/bazel/llvm-project-overlay/libc/startup/linux/x86_64/BUILD.bazel
M utils/bazel/llvm-project-overlay/libc/test/UnitTest/BUILD.bazel
M utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel
M utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel
M utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl
Log Message:
-----------
Merge branch 'main' into users/adams381/cir-union-bitfield-declared-extent
Compare: https://github.com/llvm/llvm-project/compare/9e12c6885ec5...724c52ef24af
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list