Support dependent extended vector types and template instantiation
thereof. Patch by Anders Johnsen!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73641 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp
index 5d47516..9013726 100644
--- a/lib/Sema/SemaDeclObjC.cpp
+++ b/lib/Sema/SemaDeclObjC.cpp
@@ -116,7 +116,7 @@
     IDecl = ObjCInterfaceDecl::Create(Context, CurContext, AtInterfaceLoc, 
                                       ClassName, ClassLoc);
     if (AttrList)
-      ProcessDeclAttributeList(IDecl, AttrList);
+      ProcessDeclAttributeList(TUScope, IDecl, AttrList);
   
     PushOnScopeChains(IDecl, TUScope);
   }
@@ -282,7 +282,7 @@
     PDecl->setForwardDecl(false);
   }
   if (AttrList)
-    ProcessDeclAttributeList(PDecl, AttrList);
+    ProcessDeclAttributeList(TUScope, PDecl, AttrList);
   if (NumProtoRefs) {
     /// Check then save referenced protocols.
     PDecl->setProtocolList((ObjCProtocolDecl**)ProtoRefs, NumProtoRefs,Context);
@@ -532,7 +532,7 @@
       PushOnScopeChains(PDecl, TUScope);
     }
     if (attrList)
-      ProcessDeclAttributeList(PDecl, attrList);
+      ProcessDeclAttributeList(TUScope, PDecl, attrList);
     Protocols.push_back(PDecl);
   }
   
@@ -1663,7 +1663,7 @@
       CvtQTToAstBitMask(ArgInfo[i].DeclSpec.getObjCDeclQualifier()));
     
     // Apply the attributes to the parameter.
-    ProcessDeclAttributeList(Param, ArgInfo[i].ArgAttrs);
+    ProcessDeclAttributeList(TUScope, Param, ArgInfo[i].ArgAttrs);
     
     Params.push_back(Param);
   }
@@ -1674,7 +1674,7 @@
   const ObjCMethodDecl *PrevMethod = 0;
 
   if (AttrList)
-    ProcessDeclAttributeList(ObjCMethod, AttrList);
+    ProcessDeclAttributeList(TUScope, ObjCMethod, AttrList);
   
   // For implementations (which can be very "coarse grain"), we add the 
   // method now. This allows the AST to implement lookup methods that work 
@@ -1877,7 +1877,7 @@
     PDecl->setInvalidDecl();
   }
   
-  ProcessDeclAttributes(PDecl, FD.D);
+  ProcessDeclAttributes(S, PDecl, FD.D);
 
   // Regardless of setter/getter attribute, we save the default getter/setter
   // selector names in anticipation of declaration of setter/getter methods.