[qt/clang/llvm-project]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git repository change summary for qt/clang/llvm-project Pushed by mirror-service into branch 'upstream/users/davidspickett/lldb-register-types-for-stack-4.5'. Changed from 0000000000000000000000000000000000000000 to 588e2176b724008cc6e373a0232a6263540f7482 Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository. This change contains the following new commits: Git commit a4764e36c7d9ef00810fae196b7030b6c7354db7 by GitHub (on behalf of Bryth) on 06/08/2026 at 11:16.. [mlir][ArmSVE] Fix typo in BFMMLA op description (NFC) (#214201) https://invent.kde.org/qt/clang/llvm-project/-/commit/a4764e36c7d9ef00810fae196b7030b6c7354db7 Git commit 0c91f5b25492e552f2f24f4d56750c3948dd6e90 by GitHub (on behalf of Bryth) on 06/08/2026 at 11:16.. [mlir][vector] Disallow vector broadcast along scalable dim (#212197) Broadcasts from vectors to higher rank vectors get lowered recursively by iterating over leading dimensions to create "size(dimension)" insert ops. This cannot be done for scalable dimensions whose size is unknown. This PR prevents such transforms from occurring by stopping if the leading dimension is scalable. https://invent.kde.org/qt/clang/llvm-project/-/commit/0c91f5b25492e552f2f24f4d56750c3948dd6e90 Git commit 50ff635538a52197ce708ce65c3fb1752be0f20f by GitHub (on behalf of Abid Qadeer) on 06/08/2026 at 11:21.. [flang][debug] Emit debug info for named constants (#213974) Fixes https://github.com/llvm/llvm-project/issues/213966. Only globals whose uniqued name deconstructs to `NameKind::VARIABLE` were described. A Fortran named constant (PARAMETER) is mangled with EC and deconstructs to `NameKind::CONSTANT`, so it got no debug info at all and a debugger could not evaluate one, whether it was declared in a module or inside a procedure. A module constant is described the way a module variable already is, with a `DIGlobalVariable` scoped to the `DIModule`. A constant local to a procedure is described in the scope of that procedure. Two related fixes for entities whose global has internal linkage, which covers both a procedure local constant and a procedure local SAVE variable that was already being described: - `isLocalToUnit` was hardcoded to false, so these were marked `DW_AT_external`. It now follows the linkage of the global. - A linkage name was emitted for them. There is no external symbol for a debugger to match against, so it is now omitted, which is also what clang does for a function local static. Assisted by: Cursor --------- Co-authored-by: Cursor <[email protected]> https://invent.kde.org/qt/clang/llvm-project/-/commit/50ff635538a52197ce708ce65c3fb1752be0f20f Git commit db89f5c0c9b0ce60373924075c2bcd5d1c41415a by GitHub (on behalf of Simon Pilgrim) on 06/08/2026 at 11:45.. [X86] Tidyup atom fpu->gpr costs (#214454) These had matching high latency and throughput numbers, which suggest they hadn't been updated since the itinerary conversion. Confirmed with Agner, uops.info and instlatx64 which report a consistent throughput of 2cy, latency seems to be about 4cy (uops.info just says <= 6cy) Noticed while trying to confirm #214191 vector reduction costs for atom type cpus, and llvm-mca was reporting some very odd numbers for bonnell. https://invent.kde.org/qt/clang/llvm-project/-/commit/db89f5c0c9b0ce60373924075c2bcd5d1c41415a Git commit 1bfde5fd3b8f809fc7ab1ce32862276144783ef5 by GitHub (on behalf of Sergio Afonso) on 06/08/2026 at 12:12.. [MLIR][OpenMP] Refactor omp dialect utils headers, NFC (#213648) This patch implements some non-functional refactoring changes: - It consolidates the two existing "utils" headers into one. - It renames fields and arguments to the `OffloadModuleOpts` structure to follow the MLIR style guide and more closely match the corresponding `OffloadModuleInterface` attributes. - It removes comments in OpenMP-to-LLVMIR translation referring to Flang frontend options associated to the `OffloadModuleInterface`. https://invent.kde.org/qt/clang/llvm-project/-/commit/1bfde5fd3b8f809fc7ab1ce32862276144783ef5 Git commit 105e9f1be4962318a8ec8adedb7b37eec1674ed4 by GitHub (on behalf of Sergio Afonso) on 06/08/2026 at 12:12.. [MLIR][OpenMP] Ensure -fopenmp-force-usm doesn't override requirements (#213649) The `mlir::omp::setOffloadModuleInterfaceAttributes` utility function can currently override any pre-existing OpenMP `requires` clauses in the module. This doesn't cause any problems at the moment because all calls to this function happen before any other `requires` are processed. However, it's safer to make sure it never deletes pre-existing flags in case the same function is reused in a different context. https://invent.kde.org/qt/clang/llvm-project/-/commit/105e9f1be4962318a8ec8adedb7b37eec1674ed4 Git commit a8f0bcbdc4d8c2e046ce107a0a169e310162c807 by GitHub (on behalf of Abid Qadeer) on 06/08/2026 at 12:26.. [flang][debug] Add accurate line number information to module. (#214011) The line number in a module's debug info was a guess: the source line of the first module member we encountered, minus one. That was only correct when the first declaration happened to be on the line right after the MODULE statement, so debuggers usually reported a module at the wrong line. The location of `fir.module_debug_imports` is that of the MODULE statement, so use it instead. That operation is now generated for every module and not only for those containing a USE statement, so the location is available in all cases. It is still only generated when debug info is requested. Co-authored-by: Cursor <[email protected]> --------- Co-authored-by: Cursor <[email protected]> https://invent.kde.org/qt/clang/llvm-project/-/commit/a8f0bcbdc4d8c2e046ce107a0a169e310162c807 Git commit 1cc730fd7b31cdc240a6357b66e7a1b05bbfe135 by GitHub (on behalf of Tim Besard) on 06/08/2026 at 12:37.. [SPIRV] Legalize i1 min/max before selection (#204231) LLVM can produce `llvm.{s,u}{min,max}.i1` from boolean value patterns. In SPIR-V, however, LLVM `i1` is represented as `OpTypeBool`, not as an integer type. The OpenCL/GLSL extended min/max instructions require integer scalar or integer vector operands and results, so selecting those instructions directly for `i1` can produce invalid SPIR-V. This patch makes the SPIR-V legalizer reflect that type-system boundary. Nonstandard integer widths remain legal when the relevant extensions are enabled, but `s1` is not treated as an extended integer width. Scalar `i1` min/max is widened to `i32` before instruction selection and converted back to bool. Boolean vectors are scalarized first, then each lane follows the same scalar legalization path. The result is deliberately conservative: it preserves the existing extended-integer behavior while preventing boolean values from reaching integer-only SPIR-V extended instructions. --- The Khronos SPIRV-LLVM-Translator follows the same type-model premise: `SPIRVWriter::transType` maps LLVM `i1` to `OpTypeBool`, while wider LLVM integer types map to `OpTypeInt`. The translator also avoids using OpenCL/GLSL extended min/max instructions for LLVM min/max intrinsics. Its `SPIRVWriter.cpp` lowering for `llvm.umin`, `llvm.umax`, `llvm.smin`, and `llvm.smax` emits an integer comparison followed by `OpSelect`. That compare/select strategy does not provide evidence that boolean extended min/max is valid; it sidesteps the integer-only extended-instruction constraint entirely. There is also a useful precedent in the translator regularization pass for shifts: because SPIR-V shift operands must be integer scalar/vector types, LLVM `i1` operands are treated as boolean and extended to `i32` before the integer operation, then converted back to bool. This patch applies the same principle to the LLVM backend path that currently uses extended min/max instructions. --------- Co-authored-by: Codex <[email protected]> https://invent.kde.org/qt/clang/llvm-project/-/commit/1cc730fd7b31cdc240a6357b66e7a1b05bbfe135 Git commit b73efb77b873a536814b4aec98a41f4d099bd58d by GitHub (on behalf of Brian Cain) on 06/08/2026 at 13:05.. [Hexagon] Avoid Handling Debug Instructions (#212918) The change is made in HexagonFrameLowering::(optimizeSpillSlots) function. This Pass is responsible for managing function's stack frame and ensuring proper stack space allocation. Spill slots means temporary memory locations used for storing register values that need to be spilled from registers to memory during code execution. While Optimizing these spill slots we should not handle debug instructions. Optimized the pass by skipping debug instructions in optimizeSpillSlots function. A DBG_VALUE describing a variable that lives in a spill slot has a frame index operand, but it is neither a load from nor a store to that slot, so the slot was marked as one that cannot be optimized and the store/load pair using it was no longer replaced with register copies. The code generated for a function therefore differed depending on whether debug info was enabled. Co-authored-by: Chandana Sinderikeri <[email protected]> https://invent.kde.org/qt/clang/llvm-project/-/commit/b73efb77b873a536814b4aec98a41f4d099bd58d Git commit 8610fba1de1acdbd91f93e808a780aa7da5869cb by GitHub (on behalf of Hassnaa Hamdi) on 06/08/2026 at 13:08.. [LV][NFC] Reorder creating vplans for UserVF and epilogueVF (#214379) For the case when we force userVF and epilogueVF, we create only 2 vplans.vThis patch reorder the vplans creation to create the main loop vplan firstly then the epilogue loop vplan. https://invent.kde.org/qt/clang/llvm-project/-/commit/8610fba1de1acdbd91f93e808a780aa7da5869cb Git commit 849c51e082b0958524246a0a880f46d468a55147 by GitHub (on behalf of Trevor Gross) on 06/08/2026 at 13:08.. [compiler-rt] Disable executable stack on `aeabi_u{read,write}*.S` (#214465) These were missing `NO_EXEC_STACK_DIRECTIVE` to add `.note.GNU-stack`; without it, a binary including any of these files will have the stack marked executable. Add the directive here, matching other similar files. Symtab diff before: $ clang compiler-rt/lib/builtins/arm/aeabi_uread4.S --target=arm-unknown-linux-gnueabi -c $ llvm-readelf aeabi_uread4.o -S There are 5 section headers, starting at offset 0xe4: Section Headers: [Nr] Name Type Address Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .strtab STRTAB 00000000 0000a8 000039 00 0 0 1 [ 2] .text PROGBITS 00000000 000034 000020 00 AX 0 0 4 [ 3] .ARM.attributes ARM_ATTRIBUTES 00000000 000054 000022 00 0 0 1 [ 4] .symtab SYMTAB 00000000 000078 000030 10 1 2 4 After: $ clang compiler-rt/lib/builtins/arm/aeabi_uread4.S --target=arm-unknown-linux-gnueabi -c $ llvm-readelf aeabi_uread4.o -S There are 6 section headers, starting at offset 0xf4: Section Headers: [Nr] Name Type Address Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .strtab STRTAB 00000000 0000a8 000049 00 0 0 1 [ 2] .text PROGBITS 00000000 000034 000020 00 AX 0 0 4 [ 3] .note.GNU-stack PROGBITS 00000000 000054 000000 00 0 0 1 [ 4] .ARM.attributes ARM_ATTRIBUTES 00000000 000054 000022 00 0 0 1 [ 5] .symtab SYMTAB 00000000 000078 000030 10 1 2 4 Fixes: 39413af931a7 ("[Compiler-rt] Implement AEABI Unaligned Read/Write Helpers in compiler-rt (#167913)") https://invent.kde.org/qt/clang/llvm-project/-/commit/849c51e082b0958524246a0a880f46d468a55147 Git commit 5ae6dfd93e916f417d2015efdcc9d45c9c48f6a6 by GitHub (on behalf of Lucas Ramirez) on 06/08/2026 at 13:25.. [AMDGPU][CodeGen] Fix `EXPENSIVE_CHECKS` for multi-def rematerialization (#214484) After #197580 registers may have multiple definitions. `EXPENSIVE_CHECKS` were not updated to reflect that. https://invent.kde.org/qt/clang/llvm-project/-/commit/5ae6dfd93e916f417d2015efdcc9d45c9c48f6a6 Git commit 65e92e073539c3fe3523256c4fba35ac1dedcb92 by GitHub (on behalf of Jacek Caban) on 06/08/2026 at 13:27.. [LLD][COFF] Emit ARM64X relocations for TLS directory (#213529) The current behavior of merging EC and native chunks to have a single TLS directory for both views matches the MSVC linker, but it has its shortcomings. In addition to merging, that solution requires all TLS callbacks to use -arm64xsameaddress, leaving it to the CRT to handle. If the appropriate EC object files are not pulled in by linked EC code and thus never have a chance to mark the callback with -arm64xsameaddress, this may lead to an invalid image that crashes at runtime. This patch avoids the entire problem by using entirely separate TLS directories for EC and native views along with the standard ARM64X dynamic relocation mechanism. Since callback lists are now separate, a missing -arm64xsameaddress is no longer a problem. Also, mingw-w64-crt currently doesn't mark its TLS callbacks with -arm64xsameaddress. That could be changed if needed, but with this change, it is no longer necessary. https://invent.kde.org/qt/clang/llvm-project/-/commit/65e92e073539c3fe3523256c4fba35ac1dedcb92 Git commit 8caa6c19ace019317008a981f4469260f22dbc84 by GitHub (on behalf of forking-google-bazel-bot[bot]) on 06/08/2026 at 13:39.. [Bazel] Fixes 1bfde5f (#214467) This fixes 1bfde5fd3b8f809fc7ab1ce32862276144783ef5 (#213648). Buildkite error link: https://buildkite.com/llvm-project/upstream-bazel/builds?commit=1bfde5fd3b8f809fc7ab1ce32862276144783ef5 Co-authored-by: Google Bazel Bot <[email protected]> https://invent.kde.org/qt/clang/llvm-project/-/commit/8caa6c19ace019317008a981f4469260f22dbc84 Git commit 1599b010ffe5e341ef643759f22d797ff1d91ff4 by GitHub (on behalf of Ian Li) on 06/08/2026 at 13:50.. [Clang] Add missing colons to Preprocessor lit test (#214342) PR #211512 introduced new lit tests that are missing colons. This PR adds them back so the lit tests introduced actually run. https://invent.kde.org/qt/clang/llvm-project/-/commit/1599b010ffe5e341ef643759f22d797ff1d91ff4 Git commit c90a5cbb0d3366526a5d44032b06b3e624a5249b by GitHub (on behalf of Joseph Huber) on 06/08/2026 at 14:00.. [libclc] Improve libclc device tests with feature checks (#214217) Summary: Make sure the tests can conditionally run on the correct features. I think that it would be nice if we could print from these tests, but that would require linking against `libc` for GPUs and I'm unsure if that's worth it, so for now I'm just sticking with traps as the failure mechanism. https://invent.kde.org/qt/clang/llvm-project/-/commit/c90a5cbb0d3366526a5d44032b06b3e624a5249b Git commit ce880d0a4fe7679658de0377542ac039992447cb by GitHub (on behalf of Nick Sarnie) on 06/08/2026 at 14:03.. [offload][lit] Run unit tests in check-offload if libomptarget isn't built (#214334) Right now we define no top-level `check-offload` target if `libomptarget` isn't built. Instead, just define the target to run the unit tests instead instead of running both the unit tests and the `libomptarget` tests we would do if `libomptarget` were built. It's really useful to have a top-level target to run tests, especially for CI. This target will be used by our Windows buildbot, as `libomptarget` isn't supported on Windows. --------- Signed-off-by: Nick Sarnie <[email protected]> https://invent.kde.org/qt/clang/llvm-project/-/commit/ce880d0a4fe7679658de0377542ac039992447cb Git commit 4442d7022c94ff041b65236670243014fa40f4d1 by GitHub (on behalf of EuphoricThinking) on 06/08/2026 at 14:08.. [offload] add parameterized unit tests (#209115) Previously, liboffload tests were parametrized only with different devices. The following changes enable creating tests with additional parameters, besides devices. The existing tests, which often used C-style macros instead of incorporating Google Test features, are rewritten so that macros are replaced fully with Google Test parametrized fixtures. This patch adds: - a new fixture that allows for creating parameterized tests - new macros for the instantiation of parameterized tests - a helper header file that contains information related to parameterized tests, including the definition of parameters - new and refactored printers used in test instantiation Moreover, selected existing tests are modified and parametrized in order to make the code less repetitive and more concise. Tests with up to two possible parameters are not parameterized. Previously, the tests were already parameterized with `TestEnvironment::Device`. However, this patch combines `TestEnvironment::Device` with an additional parameter within `OffloadParam = std::tuple<TestEnvironment::Device, T>`. `OffloadParam<T>` is handled by a new fixture `OffloadDeviceTestWithParam<T>`, which provides the `getTestParam()` method for the parameter extraction. Other functionalities, such as access to the `Host` and to the `Device`, are identical to the previous version of `OffloadDeviceTest`. In order to avoid code duplication, the unparameterized versions of fixtures are aliases for parameterized fixtures, with `int` type chosen arbitrarily as an ignored parameter type, for example: `using OffloadDeviceTest = OffloadDeviceTestWithParam<int>;`. The single mock parameter of value `0` is combined with the devices in the provided macros, yielding tuples of type `std::tuple<TestEnvironment::Device, int>`. The hidden `int` parameter is not used, but it enables users to instantiate unparameterized tests without knowledge about the implementation details. Moreover, it allows for modifying only one version of the fixture (the one being aliased), without the need to also change the other version: either parameterized or unparameterized. The following macros are added in this patch: - `OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE_WITH_PARAM(FIXTURE, VALUES, PRINTER)`: instantiates `FIXTURE` with parameters stored in the provided container `VALUES` (a C-style array or an STL-style container) and with the given printer. The used devices do not include the host. - `OFFLOAD_TESTS_INSTANTIATE_HOST_DEVICE_FIXTURE_WITH_PARAM(FIXTURE, VALUES, PRINTER)`: similar to `OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE_WITH_PARAM`, but includes the `Host` in the tested devices. - `OFFLOAD_TESTS_INSTANTIATE_HOST_DEVICE_FIXTURE(FIXTURE)`: instantiates `FIXTURE` without additional parameters, but also includes the `Host` in the used devices. - `OFFLOAD_TESTS_INSTANTIATE_WITH_DEVICES(FIXTURE, DEVICES)`: instantiates `FIXTURE` with the provided devices, internally using a mock parameter. It is not intended for direct use and acts as a helper macro for the instantiation of unparameterized tests. - `OFFLOAD_TESTS_INSTANTIATE_WITH_DEVICES_WITH_PARAM(FIXTURE, VALUES, DEVICES, PRINTER)`: instantiates `FIXTURE` with the provided devices, parameters and the given printer. It is not intended for direct use and acts as a helper macro for the instantiation of parameterized tests. Since the new macros enable testing the `Host` as part of the used devices, `offload/unittests/OffloadAPI/device/olGetHostInfo.cpp` is deleted and its tests have been moved to `offload/unittests/OffloadAPI/device/olGetDeviceInfo.cpp`. The new helper header `offload/unittests/OffloadAPI/common/Properties.hpp`: - pairs properties with their sizes for tests similar to `offload/unittests/OffloadAPI/device/olGetDeviceInfo.cpp` - packs selected properties into containers or arrays for easier access and instantiation of fixtures https://invent.kde.org/qt/clang/llvm-project/-/commit/4442d7022c94ff041b65236670243014fa40f4d1 Git commit 6348771d4f563fabd22338e772fd0cad394c80c5 by GitHub (on behalf of Juan Manuel Martinez Caamaño) on 06/08/2026 at 14:21.. [AMDGPU][LibCallSimplify] Use target type's float-semantics in `ConstantFP::get` (#213721) Compiler was crashing with: ``` Constants.cpp:1124: static llvm::ConstantFP* llvm::ConstantFP::get(llvm::Type*, const llvm::APFloat&): Assertion `Ty->getScalarType() == Type::getFloatingPointTy(Cont ext, V.getSemantics()) && "ConstantFP type doesn't match the type implied by its value!"' failed. ``` Since the code was quite similar to `getConstantFloatVector`, I've ended up modifying its implementation to also handle scalars and renamed it. https://invent.kde.org/qt/clang/llvm-project/-/commit/6348771d4f563fabd22338e772fd0cad394c80c5 Git commit 848dfb98225281d68e9682e9eebc658ad7a4ff2c by GitHub (on behalf of Brian Cain) on 06/08/2026 at 14:26.. [Hexagon] Do not sign extend the unsigned comparison of short integers. (#212914) HexagonTargetLowering::LowerSETCC widens i8/i16 SETCC operands to i32 with a sign extension when the extension is free, or when the compared constant is negative in the narrow type. That is what the compare instructions want for equality comparisons, since they can encode small negative immediates, but for unsigned comparisons a constant with the sign bit of the narrow type set becomes a large 32-bit value that has to be materialized in a register or use a constant extender. For %v = load i16, ptr %p %c = icmp ult i16 %v, 65524 we generated r1 = #-12 r0 = memh(r0+#0) p0 = cmp.gtu(r1,r0) instead of r0 = memuh(r0+#0) p0 = cmp.gtu(r0,##65523) Restrict the transformation to equality condition codes and let the generic operand promotion pick the extension for everything else. Signed comparisons are unaffected, as the generic promotion already sign-extends them. Note that only the quality of the generated code was affected: sign extension preserves the unsigned ordering of the values of the narrower type, so the code produced before this change was correct. Co-authored-by: Sumanth Gundapaneni <[email protected]> https://invent.kde.org/qt/clang/llvm-project/-/commit/848dfb98225281d68e9682e9eebc658ad7a4ff2c Git commit a6b0af7536ef0ae8383ec729c5fbf23c73243776 by GitHub (on behalf of Kyungtak Woo) on 06/08/2026 at 14:29.. [NFC] Add missing <cmath> and <limits> includes across llvm, mlir, lldb, flang, and bolt (#214410) This is basically a continuation of https://github.com/llvm/llvm-project/pull/214349... This change adds missing `#include <cmath>` and `#include <limits>` headers to several files across `llvm`, `mlir`, `lldb`, `flang`, and `bolt`. In commit https://github.com/llvm/llvm-project/commit/ada3786e91ca2058f3ac8255a024c12ae7d263ee, `<random>` stopped transitively pulling in the top-level `<cmath>` header in favor of internal granular `<__math/...>` headers. Multiple files across the codebase were implicitly relying on transitive `<cmath>` inclusions from headers like `llvm/Support/RandomNumberGenerator.h` and other headers that pull in `<random>`. I'm explicitly adding the missing dependency. ### Affected Files * **bolt**: `bolt/lib/Passes/SplitFunctions.cpp` (`std::pow`) * **flang**: `flang/lib/Optimizer/CodeGen/Target.cpp` (`std::ceil`) * **lldb**: `lldb/source/Plugins/Language/ObjC/Cocoa.cpp` (`std::floor`) * **llvm**: * `llvm/lib/Transforms/Utils/Debugify.cpp` (`std::log10`) * `llvm/lib/Transforms/Utils/LowerMemIntrinsics.cpp` (`std::round`) * `llvm/tools/llvm-dwarfdump/Statistics.cpp` (`std::round`, `std::numeric_limits`) * `llvm/tools/llvm-exegesis/lib/Analysis.cpp` (`std::sqrt`) * `llvm/tools/llvm-exegesis/lib/ResultAggregator.cpp` (`std::ceil`) * `llvm/tools/llvm-exegesis/lib/SchedClassResolution.cpp` (`std::round`) * **mlir**: * `mlir/include/mlir/Dialect/Quant/Utils/UniformSupport.h` (`std::round`) * `mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp` (`std::log2`) * `mlir/lib/Target/LLVMIR/Dialect/NVVM/NVVMToLLVMIRTranslation.cpp` (`std::log2`) https://invent.kde.org/qt/clang/llvm-project/-/commit/a6b0af7536ef0ae8383ec729c5fbf23c73243776 Git commit 27f1aa4c9a42b80ffb7ae688d9e5dd4245a4318d by GitHub (on behalf of Wiktor Ludwichowski) on 06/08/2026 at 14:41.. [X86][AsmParser] Support parentheses around scale and index register in Intel syntax (#211003) Old patterns and why they broke - Decisions matching (CurrState, PrevState) tuples (e.g. CurrState == IES_REGISTER && PrevState != IES_MULTIPLY) to gate committing a register to Base/Index aren't paren-transparent: any (...) turns CurrState into IES_RPAREN, so the tuple stops matching and `[reg + (reg)]`, `[reg + (reg*2)]`, `[reg + 2*(reg)]` fell through the guards. - Duplicated commit blocks. Recognizing whether a register is Base or Scale was placed in four handlers (onPlus, onMinus, onRBrac, onRParen), forcing onRParen to replay it just to catch (reg). - Scale was committed immediately in onInteger; a parenthesized scale like (2) * 4 or 2 * (4) had nowhere to accumulate. New patterns - Pending value. Two pending fields: TmpReg and TmpScale, that store the register/scale which is currently being processed. Commit happens only at (+, -, ]), therefore the solution is parenthesis-independent and can handle more scale expressions. - Identical in onPlus/onMinus/onRBrac: !BaseReg && !TmpScale → BaseReg (unscaled); otherwise → IndexReg with Scale. onRParen no longer commits, parens are purely an infix-calculator concern. - Multiplicative scale accumulator onInteger. onStar on IES_INTEGER seeds it from the popped operand; reset at +, -, [, ]. Handles 2 * 4, (2) * 4, 2 * (4), 2 * 2 * 2, (2 * (2 * rbx)) * 2, etc. - Conflict detection. Pending state makes two invariants diagnosable: TmpReg already set when a new register arrives via * or ( means multiplication of two registers; NegativeAdditiveTerm at commit means negative scale. Both previously misassembled silently. https://invent.kde.org/qt/clang/llvm-project/-/commit/27f1aa4c9a42b80ffb7ae688d9e5dd4245a4318d Git commit 798984232ffecb0336645089a057cd05a8bdc20b by GitHub (on behalf of Chris Copeland) on 06/08/2026 at 14:44.. [libc] Add missing type/macro headers for generated public headers (#213395) https://invent.kde.org/qt/clang/llvm-project/-/commit/798984232ffecb0336645089a057cd05a8bdc20b Git commit 9fd1052125a393b8aa16fa3e8411168332b22610 by GitHub (on behalf of Durgesh Nandan Mohanty) on 06/08/2026 at 14:50.. [AArch64][CodeGen] Fold tbx(splat(0), table, idxs) to tbl(table, idxs) (#214268) When the destination/background vector of a TBX instruction is a splat of zero, the operation is equivalent to a TBL instruction. TBL implicitly zeroes out any elements where the index is out of bounds, matching the behavior of TBX with a zero background vector. This patch adds a DAG combine to optimize this case, reducing instruction latency and register pressure. Fixes #214077 https://invent.kde.org/qt/clang/llvm-project/-/commit/9fd1052125a393b8aa16fa3e8411168332b22610 Git commit bc00b3aae17eb8d3f1dee2e8fbbdf5c3e4a36546 by GitHub (on behalf of Gaëtan Bossu) on 06/08/2026 at 15:04.. [AArch64][CostModel] Explicitly disable histograms for nxv1 types (#214470) Currently, histograms are not disabled for vscale x 1 types, but LV will implicitly not generate them because surrounding arithmetic instructions are invalid for vscale x 1. SDAG does not implement operand widening for histograms, so this patch explicitly disables those cases. https://invent.kde.org/qt/clang/llvm-project/-/commit/bc00b3aae17eb8d3f1dee2e8fbbdf5c3e4a36546 Git commit 708dafb270b5f6971c6666cc0afe96d227fb198d by GitHub (on behalf of Arseniy Obolenskiy) on 06/08/2026 at 15:05.. [SPIR-V] Build vendored SPIRV-Tools in Release mode (#214159) Default build mode in SPIRV-Tools is Debug https://invent.kde.org/qt/clang/llvm-project/-/commit/708dafb270b5f6971c6666cc0afe96d227fb198d Git commit ac9e7f5e9d9170a56945c716b6c87126a3d0963d by GitHub (on behalf of Zeyi Xu) on 06/08/2026 at 15:13.. [clang-tidy][docs] Rename bugprone check docs to Markdown [1/4] (#214412) Tracking issue: #201242 See the [migration guide] for more information. [migration guide]: https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines This is the mechanical rename for part 1/4 of the remaining `bugprone` check documentation. The rewrite is provided by the next PR in this stack. https://invent.kde.org/qt/clang/llvm-project/-/commit/ac9e7f5e9d9170a56945c716b6c87126a3d0963d Git commit 11ba1b712acbee90dcc07b36467a7b2bb5a9b07b by GitHub (on behalf of Zeyi Xu) on 06/08/2026 at 15:13.. [clang-tidy][docs] Rewrite bugprone check docs to Markdown [1/4] (#214413) Tracking issue: #201242 See the [migration guide] for more information. [migration guide]: https://llvm.org/docs/SphinxQuickstartTemplate.html#markdown-migration-guidelines This rewrites part 1/4 of the remaining bugprone check documentation from reST to MyST Markdown. AI Usage: This was prepared with rst2myst and GPT5.6-assisted cleanup. I manually verified that the documentation renders as expected. Preview site: https://broken.life/llvm-staging/bugprone-markdown-port/ https://invent.kde.org/qt/clang/llvm-project/-/commit/11ba1b712acbee90dcc07b36467a7b2bb5a9b07b Git commit c7317d79aacf76b5eb2dc65010e574a5269838ef by GitHub (on behalf of Erich Keane) on 06/08/2026 at 15:28.. [CIR][MLIR-LLVM] Add 'thread local mode/model' attribute support (#214337) The main purpose of this patch is to implement the 'tls_model' attribute for ClangIR. However, this required updating the LLVM-IR dialect to ALSO support this, not just as a bool. This patch threads it into both sides. CIR tries to refer to it as "TLS_Model" to match the C/C++ attribute closely, the LLVM Dialect refers to it as ThreadLocalMode to reflect better what LLVM does. Left as still 'not done' (in CIR only!) is the lowering of the 'other' kinds of thread-local settings, which are intended to do various levels of locking/initialization. Those are left for a future implementation effort. The C++ test itself is taken directly from classic codegen. https://invent.kde.org/qt/clang/llvm-project/-/commit/c7317d79aacf76b5eb2dc65010e574a5269838ef Git commit 7075c6d53d2c461ac9afacc7d404496fef93b087 by David Spickett on 06/08/2026 at 15:37.. [lldb] Store all XML register types in a single string map We are assuming that their ID's are unique, so there's no need to keep separate maps. We can do basic type checking by checking the kind of the type pointed to. A few more methods were added to the base RegisterType. GetSize() returns 0 for enums because enums don't have a size until they are used by a register. This is not ideal but it works for now. https://invent.kde.org/qt/clang/llvm-project/-/commit/7075c6d53d2c461ac9afacc7d404496fef93b087 Git commit 935ee38691fb72493c98393cfd499a48f8d86911 by David Spickett on 06/08/2026 at 15:37.. use first instance of duplicated ID https://invent.kde.org/qt/clang/llvm-project/-/commit/935ee38691fb72493c98393cfd499a48f8d86911 Git commit c94a01b8c870434c5ed002269645bb043e8eebef by David Spickett on 06/08/2026 at 15:37.. Add test for ID overlap https://invent.kde.org/qt/clang/llvm-project/-/commit/c94a01b8c870434c5ed002269645bb043e8eebef Git commit 332bcc7896e5263f61781b1c46ce02f6f632354a by David Spickett on 06/08/2026 at 15:37.. Add tests to demonstrate our parsing mistakes. https://invent.kde.org/qt/clang/llvm-project/-/commit/332bcc7896e5263f61781b1c46ce02f6f632354a Git commit f05a4d9b734024161084bf3aa1b74805461bcfe3 by David Spickett on 06/08/2026 at 15:37.. [lldb] Make RegisterFlagsDetector into RegisterTypesDetector In future it may be generating things other than flags. Functionality is the same, but the interface changes to use RegisterType. https://invent.kde.org/qt/clang/llvm-project/-/commit/f05a4d9b734024161084bf3aa1b74805461bcfe3 Git commit 6db948af80adbb4e74a92d21b7feff576bd2a257 by David Spickett on 06/08/2026 at 15:37.. [lldb][AArch64] Use unique_ptr instead of statics in RegisterTypeDetector Fixes #214264. I used static variables for the created types, on the assumption that only one detector would be used and that the host's features would not change. That is true for an lldb-server on a real Linux/FreeBSD system. It is not true when we use the detector with core files. In the same LLDB session you might load several files that came from systems with different features. The result was that the first detection sets up the static variables and future detections do not update them. So subsequent core files can have incorrect types. (and in future if types vary per-process, we could have the same issue in lldb-server) To address this I am changing where the types are stored so that each instance of the detector has its own set of types for which it manages the lifetime. * There is a vector of unique pointers to types. This vector is a member, so is per instance of the detector class. * As new types are added to this vector, it may reallocate, but the location of the RegisterTypes themselves will stay the same, this is important. * Detector functions use MakeType to create types, and MakeType handles managing the vector. Nothing else accesses the vector directly. * MakeType returns a raw pointer to the type. * Detector functions return a raw pointer to the top level type for the register. For example if it has flags that have enums for their fields, the flags type is the top level type. * These top level raw pointers are given to the rest of LLDB. * We assume that the lifetime of the dector is > that of anyone using the raw pointers. * When the detector destructs, the unique pointers destruct and the RegisterTypes are freed. This handing out of raw pointers is likely a bad idea, but I want to keep the changes here within the detector. All existing tests pass, and I have added a test that loads 2 core files with different features. That test fails without these changes because the STORE_ONLY feature is detected incorrectly. https://invent.kde.org/qt/clang/llvm-project/-/commit/6db948af80adbb4e74a92d21b7feff576bd2a257 Git commit 588e2176b724008cc6e373a0232a6263540f7482 by David Spickett on 06/08/2026 at 15:46.. put back initialiser https://invent.kde.org/qt/clang/llvm-project/-/commit/588e2176b724008cc6e373a0232a6263540f7482