Index: lib/Transforms/Utils/IntegerDivision.cpp =================================================================== --- lib/Transforms/Utils/IntegerDivision.cpp +++ lib/Transforms/Utils/IntegerDivision.cpp @@ -244,7 +244,7 @@ // ; %sr = sub nsw i32 %tmp0, %tmp1 // ; %ret0_4 = icmp ugt i32 %sr, 31 // ; %ret0 = or i1 %ret0_3, %ret0_4 - // ; %retDividend = icmp eq i32 %sr, 31 + // ; %retDividend = icmp eq i32 %tmp0, 31 // ; %retVal = select i1 %ret0, i32 0, i32 %dividend // ; %earlyRet = or i1 %ret0, %retDividend // ; br i1 %earlyRet, label %end, label %bb1 @@ -257,7 +257,7 @@ Value *SR = Builder.CreateSub(Tmp0, Tmp1); Value *Ret0_4 = Builder.CreateICmpUGT(SR, MSB); Value *Ret0 = Builder.CreateOr(Ret0_3, Ret0_4); - Value *RetDividend = Builder.CreateICmpEQ(SR, MSB); + Value *RetDividend = Builder.CreateICmpEQ(Tmp0, MSB); Value *RetVal = Builder.CreateSelect(Ret0, Zero, Dividend); Value *EarlyRet = Builder.CreateOr(Ret0, RetDividend); Builder.CreateCondBr(EarlyRet, End, BB1);