]> granicus.if.org Git - clang/commitdiff
Teach OSAtomicChecker that a FunctionDecl's name isn't always a simple IdentifierInfo*.
authorTed Kremenek <kremenek@apple.com>
Wed, 16 Dec 2009 06:03:24 +0000 (06:03 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 16 Dec 2009 06:03:24 +0000 (06:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91511 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/OSAtomicChecker.cpp

index 5a893458830c59b88724153788e586cb5d21a87f..cf16796b1b146cdd1990aea3f9ca8765fec0ccd9 100644 (file)
@@ -44,11 +44,15 @@ bool OSAtomicChecker::EvalCallExpr(CheckerContext &C,const CallExpr *CE) {
   if (!FD)
     return false;
 
-  const char *FName = FD->getNameAsCString();
+  const IdentifierInfo *II = FD->getIdentifier();
+  if (!II)
+    return false;
+  
+  llvm::StringRef FName(II->getName());
 
   // Check for compare and swap.
-  if (strncmp(FName, "OSAtomicCompareAndSwap", 22) == 0 ||
-      strncmp(FName, "objc_atomicCompareAndSwap", 25) == 0)
+  if (FName.startswith("OSAtomicCompareAndSwap") ||
+      FName.startswith("objc_atomicCompareAndSwap"))
     return EvalOSAtomicCompareAndSwap(C, CE);
 
   // FIXME: Other atomics.