We may have to adjust metadata on the replacement load if the
metadata is poison-generating.
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);
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