]> granicus.if.org Git - clang/commitdiff
Teach NoReturnFunctionChecker that FunctionDecl::getIdentifier() is not guaranteed...
authorTed Kremenek <kremenek@apple.com>
Wed, 16 Dec 2009 05:58:28 +0000 (05:58 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 16 Dec 2009 05:58:28 +0000 (05:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91510 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/NoReturnFunctionChecker.cpp

index 6806273d4b4b9db6ae99831a7eb41e7129d9d155..5cfd9acd5f565270fd96b0f16bbd4c7505a2772c 100644 (file)
@@ -45,13 +45,12 @@ bool NoReturnFunctionChecker::EvalCallExpr(CheckerContext &C,
 
   if (FD->getAttr<NoReturnAttr>() || FD->getAttr<AnalyzerNoReturnAttr>())
     BuildSinks = true;
-  else {
+  else if (const IdentifierInfo *II = FD->getIdentifier()) {
     // HACK: Some functions are not marked noreturn, and don't return.
     //  Here are a few hardwired ones.  If this takes too long, we can
     //  potentially cache these results.
-    using llvm::StringRef;
     BuildSinks 
-      = llvm::StringSwitch<bool>(StringRef(FD->getIdentifier()->getName()))
+      = llvm::StringSwitch<bool>(llvm::StringRef(II->getName()))
           .Case("exit", true)
           .Case("panic", true)
           .Case("error", true)