diff options
author | Evandro Menezes <e.menezes@samsung.com> | 2019-10-09 22:03:23 +0000 |
---|---|---|
committer | Evandro Menezes <e.menezes@samsung.com> | 2019-10-09 22:03:23 +0000 |
commit | d2f4c452d9e60e2910753f4b03eaceb77c5a69a9 (patch) | |
tree | fbedf7ecf1558ceebf82c33256dade12660347bc | |
parent | 0156be59b45d3231ee0cb91eae3d68b8aaaed152 (diff) | |
download | bcm5719-llvm-d2f4c452d9e60e2910753f4b03eaceb77c5a69a9.tar.gz bcm5719-llvm-d2f4c452d9e60e2910753f4b03eaceb77c5a69a9.zip |
[InstCombine] Fix PR43617
Check for `nullptr` before inspecting composite function.
llvm-svn: 374243
-rw-r--r-- | llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp b/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp index 461a5e2cba0..beb0d307c26 100644 --- a/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp @@ -1916,10 +1916,10 @@ Value *LibCallSimplifier::optimizeLog(CallInst *Log, IRBuilder<> &B) { B.setFastMathFlags(FastMathFlags::getFast()); Function *ArgFn = Arg->getCalledFunction(); - StringRef ArgNm = ArgFn->getName(); - Intrinsic::ID ArgID = ArgFn->getIntrinsicID(); + Intrinsic::ID ArgID = + ArgFn ? ArgFn->getIntrinsicID() : Intrinsic::not_intrinsic; LibFunc ArgLb = NotLibFunc; - TLI->getLibFunc(ArgNm, ArgLb); + TLI->getLibFunc(Arg, ArgLb); // log(pow(x,y)) -> y*log(x) if (ArgLb == PowLb || ArgID == Intrinsic::pow) { @@ -1934,9 +1934,10 @@ Value *LibCallSimplifier::optimizeLog(CallInst *Log, IRBuilder<> &B) { substituteInParent(Arg, MulY); return MulY; } + // log(exp{,2,10}(y)) -> y*log({e,2,10}) // TODO: There is no exp10() intrinsic yet. - else if (ArgLb == ExpLb || ArgLb == Exp2Lb || ArgLb == Exp10Lb || + if (ArgLb == ExpLb || ArgLb == Exp2Lb || ArgLb == Exp10Lb || ArgID == Intrinsic::exp || ArgID == Intrinsic::exp2) { Constant *Eul; if (ArgLb == ExpLb || ArgID == Intrinsic::exp) |