[all-commits] [llvm/llvm-project] 5f88e4: [MemDep] Treat partial-overlap lifetime.start as a...
Usama Hameed via All-commits
all-commits at lists.llvm.org
Wed Jul 22 14:54:48 PDT 2026
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 5f88e49e8c24c5b799872b4331d35b5406d3c213
https://github.com/llvm/llvm-project/commit/5f88e49e8c24c5b799872b4331d35b5406d3c213
Author: Usama Hameed <u_hameed at apple.com>
Date: 2026-07-22 (Wed, 22 Jul 2026)
Changed paths:
M llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
A llvm/test/Transforms/GVN/pre-no-hoist-across-lifetime.ll
Log Message:
-----------
[MemDep] Treat partial-overlap lifetime.start as a clobber (#211167)
When getSimplePointerDependencyFrom scans backward and reaches a
@llvm.lifetime.start, it only treated the marker as a barrier when the
query location MustAliased the lifetime's argument, and otherwise fell
through to `continue`. For a load through a GEP into part of an alloca
the alias result is PartialAlias, so the scan walked past lifetime.start
as if it weren't there, and GVN Load PRE would hoist the load above it.
Inspect the full alias result instead of just isMustAlias: MustAlias
still returns Def and NoAlias still continues, but any partial/may
overlap now returns a Clobber so lifetime.start acts as a barrier and
the access cannot be moved above it.
Fixes #194940
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