@@ -4200,14 +4200,14 @@ Value *InstCombinerImpl::foldXorOfICmps(ICmpInst *LHS, ICmpInst *RHS,
42004200
42014201 // Fold (icmp eq/ne (X & Pow2), 0) ^ (icmp eq/ne (Y & Pow2), 0) into
42024202 // (icmp eq/ne ((X ^ Y) & Pow2), 0)
4203- Value *X, *Y, *Mask ;
4203+ Value *X, *Y, *Pow2 ;
42044204 if (ICmpInst::isEquality (PredL) && ICmpInst::isEquality (PredR) &&
42054205 LC->isZero () && RC->isZero () && LHS->hasOneUse () && RHS->hasOneUse () &&
4206- match (LHS0, m_And (m_Value (X), m_Value (Mask ))) &&
4207- match (RHS0, m_And (m_Value (Y), m_Specific (Mask ))) &&
4208- isKnownToBeAPowerOfTwo (Mask , /* OrZero=*/ true , /* Depth=*/ 0 , &I)) {
4206+ match (LHS0, m_And (m_Value (X), m_Value (Pow2 ))) &&
4207+ match (RHS0, m_And (m_Value (Y), m_Specific (Pow2 ))) &&
4208+ isKnownToBeAPowerOfTwo (Pow2 , /* OrZero=*/ true , /* Depth=*/ 0 , &I)) {
42094209 Value *Xor = Builder.CreateXor (X, Y);
4210- Value *And = Builder.CreateAnd (Xor, Mask );
4210+ Value *And = Builder.CreateAnd (Xor, Pow2 );
42114211 return Builder.CreateICmp (PredL == PredR ? ICmpInst::ICMP_NE
42124212 : ICmpInst::ICMP_EQ,
42134213 And, ConstantInt::getNullValue (Xor->getType ()));
0 commit comments