diff options
Diffstat (limited to 'lib/Analysis/ConstantFolding.cpp')
| -rw-r--r-- | lib/Analysis/ConstantFolding.cpp | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/Analysis/ConstantFolding.cpp b/lib/Analysis/ConstantFolding.cpp index cd8d52c1c465..5de2b04e80dd 100644 --- a/lib/Analysis/ConstantFolding.cpp +++ b/lib/Analysis/ConstantFolding.cpp @@ -23,6 +23,7 @@  #include "llvm/GlobalVariable.h"  #include "llvm/Instructions.h"  #include "llvm/Intrinsics.h" +#include "llvm/Operator.h"  #include "llvm/Analysis/ValueTracking.h"  #include "llvm/Target/TargetData.h"  #include "llvm/ADT/SmallVector.h" @@ -1048,11 +1049,12 @@ llvm::canConstantFoldCallTo(const Function *F) {    case Intrinsic::ctpop:    case Intrinsic::ctlz:    case Intrinsic::cttz: -  case Intrinsic::uadd_with_overflow: -  case Intrinsic::usub_with_overflow:    case Intrinsic::sadd_with_overflow: +  case Intrinsic::uadd_with_overflow:    case Intrinsic::ssub_with_overflow: +  case Intrinsic::usub_with_overflow:    case Intrinsic::smul_with_overflow: +  case Intrinsic::umul_with_overflow:    case Intrinsic::convert_from_fp16:    case Intrinsic::convert_to_fp16:    case Intrinsic::x86_sse_cvtss2si: @@ -1362,7 +1364,8 @@ llvm::ConstantFoldCall(Function *F,          case Intrinsic::uadd_with_overflow:          case Intrinsic::ssub_with_overflow:          case Intrinsic::usub_with_overflow: -        case Intrinsic::smul_with_overflow: { +        case Intrinsic::smul_with_overflow: +        case Intrinsic::umul_with_overflow: {            APInt Res;            bool Overflow;            switch (F->getIntrinsicID()) { @@ -1382,6 +1385,9 @@ llvm::ConstantFoldCall(Function *F,            case Intrinsic::smul_with_overflow:              Res = Op1->getValue().smul_ov(Op2->getValue(), Overflow);              break; +          case Intrinsic::umul_with_overflow: +            Res = Op1->getValue().umul_ov(Op2->getValue(), Overflow); +            break;            }            Constant *Ops[] = {              ConstantInt::get(F->getContext(), Res),  | 
