[llvm] [JumpThreading] Copy metadata when inserting preload into preds (PR #134403)
Yingwei Zheng via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 17 02:51:50 PDT 2025
================
@@ -1409,6 +1409,13 @@ bool JumpThreadingPass::simplifyPartiallyRedundantLoad(LoadInst *LoadI) {
if (AATags)
NewVal->setAAMetadata(AATags);
+ if (auto *MD = LoadI->getMetadata(LLVMContext::MD_invariant_load))
+ NewVal->setMetadata(LLVMContext::MD_invariant_load, MD);
+ if (auto *InvGroupMD = LoadI->getMetadata(LLVMContext::MD_invariant_group))
+ NewVal->setMetadata(LLVMContext::MD_invariant_group, InvGroupMD);
+ if (auto *RangeMD = LoadI->getMetadata(LLVMContext::MD_range))
+ NewVal->setMetadata(LLVMContext::MD_range, RangeMD);
----------------
dtcxzyw wrote:
> We could only call it for the !isGuaranteedToTransferExecutionToSuccessor case.
I don't think preserving invariant_load is valid for the non-guaranteed-to-transfer case, at least with the currently specified semantics.
It is guaranteed by previous checks:
https://github.com/llvm/llvm-project/blob/35f4cdbf59fca82b97869cce7e9e5d5009144938/llvm/lib/Transforms/Scalar/JumpThreading.cpp#L1357-L1369
https://github.com/llvm/llvm-project/blob/35f4cdbf59fca82b97869cce7e9e5d5009144938/llvm/lib/Transforms/Scalar/GVN.cpp#L1727-L1730
https://github.com/llvm/llvm-project/pull/134403
More information about the llvm-commits
mailing list