Some code simplification. ir gen for gc'able array
of objects in objc.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64992 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGValue.h b/lib/CodeGen/CGValue.h
index 318ee55..96e4224 100644
--- a/lib/CodeGen/CGValue.h
+++ b/lib/CodeGen/CGValue.h
@@ -182,11 +182,10 @@
     R.Ivar = iValue;
   }
     
-  static void SetObjCType(bool isWeak, bool isStrong, LValue& R) {
-    assert(!(isWeak == true && isStrong == true));
-    if (isWeak)
+  static void SetObjCType(QualType::GCAttrTypes GCAttrs, LValue& R) {
+    if (GCAttrs == QualType::Weak)
       R.ObjCType = Weak;
-    else if (isStrong)
+    else if (GCAttrs == QualType::Strong)
       R.ObjCType = Strong;
   }
   
@@ -227,11 +226,13 @@
     return KVCRefExpr;
   }
 
-  static LValue MakeAddr(llvm::Value *V, unsigned Qualifiers) {
+  static LValue MakeAddr(llvm::Value *V, unsigned Qualifiers,
+                         QualType::GCAttrTypes GCAttrs = QualType::GCNone) {
     LValue R;
     R.LVType = Simple;
     R.V = V;
     SetQualifiers(Qualifiers,R);
+    SetObjCType(GCAttrs, R);
     return R;
   }