From dc1f4a6764e735fbfc25e49ce2bdfd2f78ae4e57 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Mon, 8 Apr 2019 07:29:24 +0000 Subject: [PATCH] [ConstantRange] Delete redundnt {z,s}extOrSelf for multiplication These calls are redundant because the quotients have the same BitWidth as MinValue/MaxValue. llvm-svn: 357886 --- llvm/lib/IR/ConstantRange.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/llvm/lib/IR/ConstantRange.cpp b/llvm/lib/IR/ConstantRange.cpp index f48fe9f737d3..391d9653db5c 100644 --- a/llvm/lib/IR/ConstantRange.cpp +++ b/llvm/lib/IR/ConstantRange.cpp @@ -314,13 +314,6 @@ ConstantRange::makeGuaranteedNoWrapRegion(Instruction::BinaryOps BinOp, Lower = APIntOps::RoundingSDiv(MinValue, V, APInt::Rounding::UP); Upper = APIntOps::RoundingSDiv(MaxValue, V, APInt::Rounding::DOWN); } - if (Unsigned) { - Lower = Lower.zextOrSelf(BitWidth); - Upper = Upper.zextOrSelf(BitWidth); - } else { - Lower = Lower.sextOrSelf(BitWidth); - Upper = Upper.sextOrSelf(BitWidth); - } // ConstantRange ctor take a half inclusive interval [Lower, Upper + 1). // Upper + 1 is guanranteed not to overflow, because |divisor| > 1. 0, -1, // and 1 are already handled as special cases.