[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/users/jeanPerier/merge_memory_passes_4'. Changed from d3058ca3af59e6a665f9a7bf7c7b1a87da2616c7 to 66cc9218471ed3d0113e395b2892e45d7b2b827f 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 922d6396f261735e92f3ab6168de616280f38278 by Jean Perier (on behalf of root) on 29/07/2026 at 09:28.. [flang] Wire allocation-placement into the optimizer pipeline (experimental) Add a hidden -enable-allocation-placement flag that, when set, replaces the stack-arrays and memory-allocation-opt passes in the default FIR optimizer pipeline with the unified allocation-placement pass. The flag is off by default, so the legacy passes remain the default path and behavior is unchanged. When enabled, the pass runs with its default byte-size thresholds; the -fstack-arrays strategy is forwarded through the new stackArrays option. https://invent.kde.org/qt/clang/llvm/-/commit/922d6396f261735e92f3ab6168de616280f38278 Git commit 66cc9218471ed3d0113e395b2892e45d7b2b827f by Jean Perier on 29/07/2026 at 09:29.. [flang] Enable allocation-placement pass by default Make the unified allocation-placement pass the default in the FIR optimizer pipeline in place of the legacy stack-arrays and memory-allocation-opt passes, by defaulting -enable-allocation-placement to true. Passing -enable-allocation-placement=false restores the legacy passes for comparison. Add a -disable-allocation-placement switch that skips the pass entirely (wired through addAllocationPlacement like the other optimizer passes), so codegen tests can opt out of placement policy independently of the legacy fallback. Update the pipeline-dump tests to expect AllocationPlacement, and disable the pass in the alloca/allocmem codegen tests (alloc.fir, coordinateof.fir) so they keep testing lowering rather than placement policy. Document the unified pass, its policy, thresholds, and options in fstack-arrays.md. https://invent.kde.org/qt/clang/llvm/-/commit/66cc9218471ed3d0113e395b2892e45d7b2b827f