[all-commits] [llvm/llvm-project] 9fb78f: [ValueTracking] Support multiple predecessors in w...
Vy Nguyen via All-commits
all-commits at lists.llvm.org
Wed Sep 30 06:57:31 PDT 2026
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 9fb78fc2451015af1df8c0efa8ca5ac6a987e2b3
https://github.com/llvm/llvm-project/commit/9fb78fc2451015af1df8c0efa8ca5ac6a987e2b3
Author: Vy Nguyen <vyng at google.com>
Date: 2026-09-30 (Wed, 30 Sep 2026)
Changed paths:
M llvm/include/llvm/Analysis/ValueTracking.h
M llvm/lib/Analysis/Loads.cpp
M llvm/lib/Analysis/ValueTracking.cpp
M llvm/test/Analysis/ValueTracking/memory-dereferenceable.ll
M llvm/test/Transforms/LICM/hoist-speculatable-load.ll
M llvm/test/Transforms/LoopVectorize/dereferenceable-info-from-assumption-constant-size.ll
Log Message:
-----------
[ValueTracking] Support multiple predecessors in willNotFreeBetween (#223580)
Previously, `willNotFreeBetween` only walked backward along a linear
chain of single-predecessor blocks, bailing out whenever control flow
branched and merged (eg., conditional `if-else` blocks before a loop
preheader).
This PR generalises the backward walk to use a worklist over all
predecessors from `CtxBB` to `AssumeBB` (bounded by
`MaxInstrsToCheckForFree`). This enables LICM( and possibly other
passes) to prove dereferenceability and hoist invariant loads across
merging control flow when no path contains a freeing instruction.
---------
Co-authored-by: Florian Hahn <flo at fhahn.com>
Co-authored-by: Antonio Frighetto <me at antoniofrighetto.com>
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