Change CodeGenModule to only create ObjC runtime for ObjC files
 - Changed CodeGenModule::getObjCRuntime to return reference.
 - Added CodeGenModule::hasObjCRuntime predicate.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54645 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp
index d1545a2..e152488 100644
--- a/lib/CodeGen/CGObjC.cpp
+++ b/lib/CodeGen/CGObjC.cpp
@@ -21,7 +21,7 @@
 
 /// Emits an instance of NSConstantString representing the object.
 llvm::Value *CodeGenFunction::EmitObjCStringLiteral(const ObjCStringLiteral *E){
-  return CGM.getObjCRuntime()->GenerateConstantString(
+  return CGM.getObjCRuntime().GenerateConstantString(
       E->getString()->getStrData(), E->getString()->getByteLength());
 }
 
@@ -31,7 +31,7 @@
   // Note that this implementation allows for non-constant strings to be passed
   // as arguments to @selector().  Currently, the only thing preventing this
   // behaviour is the type checking in the front end.
-  return CGM.getObjCRuntime()->GetSelector(Builder, E->getSelector());
+  return CGM.getObjCRuntime().GetSelector(Builder, E->getSelector());
 }
 
 
@@ -41,7 +41,7 @@
   // implementation vary between runtimes.  We can get the receiver and
   // arguments in generic code.
   
-  CGObjCRuntime *Runtime = CGM.getObjCRuntime();
+  CGObjCRuntime &Runtime = CGM.getObjCRuntime();
   const Expr *ReceiverExpr = E->getReceiver();
   bool isSuperMessage = false;
   // Find the receiver
@@ -53,7 +53,7 @@
     }
     llvm::Value *ClassName = CGM.GetAddrOfConstantString(classname);
     ClassName = Builder.CreateStructGEP(ClassName, 0);
-    Receiver = Runtime->LookupClass(Builder, ClassName);
+    Receiver = Runtime.LookupClass(Builder, ClassName);
   } else if (const PredefinedExpr *PDE =
                dyn_cast<PredefinedExpr>(E->getReceiver())) {
     assert(PDE->getIdentType() == PredefinedExpr::ObjCSuper);
@@ -89,12 +89,12 @@
     const ObjCMethodDecl *OMD = cast<ObjCMethodDecl>(CurFuncDecl);
     const char *SuperClass =
       OMD->getClassInterface()->getSuperClass()->getName();
-    return Runtime->GenerateMessageSendSuper(Builder, ConvertType(E->getType()),
+    return Runtime.GenerateMessageSendSuper(Builder, ConvertType(E->getType()),
                                              Receiver, SuperClass,
                                              Receiver, E->getSelector(),
                                              &Args[0], Args.size());
   }
-  return Runtime->GenerateMessageSend(Builder, ConvertType(E->getType()),
+  return Runtime.GenerateMessageSend(Builder, ConvertType(E->getType()),
                                       LoadObjCSelf(),
                                       Receiver, E->getSelector(),
                                       &Args[0], Args.size());
@@ -119,7 +119,7 @@
   }
   const llvm::Type *ReturnTy = 
     CGM.getTypes().ConvertReturnType(OMD->getResultType());
-  CurFn = CGM.getObjCRuntime()->MethodPreamble(
+  CurFn = CGM.getObjCRuntime().MethodPreamble(
                                           OMD->getClassInterface()->getName(),
                                               CategoryName,
                                               OMD->getSelector().getName(),