start avoid doing lots of unneeded work handling selectors


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52758 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGObjCRuntime.h b/lib/CodeGen/CGObjCRuntime.h
index cc33982..a000dd9 100644
--- a/lib/CodeGen/CGObjCRuntime.h
+++ b/lib/CodeGen/CGObjCRuntime.h
@@ -28,6 +28,8 @@
 }
 
 namespace clang {
+  class Selector;
+  
 namespace CodeGen {
   class CodeGenModule;
 
@@ -82,13 +84,13 @@
   virtual llvm::Value *GenerateProtocolRef(llvm::IRBuilder &Builder, const char
       *ProtocolName) =0;
   virtual llvm::Value *GenerateMessageSendSuper(llvm::IRBuilder &Builder,
-                                            const llvm::Type *ReturnTy,
-                                            llvm::Value *Sender,
-                                            const char *SuperClassName,
-                                            llvm::Value *Receiver,
-                                            llvm::Value *Selector,
-                                            llvm::Value** ArgV,
-                                            unsigned ArgC) {return NULL;};
+                                                const llvm::Type *ReturnTy,
+                                                llvm::Value *Sender,
+                                                const char *SuperClassName,
+                                                llvm::Value *Receiver,
+                                                Selector Sel,
+                                                llvm::Value** ArgV,
+                                                unsigned ArgC) = 0;
   /// Generate the named protocol.  Protocols contain method metadata but no 
   /// implementations. 
   virtual void GenerateProtocol(const char *ProtocolName,