reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

include/llvm/Analysis/ObjCARCAnalysisUtils.h
  198 inline ARCInstKind GetCallSiteClass(ImmutableCallSite CS) {
  202       return CS.onlyReadsMemory() ? ARCInstKind::User : ARCInstKind::CallOrUser;
  202       return CS.onlyReadsMemory() ? ARCInstKind::User : ARCInstKind::CallOrUser;
  204   return CS.onlyReadsMemory() ? ARCInstKind::None : ARCInstKind::Call;
  204   return CS.onlyReadsMemory() ? ARCInstKind::None : ARCInstKind::Call;
include/llvm/Analysis/ObjCARCInstKind.h
   58 raw_ostream &operator<<(raw_ostream &OS, const ARCInstKind Class);
   61 bool IsUser(ARCInstKind Class);
   64 bool IsRetain(ARCInstKind Class);
   67 bool IsAutorelease(ARCInstKind Class);
   71 bool IsForwarding(ARCInstKind Class);
   75 bool IsNoopOnNull(ARCInstKind Class);
   79 bool IsNoopOnGlobal(ARCInstKind Class);
   83 bool IsAlwaysTail(ARCInstKind Class);
   87 bool IsNeverTail(ARCInstKind Class);
   91 bool IsNoThrow(ARCInstKind Class);
   95 bool CanInterruptRV(ARCInstKind Class);
   99 ARCInstKind GetFunctionClass(const Function *F);
  106 inline ARCInstKind GetBasicARCInstKind(const Value *V) {
  111     return ARCInstKind::CallOrUser;
  115   return isa<InvokeInst>(V) ? ARCInstKind::CallOrUser : ARCInstKind::User;
  115   return isa<InvokeInst>(V) ? ARCInstKind::CallOrUser : ARCInstKind::User;
  119 ARCInstKind GetARCInstKind(const Value *V);
  123 bool CanDecrementRefCount(ARCInstKind Kind);
lib/Analysis/ObjCARCAliasAnalysis.cpp
  101   case ARCInstKind::NoopCast:
  117   case ARCInstKind::Retain:
  118   case ARCInstKind::RetainRV:
  119   case ARCInstKind::Autorelease:
  120   case ARCInstKind::AutoreleaseRV:
  121   case ARCInstKind::NoopCast:
  122   case ARCInstKind::AutoreleasepoolPush:
  123   case ARCInstKind::FusedRetainAutorelease:
  124   case ARCInstKind::FusedRetainAutoreleaseRV:
lib/Analysis/ObjCARCInstKind.cpp
   30                                        const ARCInstKind Class) {
   32   case ARCInstKind::Retain:
   34   case ARCInstKind::RetainRV:
   36   case ARCInstKind::ClaimRV:
   38   case ARCInstKind::RetainBlock:
   40   case ARCInstKind::Release:
   42   case ARCInstKind::Autorelease:
   44   case ARCInstKind::AutoreleaseRV:
   46   case ARCInstKind::AutoreleasepoolPush:
   48   case ARCInstKind::AutoreleasepoolPop:
   50   case ARCInstKind::NoopCast:
   52   case ARCInstKind::FusedRetainAutorelease:
   54   case ARCInstKind::FusedRetainAutoreleaseRV:
   56   case ARCInstKind::LoadWeakRetained:
   58   case ARCInstKind::StoreWeak:
   60   case ARCInstKind::InitWeak:
   62   case ARCInstKind::LoadWeak:
   64   case ARCInstKind::MoveWeak:
   66   case ARCInstKind::CopyWeak:
   68   case ARCInstKind::DestroyWeak:
   70   case ARCInstKind::StoreStrong:
   72   case ARCInstKind::CallOrUser:
   74   case ARCInstKind::Call:
   76   case ARCInstKind::User:
   78   case ARCInstKind::IntrinsicUser:
   80   case ARCInstKind::None:
   86 ARCInstKind llvm::objcarc::GetFunctionClass(const Function *F) {
   91     return ARCInstKind::CallOrUser;
   93     return ARCInstKind::Autorelease;
   95     return ARCInstKind::AutoreleasepoolPop;
   97     return ARCInstKind::AutoreleasepoolPush;
   99     return ARCInstKind::AutoreleaseRV;
  101     return ARCInstKind::CopyWeak;
  103     return ARCInstKind::DestroyWeak;
  105     return ARCInstKind::InitWeak;
  107     return ARCInstKind::LoadWeak;
  109     return ARCInstKind::LoadWeakRetained;
  111     return ARCInstKind::MoveWeak;
  113     return ARCInstKind::Release;
  115     return ARCInstKind::Retain;
  117     return ARCInstKind::FusedRetainAutorelease;
  119     return ARCInstKind::FusedRetainAutoreleaseRV;
  121     return ARCInstKind::RetainRV;
  123     return ARCInstKind::RetainBlock;
  125     return ARCInstKind::StoreStrong;
  127     return ARCInstKind::StoreWeak;
  129     return ARCInstKind::IntrinsicUser;
  131     return ARCInstKind::ClaimRV;
  133     return ARCInstKind::NoopCast;
  135     return ARCInstKind::NoopCast;
  137     return ARCInstKind::NoopCast;
  139     return ARCInstKind::FusedRetainAutorelease;
  141     return ARCInstKind::User;
  143     return ARCInstKind::User;
  152     return ARCInstKind::None;
  213 ARCInstKind llvm::objcarc::GetARCInstKind(const Value *V) {
  226         ARCInstKind Class = GetFunctionClass(F);
  227         if (Class != ARCInstKind::CallOrUser)
  231           return ARCInstKind::None;
  233           return ARCInstKind::User;
  291         return ARCInstKind::User;
  302           return ARCInstKind::User;
  307   return ARCInstKind::None;
  311 bool llvm::objcarc::IsUser(ARCInstKind Class) {
  313   case ARCInstKind::User:
  314   case ARCInstKind::CallOrUser:
  315   case ARCInstKind::IntrinsicUser:
  317   case ARCInstKind::Retain:
  318   case ARCInstKind::RetainRV:
  319   case ARCInstKind::RetainBlock:
  320   case ARCInstKind::Release:
  321   case ARCInstKind::Autorelease:
  322   case ARCInstKind::AutoreleaseRV:
  323   case ARCInstKind::AutoreleasepoolPush:
  324   case ARCInstKind::AutoreleasepoolPop:
  325   case ARCInstKind::NoopCast:
  326   case ARCInstKind::FusedRetainAutorelease:
  327   case ARCInstKind::FusedRetainAutoreleaseRV:
  328   case ARCInstKind::LoadWeakRetained:
  329   case ARCInstKind::StoreWeak:
  330   case ARCInstKind::InitWeak:
  331   case ARCInstKind::LoadWeak:
  332   case ARCInstKind::MoveWeak:
  333   case ARCInstKind::CopyWeak:
  334   case ARCInstKind::DestroyWeak:
  335   case ARCInstKind::StoreStrong:
  336   case ARCInstKind::Call:
  337   case ARCInstKind::None:
  338   case ARCInstKind::ClaimRV:
  345 bool llvm::objcarc::IsRetain(ARCInstKind Class) {
  347   case ARCInstKind::Retain:
  348   case ARCInstKind::RetainRV:
  352   case ARCInstKind::RetainBlock:
  353   case ARCInstKind::Release:
  354   case ARCInstKind::Autorelease:
  355   case ARCInstKind::AutoreleaseRV:
  356   case ARCInstKind::AutoreleasepoolPush:
  357   case ARCInstKind::AutoreleasepoolPop:
  358   case ARCInstKind::NoopCast:
  359   case ARCInstKind::FusedRetainAutorelease:
  360   case ARCInstKind::FusedRetainAutoreleaseRV:
  361   case ARCInstKind::LoadWeakRetained:
  362   case ARCInstKind::StoreWeak:
  363   case ARCInstKind::InitWeak:
  364   case ARCInstKind::LoadWeak:
  365   case ARCInstKind::MoveWeak:
  366   case ARCInstKind::CopyWeak:
  367   case ARCInstKind::DestroyWeak:
  368   case ARCInstKind::StoreStrong:
  369   case ARCInstKind::IntrinsicUser:
  370   case ARCInstKind::CallOrUser:
  371   case ARCInstKind::Call:
  372   case ARCInstKind::User:
  373   case ARCInstKind::None:
  374   case ARCInstKind::ClaimRV:
  381 bool llvm::objcarc::IsAutorelease(ARCInstKind Class) {
  383   case ARCInstKind::Autorelease:
  384   case ARCInstKind::AutoreleaseRV:
  386   case ARCInstKind::Retain:
  387   case ARCInstKind::RetainRV:
  388   case ARCInstKind::ClaimRV:
  389   case ARCInstKind::RetainBlock:
  390   case ARCInstKind::Release:
  391   case ARCInstKind::AutoreleasepoolPush:
  392   case ARCInstKind::AutoreleasepoolPop:
  393   case ARCInstKind::NoopCast:
  394   case ARCInstKind::FusedRetainAutorelease:
  395   case ARCInstKind::FusedRetainAutoreleaseRV:
  396   case ARCInstKind::LoadWeakRetained:
  397   case ARCInstKind::StoreWeak:
  398   case ARCInstKind::InitWeak:
  399   case ARCInstKind::LoadWeak:
  400   case ARCInstKind::MoveWeak:
  401   case ARCInstKind::CopyWeak:
  402   case ARCInstKind::DestroyWeak:
  403   case ARCInstKind::StoreStrong:
  404   case ARCInstKind::IntrinsicUser:
  405   case ARCInstKind::CallOrUser:
  406   case ARCInstKind::Call:
  407   case ARCInstKind::User:
  408   case ARCInstKind::None:
  416 bool llvm::objcarc::IsForwarding(ARCInstKind Class) {
  418   case ARCInstKind::Retain:
  419   case ARCInstKind::RetainRV:
  420   case ARCInstKind::ClaimRV:
  421   case ARCInstKind::Autorelease:
  422   case ARCInstKind::AutoreleaseRV:
  423   case ARCInstKind::NoopCast:
  425   case ARCInstKind::RetainBlock:
  426   case ARCInstKind::Release:
  427   case ARCInstKind::AutoreleasepoolPush:
  428   case ARCInstKind::AutoreleasepoolPop:
  429   case ARCInstKind::FusedRetainAutorelease:
  430   case ARCInstKind::FusedRetainAutoreleaseRV:
  431   case ARCInstKind::LoadWeakRetained:
  432   case ARCInstKind::StoreWeak:
  433   case ARCInstKind::InitWeak:
  434   case ARCInstKind::LoadWeak:
  435   case ARCInstKind::MoveWeak:
  436   case ARCInstKind::CopyWeak:
  437   case ARCInstKind::DestroyWeak:
  438   case ARCInstKind::StoreStrong:
  439   case ARCInstKind::IntrinsicUser:
  440   case ARCInstKind::CallOrUser:
  441   case ARCInstKind::Call:
  442   case ARCInstKind::User:
  443   case ARCInstKind::None:
  451 bool llvm::objcarc::IsNoopOnNull(ARCInstKind Class) {
  453   case ARCInstKind::Retain:
  454   case ARCInstKind::RetainRV:
  455   case ARCInstKind::ClaimRV:
  456   case ARCInstKind::Release:
  457   case ARCInstKind::Autorelease:
  458   case ARCInstKind::AutoreleaseRV:
  459   case ARCInstKind::RetainBlock:
  461   case ARCInstKind::AutoreleasepoolPush:
  462   case ARCInstKind::AutoreleasepoolPop:
  463   case ARCInstKind::FusedRetainAutorelease:
  464   case ARCInstKind::FusedRetainAutoreleaseRV:
  465   case ARCInstKind::LoadWeakRetained:
  466   case ARCInstKind::StoreWeak:
  467   case ARCInstKind::InitWeak:
  468   case ARCInstKind::LoadWeak:
  469   case ARCInstKind::MoveWeak:
  470   case ARCInstKind::CopyWeak:
  471   case ARCInstKind::DestroyWeak:
  472   case ARCInstKind::StoreStrong:
  473   case ARCInstKind::IntrinsicUser:
  474   case ARCInstKind::CallOrUser:
  475   case ARCInstKind::Call:
  476   case ARCInstKind::User:
  477   case ARCInstKind::None:
  478   case ARCInstKind::NoopCast:
  486 bool llvm::objcarc::IsNoopOnGlobal(ARCInstKind Class) {
  488   case ARCInstKind::Retain:
  489   case ARCInstKind::RetainRV:
  490   case ARCInstKind::ClaimRV:
  491   case ARCInstKind::Release:
  492   case ARCInstKind::Autorelease:
  493   case ARCInstKind::AutoreleaseRV:
  494   case ARCInstKind::RetainBlock:
  495   case ARCInstKind::FusedRetainAutorelease:
  496   case ARCInstKind::FusedRetainAutoreleaseRV:
  498   case ARCInstKind::AutoreleasepoolPush:
  499   case ARCInstKind::AutoreleasepoolPop:
  500   case ARCInstKind::LoadWeakRetained:
  501   case ARCInstKind::StoreWeak:
  502   case ARCInstKind::InitWeak:
  503   case ARCInstKind::LoadWeak:
  504   case ARCInstKind::MoveWeak:
  505   case ARCInstKind::CopyWeak:
  506   case ARCInstKind::DestroyWeak:
  507   case ARCInstKind::StoreStrong:
  508   case ARCInstKind::IntrinsicUser:
  509   case ARCInstKind::CallOrUser:
  510   case ARCInstKind::Call:
  511   case ARCInstKind::User:
  512   case ARCInstKind::None:
  513   case ARCInstKind::NoopCast:
  521 bool llvm::objcarc::IsAlwaysTail(ARCInstKind Class) {
  524   case ARCInstKind::Retain:
  525   case ARCInstKind::RetainRV:
  526   case ARCInstKind::ClaimRV:
  527   case ARCInstKind::AutoreleaseRV:
  529   case ARCInstKind::Release:
  530   case ARCInstKind::Autorelease:
  531   case ARCInstKind::RetainBlock:
  532   case ARCInstKind::AutoreleasepoolPush:
  533   case ARCInstKind::AutoreleasepoolPop:
  534   case ARCInstKind::FusedRetainAutorelease:
  535   case ARCInstKind::FusedRetainAutoreleaseRV:
  536   case ARCInstKind::LoadWeakRetained:
  537   case ARCInstKind::StoreWeak:
  538   case ARCInstKind::InitWeak:
  539   case ARCInstKind::LoadWeak:
  540   case ARCInstKind::MoveWeak:
  541   case ARCInstKind::CopyWeak:
  542   case ARCInstKind::DestroyWeak:
  543   case ARCInstKind::StoreStrong:
  544   case ARCInstKind::IntrinsicUser:
  545   case ARCInstKind::CallOrUser:
  546   case ARCInstKind::Call:
  547   case ARCInstKind::User:
  548   case ARCInstKind::None:
  549   case ARCInstKind::NoopCast:
  557 bool llvm::objcarc::IsNeverTail(ARCInstKind Class) {
  563   case ARCInstKind::Autorelease:
  565   case ARCInstKind::Retain:
  566   case ARCInstKind::RetainRV:
  567   case ARCInstKind::ClaimRV:
  568   case ARCInstKind::AutoreleaseRV:
  569   case ARCInstKind::Release:
  570   case ARCInstKind::RetainBlock:
  571   case ARCInstKind::AutoreleasepoolPush:
  572   case ARCInstKind::AutoreleasepoolPop:
  573   case ARCInstKind::FusedRetainAutorelease:
  574   case ARCInstKind::FusedRetainAutoreleaseRV:
  575   case ARCInstKind::LoadWeakRetained:
  576   case ARCInstKind::StoreWeak:
  577   case ARCInstKind::InitWeak:
  578   case ARCInstKind::LoadWeak:
  579   case ARCInstKind::MoveWeak:
  580   case ARCInstKind::CopyWeak:
  581   case ARCInstKind::DestroyWeak:
  582   case ARCInstKind::StoreStrong:
  583   case ARCInstKind::IntrinsicUser:
  584   case ARCInstKind::CallOrUser:
  585   case ARCInstKind::Call:
  586   case ARCInstKind::User:
  587   case ARCInstKind::None:
  588   case ARCInstKind::NoopCast:
  596 bool llvm::objcarc::IsNoThrow(ARCInstKind Class) {
  600   case ARCInstKind::Retain:
  601   case ARCInstKind::RetainRV:
  602   case ARCInstKind::ClaimRV:
  603   case ARCInstKind::Release:
  604   case ARCInstKind::Autorelease:
  605   case ARCInstKind::AutoreleaseRV:
  606   case ARCInstKind::AutoreleasepoolPush:
  607   case ARCInstKind::AutoreleasepoolPop:
  609   case ARCInstKind::RetainBlock:
  610   case ARCInstKind::FusedRetainAutorelease:
  611   case ARCInstKind::FusedRetainAutoreleaseRV:
  612   case ARCInstKind::LoadWeakRetained:
  613   case ARCInstKind::StoreWeak:
  614   case ARCInstKind::InitWeak:
  615   case ARCInstKind::LoadWeak:
  616   case ARCInstKind::MoveWeak:
  617   case ARCInstKind::CopyWeak:
  618   case ARCInstKind::DestroyWeak:
  619   case ARCInstKind::StoreStrong:
  620   case ARCInstKind::IntrinsicUser:
  621   case ARCInstKind::CallOrUser:
  622   case ARCInstKind::Call:
  623   case ARCInstKind::User:
  624   case ARCInstKind::None:
  625   case ARCInstKind::NoopCast:
  635 bool llvm::objcarc::CanInterruptRV(ARCInstKind Class) {
  637   case ARCInstKind::AutoreleasepoolPop:
  638   case ARCInstKind::CallOrUser:
  639   case ARCInstKind::Call:
  640   case ARCInstKind::Autorelease:
  641   case ARCInstKind::AutoreleaseRV:
  642   case ARCInstKind::FusedRetainAutorelease:
  643   case ARCInstKind::FusedRetainAutoreleaseRV:
  645   case ARCInstKind::Retain:
  646   case ARCInstKind::RetainRV:
  647   case ARCInstKind::ClaimRV:
  648   case ARCInstKind::Release:
  649   case ARCInstKind::AutoreleasepoolPush:
  650   case ARCInstKind::RetainBlock:
  651   case ARCInstKind::LoadWeakRetained:
  652   case ARCInstKind::StoreWeak:
  653   case ARCInstKind::InitWeak:
  654   case ARCInstKind::LoadWeak:
  655   case ARCInstKind::MoveWeak:
  656   case ARCInstKind::CopyWeak:
  657   case ARCInstKind::DestroyWeak:
  658   case ARCInstKind::StoreStrong:
  659   case ARCInstKind::IntrinsicUser:
  660   case ARCInstKind::User:
  661   case ARCInstKind::None:
  662   case ARCInstKind::NoopCast:
  668 bool llvm::objcarc::CanDecrementRefCount(ARCInstKind Kind) {
  670   case ARCInstKind::Retain:
  671   case ARCInstKind::RetainRV:
  672   case ARCInstKind::Autorelease:
  673   case ARCInstKind::AutoreleaseRV:
  674   case ARCInstKind::NoopCast:
  675   case ARCInstKind::FusedRetainAutorelease:
  676   case ARCInstKind::FusedRetainAutoreleaseRV:
  677   case ARCInstKind::IntrinsicUser:
  678   case ARCInstKind::User:
  679   case ARCInstKind::None:
  686   case ARCInstKind::RetainBlock:
  687   case ARCInstKind::Release:
  688   case ARCInstKind::AutoreleasepoolPush:
  689   case ARCInstKind::AutoreleasepoolPop:
  690   case ARCInstKind::LoadWeakRetained:
  691   case ARCInstKind::StoreWeak:
  692   case ARCInstKind::InitWeak:
  693   case ARCInstKind::LoadWeak:
  694   case ARCInstKind::MoveWeak:
  695   case ARCInstKind::CopyWeak:
  696   case ARCInstKind::DestroyWeak:
  697   case ARCInstKind::StoreStrong:
  698   case ARCInstKind::CallOrUser:
  699   case ARCInstKind::Call:
  700   case ARCInstKind::ClaimRV:
lib/Transforms/ObjCARC/DependencyAnalysis.cpp
   36                                      ARCInstKind Class) {
   38   case ARCInstKind::Autorelease:
   39   case ARCInstKind::AutoreleaseRV:
   40   case ARCInstKind::IntrinsicUser:
   41   case ARCInstKind::User:
   70                                          ARCInstKind Class) {
   82                            ProvenanceAnalysis &PA, ARCInstKind Class) {
   85   if (Class == ARCInstKind::Call)
  139     ARCInstKind Class = GetARCInstKind(Inst);
  141     case ARCInstKind::AutoreleasepoolPop:
  142     case ARCInstKind::AutoreleasepoolPush:
  143     case ARCInstKind::None:
  151     ARCInstKind Class = GetARCInstKind(Inst);
  153     case ARCInstKind::AutoreleasepoolPop:
  154     case ARCInstKind::AutoreleasepoolPush:
  164     ARCInstKind Class = GetARCInstKind(Inst);
  166     case ARCInstKind::AutoreleasepoolPop:
  169     case ARCInstKind::AutoreleasepoolPush:
  170     case ARCInstKind::None:
  179     case ARCInstKind::AutoreleasepoolPop:
  180     case ARCInstKind::AutoreleasepoolPush:
  184     case ARCInstKind::Retain:
  185     case ARCInstKind::RetainRV:
  194     ARCInstKind Class = GetBasicARCInstKind(Inst);
  196     case ARCInstKind::Retain:
  197     case ARCInstKind::RetainRV:
lib/Transforms/ObjCARC/DependencyAnalysis.h
   67             ARCInstKind Class);
   72                       ProvenanceAnalysis &PA, ARCInstKind Class);
   77                           ProvenanceAnalysis &PA, ARCInstKind Class);
lib/Transforms/ObjCARC/ObjCARC.h
   74                                                     ARCInstKind Class) {
   75   if (Class != ARCInstKind::RetainRV)
lib/Transforms/ObjCARC/ObjCARCAPElim.cpp
   97     case ARCInstKind::AutoreleasepoolPush:
  100     case ARCInstKind::AutoreleasepoolPop:
  116     case ARCInstKind::CallOrUser:
lib/Transforms/ObjCARC/ObjCARCContract.cpp
   92                         ARCInstKind Class,
  155     Function &F, Instruction *Autorelease, ARCInstKind Class,
  163   if (Class == ARCInstKind::AutoreleaseRV)
  181   if (!Retain || GetBasicARCInstKind(Retain) != ARCInstKind::Retain ||
  195   Function *Decl = EP.get(Class == ARCInstKind::AutoreleaseRV
  236     ARCInstKind Class = GetBasicARCInstKind(Inst);
  299   while (I != Begin && GetBasicARCInstKind(&*I) != ARCInstKind::Retain) {
  310   if (GetBasicARCInstKind(Retain) != ARCInstKind::Retain)
  452   ARCInstKind Class = GetBasicARCInstKind(Inst);
  454   case ARCInstKind::FusedRetainAutorelease:
  455   case ARCInstKind::FusedRetainAutoreleaseRV:
  457   case ARCInstKind::Autorelease:
  458   case ARCInstKind::AutoreleaseRV:
  460   case ARCInstKind::Retain:
  467   case ARCInstKind::RetainRV:
  468   case ARCInstKind::ClaimRV: {
  505   case ARCInstKind::InitWeak: {
  521   case ARCInstKind::Release:
  526   case ARCInstKind::User:
  533   case ARCInstKind::IntrinsicUser:
lib/Transforms/ObjCARC/ObjCARCExpand.cpp
  102     case ARCInstKind::Retain:
  103     case ARCInstKind::RetainRV:
  104     case ARCInstKind::Autorelease:
  105     case ARCInstKind::AutoreleaseRV:
  106     case ARCInstKind::FusedRetainAutorelease:
  107     case ARCInstKind::FusedRetainAutoreleaseRV: {
lib/Transforms/ObjCARC/ObjCARCOpts.cpp
  506                                    ARCInstKind &Class);
  638     if (GetBasicARCInstKind(&*I) == ARCInstKind::AutoreleaseRV &&
  673                                            ARCInstKind &Class) {
  692       if (isa<ReturnInst>(U) || GetBasicARCInstKind(U) == ARCInstKind::RetainRV)
  713   Class = ARCInstKind::Autorelease;
  759     ARCInstKind Class = GetBasicARCInstKind(Inst);
  787     case ARCInstKind::NoopCast:
  795     case ARCInstKind::StoreWeak:
  796     case ARCInstKind::LoadWeak:
  797     case ARCInstKind::LoadWeakRetained:
  798     case ARCInstKind::InitWeak:
  799     case ARCInstKind::DestroyWeak: {
  818     case ARCInstKind::CopyWeak:
  819     case ARCInstKind::MoveWeak: {
  841     case ARCInstKind::RetainRV:
  845     case ARCInstKind::AutoreleaseRV:
  875         Class = ARCInstKind::Release;
  934     if (Class == ARCInstKind::Release &&
  971         case ARCInstKind::Retain:
  972         case ARCInstKind::RetainBlock:
  975         case ARCInstKind::Release:
  982         case ARCInstKind::Autorelease:
  988         case ARCInstKind::ClaimRV:
  989         case ARCInstKind::RetainRV:
  990         case ARCInstKind::AutoreleaseRV:
 1199   ARCInstKind Class = GetARCInstKind(Inst);
 1205   case ARCInstKind::Release: {
 1212   case ARCInstKind::RetainBlock:
 1217   case ARCInstKind::Retain:
 1218   case ARCInstKind::RetainRV: {
 1224       if (Class != ARCInstKind::RetainRV) {
 1233   case ARCInstKind::AutoreleasepoolPop:
 1237   case ARCInstKind::AutoreleasepoolPush:
 1238   case ARCInstKind::None:
 1334   ARCInstKind Class = GetARCInstKind(Inst);
 1340   case ARCInstKind::RetainBlock:
 1346   case ARCInstKind::Retain:
 1347   case ARCInstKind::RetainRV: {
 1355   case ARCInstKind::Release: {
 1369   case ARCInstKind::AutoreleasepoolPop:
 1373   case ARCInstKind::AutoreleasepoolPush:
 1374   case ARCInstKind::None:
 1893     ARCInstKind Class = GetBasicARCInstKind(Inst);
 1894     if (Class != ARCInstKind::LoadWeak &&
 1895         Class != ARCInstKind::LoadWeakRetained)
 1899     if (Class == ARCInstKind::LoadWeak && Inst->use_empty()) {
 1914       ARCInstKind EarlierClass = GetARCInstKind(EarlierInst);
 1916       case ARCInstKind::LoadWeak:
 1917       case ARCInstKind::LoadWeakRetained: {
 1928           if (Class == ARCInstKind::LoadWeakRetained) {
 1945       case ARCInstKind::StoreWeak:
 1946       case ARCInstKind::InitWeak: {
 1957           if (Class == ARCInstKind::LoadWeakRetained) {
 1974       case ARCInstKind::MoveWeak:
 1975       case ARCInstKind::CopyWeak:
 1978       case ARCInstKind::AutoreleasepoolPush:
 1979       case ARCInstKind::None:
 1980       case ARCInstKind::IntrinsicUser:
 1981       case ARCInstKind::User:
 1997     ARCInstKind Class = GetBasicARCInstKind(Inst);
 1998     if (Class != ARCInstKind::DestroyWeak)
 2007         case ARCInstKind::InitWeak:
 2008         case ARCInstKind::StoreWeak:
 2009         case ARCInstKind::DestroyWeak:
 2019         case ARCInstKind::InitWeak:
 2020         case ARCInstKind::StoreWeak:
 2024         case ARCInstKind::DestroyWeak:
 2086   ARCInstKind Class = GetBasicARCInstKind(Call);
 2087   return Class == ARCInstKind::CallOrUser || Class == ARCInstKind::Call;
 2087   return Class == ARCInstKind::CallOrUser || Class == ARCInstKind::Call;
 2132   ARCInstKind AutoreleaseClass = GetBasicARCInstKind(Autorelease);
 2220     case ARCInstKind::Retain:
 2223     case ARCInstKind::Release:
 2281   if (UsedInThisFunction & ((1 << unsigned(ARCInstKind::LoadWeak)) |
 2282                             (1 << unsigned(ARCInstKind::LoadWeakRetained)) |
 2283                             (1 << unsigned(ARCInstKind::StoreWeak)) |
 2284                             (1 << unsigned(ARCInstKind::InitWeak)) |
 2285                             (1 << unsigned(ARCInstKind::CopyWeak)) |
 2286                             (1 << unsigned(ARCInstKind::MoveWeak)) |
 2287                             (1 << unsigned(ARCInstKind::DestroyWeak))))
 2291   if (UsedInThisFunction & ((1 << unsigned(ARCInstKind::Retain)) |
 2292                             (1 << unsigned(ARCInstKind::RetainRV)) |
 2293                             (1 << unsigned(ARCInstKind::RetainBlock))))
 2294     if (UsedInThisFunction & (1 << unsigned(ARCInstKind::Release)))
 2300   if (UsedInThisFunction & ((1 << unsigned(ARCInstKind::Autorelease)) |
 2301                             (1 << unsigned(ARCInstKind::AutoreleaseRV))))
lib/Transforms/ObjCARC/PtrState.cpp
  231                                                     ARCInstKind Class) {
  259                                           ARCInstKind Class) {
  326 bool TopDownPtrState::InitTopDown(ARCInstKind Kind, Instruction *I) {
  331   if (Kind != ARCInstKind::RetainRV) {
  383                                                    ARCInstKind Class) {
  387       Class != ARCInstKind::IntrinsicUser)
  417                                          ARCInstKind Class) {
lib/Transforms/ObjCARC/PtrState.h
  184                           ProvenanceAnalysis &PA, ARCInstKind Class);
  186                                     ProvenanceAnalysis &PA, ARCInstKind Class);
  194   bool InitTopDown(ARCInstKind Kind, Instruction *I);
  202                           ProvenanceAnalysis &PA, ARCInstKind Class);
  205                                     ProvenanceAnalysis &PA, ARCInstKind Class);