[llvm] 9b5ff44 - [EarlyCSE] Call combineMetadataForCSE() when CSEing loads
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 3 07:10:33 PDT 2023
Author: Nikita Popov
Date: 2023-04-03T16:10:19+02:00
New Revision: 9b5ff4436e446e9df97ee37b3bcf9ba029c7d9aa
URL: https://github.com/llvm/llvm-project/commit/9b5ff4436e446e9df97ee37b3bcf9ba029c7d9aa
DIFF: https://github.com/llvm/llvm-project/commit/9b5ff4436e446e9df97ee37b3bcf9ba029c7d9aa.diff
LOG: [EarlyCSE] Call combineMetadataForCSE() when CSEing loads
We may have to adjust metadata on the replacement load if the
metadata is poison-generating.
Added:
Modified:
llvm/lib/Transforms/Scalar/EarlyCSE.cpp
llvm/test/Transforms/EarlyCSE/flags.ll
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/EarlyCSE.cpp b/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
index eaec7c0f71d6..9c745a28fe99 100644
--- a/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
+++ b/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
@@ -1476,6 +1476,8 @@ bool EarlyCSE::processNode(DomTreeNode *Node) {
LLVM_DEBUG(dbgs() << "Skipping due to debug counter\n");
continue;
}
+ if (auto *I = dyn_cast<Instruction>(Op))
+ combineMetadataForCSE(I, &Inst, false);
if (!Inst.use_empty())
Inst.replaceAllUsesWith(Op);
salvageKnowledge(&Inst, &AC);
diff --git a/llvm/test/Transforms/EarlyCSE/flags.ll b/llvm/test/Transforms/EarlyCSE/flags.ll
index 6134c81c58db..57ea0866d07a 100644
--- a/llvm/test/Transforms/EarlyCSE/flags.ll
+++ b/llvm/test/Transforms/EarlyCSE/flags.ll
@@ -65,7 +65,7 @@ define void @load_both_nonnull(ptr %p) {
define void @load_first_nonnull(ptr %p) {
; CHECK-LABEL: @load_first_nonnull(
-; CHECK-NEXT: [[V1:%.*]] = load ptr, ptr [[P:%.*]], align 8, !nonnull !0
+; CHECK-NEXT: [[V1:%.*]] = load ptr, ptr [[P:%.*]], align 8
; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
; CHECK-NEXT: call void @use.ptr(ptr [[V1]])
; CHECK-NEXT: ret void
More information about the llvm-commits
mailing list