[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