[llvm] [InstCombine] Opt phi(freeze(undef), C) -> phi(C, C) (PR #161181)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 30 11:50:31 PDT 2025
================
@@ -5179,9 +5180,35 @@ Instruction *InstCombinerImpl::visitFreeze(FreezeInst &I) {
// TODO: This could use getBinopAbsorber() / getBinopIdentity() to avoid
// duplicating logic for binops at least.
auto getUndefReplacement = [&](Type *Ty) {
- Value *BestValue = nullptr;
+ auto pickCommonConstantFromPHI = [&](PHINode &PN) -> Value * {
+ // phi(freeze(undef), C, C). Choose C for freeze so the PHI can be
+ // removed.
+ Constant *BestValue = nullptr;
+ Constant *C = nullptr;
+ for (Value *V : PN.incoming_values()) {
+ if (match(V, m_Freeze(m_Undef())))
----------------
nikic wrote:
Yes, this is fine. After all, we're not actually replacing that other freeze undef here. (If we did, we'd have to be more careful about multi-use.)
https://github.com/llvm/llvm-project/pull/161181
More information about the llvm-commits
mailing list