[qt/clang/llvm]: 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 Pushed by mirror-service into branch 'upstream/main'. Changed from c2fa4128681863d92b2fe1615beb73e2ed62876f to 9c9e12c80a421d6454c49869fdf14aa78d11078b 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 ab993800519301853d4dfebcf4aa454d95938ee4 by GitHub (on behalf of AZero13) on 29/07/2026 at 05:17.. [X86] Fix redundant zeroing operations when casting ints to FP vectors (#212065) https://invent.kde.org/qt/clang/llvm/-/commit/ab993800519301853d4dfebcf4aa454d95938ee4 Git commit 4e326b492aadea4b65f19b5581b0b3e52e8aaed3 by GitHub (on behalf of Fangrui Song) on 29/07/2026 at 05:18.. [BFI] Remove redundant getHeaderIndex lookup in adjustLoopHeaderMass. NFC (#212679) getHeaderIndex(Loop.Nodes[H]) is H. https://invent.kde.org/qt/clang/llvm/-/commit/4e326b492aadea4b65f19b5581b0b3e52e8aaed3 Git commit cf8b0ad96a57570695fba02013590939ffe36af9 by GitHub (on behalf of Anutosh Bhat) on 29/07/2026 at 05:24.. [WebAssembly] Fix v8i16-to-v8f32 uitofp cost (#212501) I think there was a wrong duplication here. The WebAssembly SIMD conversion cost table accidentally duplicated the `UINT_TO_FP` entry for `v8i8` to `v8f32`. As a result, the unsigned `v8i16` to `v8f32` conversion missed the target-specific table entry and fell back to the generic cost of 5 instead of the intended cost of 10. I've added ` llvm/test/Analysis/CostModel/WebAssembly/cast.ll` which I think is good here as it would help test other casting errors in the future too. https://invent.kde.org/qt/clang/llvm/-/commit/cf8b0ad96a57570695fba02013590939ffe36af9 Git commit 40f95afe42db06e2f4226353039de96d66b5d18e by GitHub (on behalf of forking-google-bazel-bot[bot]) on 29/07/2026 at 06:11.. [Bazel] Fixes c2fa412 (#212688) This fixes c2fa4128681863d92b2fe1615beb73e2ed62876f (#212353). Buildkite error link: https://buildkite.com/llvm-project/upstream-bazel/builds?commit=c2fa4128681863d92b2fe1615beb73e2ed62876f Co-authored-by: Google Bazel Bot <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/40f95afe42db06e2f4226353039de96d66b5d18e Git commit f4382bedc245a22ea7c354d08eb13543166a5f0d by GitHub (on behalf of dong jianqiang) on 29/07/2026 at 06:16.. [ARM] Exclude TLS symbols from the .reloc/R_ARM_REL32 path (#212549) The .reloc branch in emitMachineConstantPoolValue fired for any isWeakForLinker() + isDSOLocal() symbol, including TLS (thread_local) weak symbols. R_ARM_REL32 is wrong for TLS: TLS symbols need TLS-specific relocations (R_ARM_TLS_GD32 etc.). Using R_ARM_REL32 for a TLS symbol produces a wrong address at runtime. This broke the 2-stage ARM 32-bit buildbots: stage 1 (with the .reloc branch) miscompiled stage 2's BPF codegen (BTFDebug.cpp references llvm::sys::sandbox::Enabled, an inline thread_local weak variable), causing a SIGSEGV in the BPF Assembly Printer. Add a regression test (tls_weak_var in elf-preemption.ll) verifying that TLS weak symbols get TLSGD/TPOFF, not R_ARM_REL32. Fix #212545 https://invent.kde.org/qt/clang/llvm/-/commit/f4382bedc245a22ea7c354d08eb13543166a5f0d Git commit ad300a7712f3506e702501097ddfe6b322cfa0fb by GitHub (on behalf of Marc Auberer) on 29/07/2026 at 06:34.. [IR] Remove deprecated InsertPosition(Instruction*) constructor (#212640) This implicit constructor has been marked deprecated since almost 2 years in favor of constructing an InsertPosition from a BasicBlock::iterator. Remove it now that in-tree users no longer rely on it. Co-authored-by: Claude <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/ad300a7712f3506e702501097ddfe6b322cfa0fb Git commit 9cdb4219e8edb617076a8c1a118cce119179e288 by GitHub (on behalf of lorenzo chelini) on 29/07/2026 at 06:34.. [MLIR] Validate directly parsed optional operand types (#212493) Commit 6c51938067fa ([MLIR] Guard optional operand resolution in generated op parsers) guarded resolution of every optional operand to avoid indexing an empty inferred type range. The guard also skipped resolveOperands when an optional operand was absent but an independently optional type directive was present. This accepted malformed assembly and silently discarded the orphan type when printing the operation. Keep the guard for inferred type resolutions, which may access an empty optional type vector, but always resolve directly parsed type ranges so resolveOperands validates operand/type cardinality. Add coverage for both valid forms and a type-only negative reproducer. https://invent.kde.org/qt/clang/llvm/-/commit/9cdb4219e8edb617076a8c1a118cce119179e288 Git commit 52f6c88c2c1b6f0c10b9c8fb09ec35e147c593e3 by GitHub (on behalf of David Green) on 29/07/2026 at 06:40.. [Codegen] Replace any_of with is_contained. NFC (#212289) A new operator== for SVT and EVT was apparently needed with reverse operands. https://invent.kde.org/qt/clang/llvm/-/commit/52f6c88c2c1b6f0c10b9c8fb09ec35e147c593e3 Git commit 3df3102da5c0ebb5d32a9146f6b0aec925bc4742 by GitHub (on behalf of Fangrui Song) on 29/07/2026 at 07:01.. [test] Migrate Hexagon/PowerPC thunk tests to the default thunk order (#212693) Drop -z nosort-thunks (added by #211721 to keep creation order) and update expectations to the default order: forward thunks sorted by descending destination. https://invent.kde.org/qt/clang/llvm/-/commit/3df3102da5c0ebb5d32a9146f6b0aec925bc4742 Git commit a7b2a20f01681186bb6872c077a52e22632db9ad by GitHub (on behalf of Timm Baeder) on 29/07/2026 at 07:03.. [clang] Improve diagnostics around constexpr limits (#212091) 1) Mention the limit in the "constexpr evaluation hit maximum step limit" diagnostic as well 2) Move the "use -fconstexpr-steps" instruction to its own note so we can reuse it for two different diagnostics For ```c++ struct S { constexpr S() {} }; constexpr S foo[1'500'000] = {}; ``` we used to emit ```console array.cpp:1028:13: error: constexpr variable 'foo' must be initialized by a constant expression 1028 | constexpr S foo[1'500'000] = {}; | ^ ~~ array.cpp:1026:17: note: constexpr evaluation hit maximum step limit; possible infinite loop? 1026 | constexpr S() {} | ^ array.cpp:1028:31: note: in call to 'S()' 1028 | constexpr S foo[1'500'000] = {}; | ^ ``` and now we emit ```console array.cpp:1028:13: error: constexpr variable 'foo' must be initialized by a constant expression 1028 | constexpr S foo[1'500'000] = {}; | ^ ~~ array.cpp:1026:17: note: constexpr evaluation hit maximum step limit of 1048576; possible infinite loop? 1026 | constexpr S() {} | ^ array.cpp:1028:31: note: in call to 'S()' 1028 | constexpr S foo[1'500'000] = {}; | ^ array.cpp:1026:17: note: use -fconstexpr-steps= to increase this limit (=0 will remove the limit) 1026 | constexpr S() {} ``` https://invent.kde.org/qt/clang/llvm/-/commit/a7b2a20f01681186bb6872c077a52e22632db9ad Git commit 8c5193b41f2f1f5fb704a70e1f4bb7c0153d2d9d by GitHub (on behalf of Raul Tambre) on 29/07/2026 at 07:08.. [lldb][test] Use C++ frontend for building C++ test file (#212611) https://invent.kde.org/qt/clang/llvm/-/commit/8c5193b41f2f1f5fb704a70e1f4bb7c0153d2d9d Git commit 9ba969c46204e4723cf4b5720a34fc537ce2d458 by GitHub (on behalf of Arseniy Obolenskiy) on 29/07/2026 at 07:47.. [SPIR-V] Reject builtin calls if mangled argument types do not match the IR (#208152) https://invent.kde.org/qt/clang/llvm/-/commit/9ba969c46204e4723cf4b5720a34fc537ce2d458 Git commit 83ed1d0925ef5523e3be4f182db1df712ed490fa by GitHub (on behalf of Arseniy Obolenskiy) on 29/07/2026 at 07:47.. [NFC][SPIR-V] Add constrainSelectedInstRegOperands helper to dedup repeating pattern in global registry (#208703) https://invent.kde.org/qt/clang/llvm/-/commit/83ed1d0925ef5523e3be4f182db1df712ed490fa Git commit f193d19d2127023966cbeb6ccf1487f975f53acc by GitHub (on behalf of Arseniy Obolenskiy) on 29/07/2026 at 07:48.. [SPIR-V] Fix OpDecorate insertion point for non-PHI defs in decorateUsesAsNonUniform (#212524) Inserting before the defining instruction placed the decoration ahead of its own operand, breaking dominance for the loop-carried case Fix machine code errors from https://github.com/llvm/llvm-project/pull/208224#issuecomment-5095074660 https://invent.kde.org/qt/clang/llvm/-/commit/f193d19d2127023966cbeb6ccf1487f975f53acc Git commit b2b5c13f69e4cfcba339967e0c16b06b081b5e2e by GitHub (on behalf of Zeyi Xu) on 29/07/2026 at 07:54.. [clang-tidy][docs] Fix broken redundant-void-arg documentation. NFC. (#212692) https://invent.kde.org/qt/clang/llvm/-/commit/b2b5c13f69e4cfcba339967e0c16b06b081b5e2e Git commit acd22eec9e79b69515aa2204dc96dcfa3ff0d387 by GitHub (on behalf of Timm Baeder) on 29/07/2026 at 08:02.. [clang][bytecode][NFC] Add Record::findField to look up fields by offset (#212697) https://invent.kde.org/qt/clang/llvm/-/commit/acd22eec9e79b69515aa2204dc96dcfa3ff0d387 Git commit 9cd13c11bacc9a5b83640a7168ab0f51160e4ee0 by GitHub (on behalf of 222rohan) on 29/07/2026 at 08:22.. [X86] Remove TuningFastSHLDRotate from BMI2 targets (#211217) This flag has no effect at `x86-64-v3` or `v4`. It only enables a pseudo that lowers `rotl`/`rotr` by immediate to `shld $imm, %reg, %reg`, but a higher-priority `RORX` pattern matches the same case and always wins the iSel tie. Both patterns match `rotl(GR64, imm)`; only their `AddedComplexity` differs: ``` // X86InstrShiftRotate.td:507 -- SHLD-rotate pseudo, complexity 5 let Predicates = [HasFastSHLDRotate], AddedComplexity = 5, ... in { def SHLDROT64ri : ... [(set GR64:$dst, (rotl GR64:$src1, (i8 imm:$shamt)))]>; } // X86InstrShiftRotate.td:602 -- RORX pattern, complexity 10, only needs BMI2 let AddedComplexity = 10 in { def : Pat<(rotl GR64:$src, (i8 imm:$shamt)), (RORX64ri GR64:$src, (ROT64L2R_imm8 imm:$shamt))>; } ``` LLVM's iSel always picks `RORX`, and it only requires BMI2, which is part of `x86-64-v3` and up, so it is picked unconditionally on every v3/v4 build regardless of `TuningFastSHLDRotate`. No codegen change; existing lit tests unaffected. https://invent.kde.org/qt/clang/llvm/-/commit/9cd13c11bacc9a5b83640a7168ab0f51160e4ee0 Git commit 17df4290daed63acd8171af570fa8b6190d758f0 by GitHub (on behalf of Timm Baeder) on 29/07/2026 at 08:39.. [clang][bytecode][NFC] Add CHECK markers for functions in test (#212699) We aren't testing the existence of the function in the output here, but without these markers, debugging test failures here can become very cumbersome. https://invent.kde.org/qt/clang/llvm/-/commit/17df4290daed63acd8171af570fa8b6190d758f0 Git commit a6614ee07b916785321eb046d525374a022b8ebb by GitHub (on behalf of StoeckOverflow) on 29/07/2026 at 08:50.. [APINotes] Diagnose invalid Where.Parameters selectors (#209408) This PR adds diagnostics for exact `Where.Parameters` selectors on top of the existing parsing, serialization, and Sema matching support. It diagnoses duplicate exact selectors during API notes conversion, including duplicate `Where.Parameters: []`, while still allowing broad name-only entries and same-name entries with different selectors. It also adds reader/Sema support to warn under `-Wapinotes` when an exact selector in API notes does not match any visible overload. The reader can now enumerate stored exact selectors for global functions and C++ methods, and Sema compares those against the selector candidates derived from the visible overload set. The diagnostic path follows the same matching policy as Sema, including the desugared alias fallback, so valid matched selectors do not produce false warnings. Tests cover duplicate selector errors, unmatched selector warnings for globals and C++ methods, broad-plus-exact coexistence, exact notes not silently applying on mismatch, and no false warnings for matched or alias-fallback selectors. Reviewers: @Xazax-hun @j-hui @egorzhdan --------- Co-authored-by: John Hui <[email protected]> https://invent.kde.org/qt/clang/llvm/-/commit/a6614ee07b916785321eb046d525374a022b8ebb Git commit 005c18eac0a70158c2db4611bf824af6e0bc80ac by GitHub (on behalf of jeanPerier) on 29/07/2026 at 09:01.. [flang] Add policy-driven allocation-placement pass - memory passes unification [2/5] (#210742) Introduce a new function-level pass, allocation-placement, that unifies the stack/heap placement decisions currently split between the stack-arrays and memory-allocation-opt passes. For each array allocation it consults a policy to decide whether it should live on the stack (fir.alloca) or the heap (fir.allocmem) and rewrites it accordingly, reusing fir::replaceAllocas for stack-to-heap and the StackArrays analysis/rewrite for heap-to-stack (so heap-to-stack only happens where it is provably safe). The default policy (AllocationPlacementPolicy.h) is threshold-driven: - small constant-size arrays go on the stack within a per-function stack budget, otherwise on the heap; - big constant-size arrays: user variables stay on the stack, temporaries go on the heap; - runtime-sized arrays go on the heap; - an aggressive mode places all arrays on the stack (best effort). User variables are distinguished from compiler temporaries via the presence of a uniqued name. A hook lets downstream users override the thresholds per allocation (e.g. for device routines or parallel regions). The pass is not wired into any pipeline yet; it is reachable through fir-opt and covered by isolated tests. Assisted-by: AI https://invent.kde.org/qt/clang/llvm/-/commit/005c18eac0a70158c2db4611bf824af6e0bc80ac Git commit ebc5778e5dc9e195311911595c0b1a415f807c7f by GitHub (on behalf of Weronika Lewandowska) on 29/07/2026 at 09:13.. [Offload] Enable offload test on Windows (#212480) Description: This change enables the offload test build on Windows by adding compatibility guards around libomptarget test suites. Why: libomptarget is not available on Windows. Without these guards, CMake fails when referencing the missing omptarget target. With these guards, Windows builds complete successfully and run available tests (using check-offload-unit), while Linux/macOS builds remain unaffected. https://invent.kde.org/qt/clang/llvm/-/commit/ebc5778e5dc9e195311911595c0b1a415f807c7f Git commit b95ce5ed68edad82e766ee8a7e9dae7809bc84dc by GitHub (on behalf of Sohaib Iftikhar) on 29/07/2026 at 09:30.. [LLVM] Disambiguate MVT and SVT comparisons (#212711) [LLVM] Disambiguate MVT and SVT comparisons Without this: ``` error: use of overloaded operator '==' is ambiguous (with operand types 'MVT' and 'llvm::MVT::SimpleValueType') 167 | if (VT == MVT::Untyped) | ~~ ^ ~~~~~~~~~~~~ llvm/include/llvm/CodeGenTypes/MachineValueType.h:62:10: note: candidate function 62 | bool operator==(const MVT& S) const { return SimpleTy == S.SimpleTy; } | ^ llvm/include/llvm/CodeGen/ValueTypes.h:598:15: note: candidate function (with reversed parameter order) 598 | inline bool operator==(MVT::SimpleValueType SVT, EVT VT) { return VT == SVT; } | ^ 1 error generated. ``` Fixes 52f6c88c2c1b6f0c10b9c8fb09ec35e147c593e3 https://invent.kde.org/qt/clang/llvm/-/commit/b95ce5ed68edad82e766ee8a7e9dae7809bc84dc Git commit 61d6e494e97a8fda6946291fd3bc6bb648c86e93 by GitHub (on behalf of vsimion26) on 29/07/2026 at 09:39.. QuantileType relax quantileType conditions and inheritance issue (#204793) # Recategorize QuantileType as Storage Format, Not Quantization Scheme ## Summary Reclassify `QuantileType` from inheriting `QuantizedType` to functioning as a pure storage type. ## Motivation ### QuantileType is a Storage Format, Not a Quantization Scheme After careful consideration, there was a conclusion reached that **QuantileType should not be registered as a subtype of QuantizedType**. The architectural distinction is critical: - **QuantizedType** represents different quantization schemes (uniform, per-axis, etc.), semantic operations that map values into a lower-precision domain - **QuantileType** is purely a **storage format** that specifies how to interpret indices within a lookup table (LUT) QuantileType was never meant to function as a quantization scheme on its own. Instead, its purpose is to indicate **how to interpret indices based on the given LUT**. It is an orthogonal concern to quantization semantics; it describes data organization, not mathematical transformation. ### Relaxed Type Conditions The previous implementation restricted the LUT values to float types only. However, float types are not the only types that can exist inside a LUT, integer types are valid as well. This PR removes the type restriction, allowing **both floating-point and integer-based LUT interpretations** to coexist, better matching actual use cases. ## Changes - **Removed**: Incorrect inheritance of `QuantizedType` by `QuantileType` - **Relaxed**: Type constraints to accept both float and integer LUT value types https://invent.kde.org/qt/clang/llvm/-/commit/61d6e494e97a8fda6946291fd3bc6bb648c86e93 Git commit e062a29cf865bb7cadea6cb605c9f3515e5b883f by GitHub (on behalf of Yordan Vásquez) on 29/07/2026 at 09:41.. [libc++] Mark LWG3133 as Complete and add valarray operator[] safety tests (#208145) This verifies that libc++ has implemented the resolution of LWG3133, which modernizes the requirements on `T` for `std::complex<T>` and `std::valarray<T>` in [numeric.requirements]. - No code changes were needed for `std::valarray<T>`: its `operator[]` already indexes through a raw pointer and never relies on a user-overloadable `operator&`, so it already conforms to the revised wording. - Added o`perator_hijacker`-based tests to `valarray`'s `access.pass.cpp`/`const_access.pass.cpp`, confirming `operator[]` doesn't rely on a user-overloadable `operator&`. https://invent.kde.org/qt/clang/llvm/-/commit/e062a29cf865bb7cadea6cb605c9f3515e5b883f Git commit 0cce7a09237402359113036e9fe6469301e53a9c by GitHub (on behalf of Petar Avramovic) on 29/07/2026 at 09:54.. AMDGPU/GlobalISel: Fix Vcc reg bank apply method for sgpr i1 input (#212532) Need to clean up high bits on sgpr bool use, simlar to Sgpr32AExtBoolInReg. G_AMDGPU_COPY_VCC_SCC assumes clean (zero) high bits in sgpr i32 input. This should be combined away in most cases, for example if input is result of a compare. But should stay for example for truncated input from s_load. https://invent.kde.org/qt/clang/llvm/-/commit/0cce7a09237402359113036e9fe6469301e53a9c Git commit 9df6ca12f24bd35b02f5eae7a27cc92533482e03 by GitHub (on behalf of Paul Walker) on 29/07/2026 at 10:09.. [LLVM][CodeGen][SVE] Add ElementSize information to fp compare, continuous/replicating load and store instructions (#204821) This information was originally used to implement MOVPFRX support. However https://github.com/llvm/llvm-project/pull/204820 uses the same information to determine which bits of an instruction's predicate operand are used so that PTRUE instructions can be coalesced. MOVPRFXable instructions are a subset of all predicated instructions, so this patch extends some non-MOVPRFXable instructions with ElementSize information. https://invent.kde.org/qt/clang/llvm/-/commit/9df6ca12f24bd35b02f5eae7a27cc92533482e03 Git commit 3120980d24f67f5754742c1dc8865e30307529ce by GitHub (on behalf of Hassnaa Hamdi) on 29/07/2026 at 10:28.. [LV][NFC]: Use CostCtx.CM instead of CM in precomputeCosts (#212287) https://invent.kde.org/qt/clang/llvm/-/commit/3120980d24f67f5754742c1dc8865e30307529ce Git commit 462602de4245031e363b80a208f595826e738831 by GitHub (on behalf of Jay Foad) on 29/07/2026 at 10:31.. [AMDGPU] Fix incorrect VM_VSRC simplification after async instruction (#212481) Add ASYNC_CNT to the list of VMEM counters. The implication is that only if all these counters are zero can we know that there are no outstanding VMEM instructions, so VM_VSRC must be zero. https://invent.kde.org/qt/clang/llvm/-/commit/462602de4245031e363b80a208f595826e738831 Git commit e7db113dca5582f512e95053dd1b770f594ae2e8 by GitHub (on behalf of Arseniy Obolenskiy) on 29/07/2026 at 10:35.. [AMDGPU] Remove redundant AGPR/VGPR register class verification (#212721) https://invent.kde.org/qt/clang/llvm/-/commit/e7db113dca5582f512e95053dd1b770f594ae2e8 Git commit 3757c5d331d5d4781a7325ea890b2754c6dad5bb by GitHub (on behalf of Cullen Rhodes) on 29/07/2026 at 11:06.. [AArch64] Mark FIXED_REGS register class as non-allocatable (#212250) FIXED_REGS is not used for register allocation, but since it overlaps the GPR classes via FP and SP, TableGen merges VG and FFR into the GPR pressure set, giving it a static limit of 35. The underlying GPR32all class has 33 registers: W0-W30, WZR, and WSP. WZR and WSP are always reserved, leaving up to 31 allocatable registers depending on whether W29 (FP) and W30 (LR) are reserved. Marking FIXED_REGS non-allocatable removes VG and FFR from the pressure set, reducing its static limit from 35 to 33 and its dynamic limit from 33 to 31. The corrected limit changes scheduling decisions made by the register-pressure heuristics, which explains the test churn. Assisted-by: codex https://invent.kde.org/qt/clang/llvm/-/commit/3757c5d331d5d4781a7325ea890b2754c6dad5bb Git commit 9c9e12c80a421d6454c49869fdf14aa78d11078b by GitHub (on behalf of Jay Foad) on 29/07/2026 at 11:10.. [AMDGPU] Fix typos SGRP and VGRP. NFC. (#212732) https://invent.kde.org/qt/clang/llvm/-/commit/9c9e12c80a421d6454c49869fdf14aa78d11078b