summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvandro Menezes <e.menezes@samsung.com>2019-10-09 22:03:23 +0000
committerEvandro Menezes <e.menezes@samsung.com>2019-10-09 22:03:23 +0000
commitd2f4c452d9e60e2910753f4b03eaceb77c5a69a9 (patch)
treefbedf7ecf1558ceebf82c33256dade12660347bc
parent0156be59b45d3231ee0cb91eae3d68b8aaaed152 (diff)
downloadbcm5719-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.cpp9
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)
OpenPOWER on IntegriCloud