[objc-arc] Extract out MDNodes into a cache structure so the information can be passed around.

llvm-svn: 231436
diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARC.h b/llvm/lib/Transforms/ObjCARC/ObjCARC.h
index df29f05..a303036 100644
--- a/llvm/lib/Transforms/ObjCARC/ObjCARC.h
+++ b/llvm/lib/Transforms/ObjCARC/ObjCARC.h
@@ -257,6 +257,18 @@
   return false;
 }
 
+/// A cache of MDKinds used by various ARC optimizations.
+struct ARCMDKindCache {
+  /// The Metadata Kind for clang.imprecise_release metadata.
+  unsigned ImpreciseReleaseMDKind;
+
+  /// The Metadata Kind for clang.arc.copy_on_escape metadata.
+  unsigned CopyOnEscapeMDKind;
+
+  /// The Metadata Kind for clang.arc.no_objc_arc_exceptions metadata.
+  unsigned NoObjCARCExceptionsMDKind;
+};
+
 } // end namespace objcarc
 } // end namespace llvm