Fix PR 3677 [retain checker]: custom 'allocWithZone' methods should be allowed
to return an owning pointer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66934 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/CFRefCount.cpp b/lib/Analysis/CFRefCount.cpp
index 75a9f3d..b6c11c9 100644
--- a/lib/Analysis/CFRefCount.cpp
+++ b/lib/Analysis/CFRefCount.cpp
@@ -119,12 +119,15 @@
     case 4:
       // Methods starting with 'alloc' or contain 'copy' follow the
       // create rule
-      if ((AtBeginning && StringsEqualNoCase("alloc", s, len)) ||
-          (C == NoConvention && StringsEqualNoCase("copy", s, len)))
+      if (C == NoConvention && StringsEqualNoCase("copy", s, len))
         C = CreateRule;
       else // Methods starting with 'init' follow the init rule.
         if (AtBeginning && StringsEqualNoCase("init", s, len))
-        C = InitRule;      
+          C = InitRule;
+      break;
+    case 5:
+      if (AtBeginning && StringsEqualNoCase("alloc", s, len))
+        C = CreateRule;
       break;
     }