Specifically, CallExpr::getCalleeDecl() can return null, so make sure to
handle that correctly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184813
91177308-0d34-0410-b5e6-
96231b3b80d8
CT = CT_Dependent;
else if (isa<CXXPseudoDestructorExpr>(CE->getCallee()->IgnoreParens()))
CT = CT_Cannot;
- else
+ else if (CE->getCalleeDecl())
CT = canCalleeThrow(*this, E, CE->getCalleeDecl());
+ else
+ CT = CT_Can;
if (CT == CT_Can)
return CT;
return mergeCanThrow(CT, canSubExprsThrow(*this, E));
void (*pintspec)() throw(int);
void (*pemptyspec)() throw();
+typedef void (*funcptr)();
+funcptr returnsptr() throw();
+
void callptr() {
N(pnospec());
N((*pnospec)());
N((*pintspec)());
P(pemptyspec());
P((*pemptyspec)());
+ N(returnsptr()());
}
struct S1 {