[analyzer] Quickfix: don't crash when runtime definition is not available.
authorGeorge Karpenkov <ekarpenkov@apple.com>
Tue, 27 Feb 2018 19:19:49 +0000 (19:19 +0000)
committerGeorge Karpenkov <ekarpenkov@apple.com>
Tue, 27 Feb 2018 19:19:49 +0000 (19:19 +0000)
llvm-svn: 326230

clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp

index 54150ef..f5b4e7c 100644 (file)
@@ -321,9 +321,11 @@ private:
   /// Get parameters associated with runtime definition in order
   /// to get the correct parameter name.
   ArrayRef<ParmVarDecl *> getCallParameters(CallEventRef<> Call) {
-    if (isa<FunctionDecl>(Call->getDecl()))
-      return dyn_cast<FunctionDecl>(Call->getRuntimeDefinition().getDecl())
-          ->parameters();
+    // Use runtime definition, if available.
+    RuntimeDefinition RD = Call->getRuntimeDefinition();
+    if (auto *FD = dyn_cast_or_null<FunctionDecl>(RD.getDecl()))
+      return FD->parameters();
+
     return Call->parameters();
   }