[llvm] [InstCombine] Avoid propagating invalid metadata in FoldOpIntoSelect (PR #199155)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 4 01:19:47 PDT 2026


================
@@ -1831,7 +1831,24 @@ Instruction *InstCombinerImpl::FoldOpIntoSelect(Instruction &Op, SelectInst *SI,
     NewTV = foldOperationIntoSelectOperand(Op, SI, TV, *this);
   if (!NewFV)
     NewFV = foldOperationIntoSelectOperand(Op, SI, FV, *this);
-  return SelectInst::Create(SI->getCondition(), NewTV, NewFV, "", nullptr, SI);
+
+  SelectInst *NewSel = SelectInst::Create(SI->getCondition(), NewTV, NewFV);
+
+  // Preserve metadata that remains valid for the transformed select.
+  if (MDNode *Prof = SI->getMetadata(LLVMContext::MD_prof))
+    NewSel->setMetadata(LLVMContext::MD_prof, Prof);
+  if (MDNode *Unpred = SI->getMetadata(LLVMContext::MD_unpredictable))
+    NewSel->setMetadata(LLVMContext::MD_unpredictable, Unpred);
----------------
nikic wrote:

Use copyMetadata with a list of metadata to copy.

https://github.com/llvm/llvm-project/pull/199155


More information about the llvm-commits mailing list