]> granicus.if.org Git - clang/commitdiff
We only need to call SetObjCNonGC for local variables. No functionality change.
authorAnders Carlsson <andersca@mac.com>
Sat, 7 Nov 2009 22:43:34 +0000 (22:43 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 7 Nov 2009 22:43:34 +0000 (22:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86410 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExpr.cpp

index 62e16e8ba2347cf20cdc31a7d9d3074c6d454a9f..fbb593983debd2902a067395f44f4fff2763f2ee 100644 (file)
@@ -819,14 +819,14 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) {
   if (VD && (VD->isBlockVarDecl() || isa<ParmVarDecl>(VD) ||
         isa<ImplicitParamDecl>(VD))) {
     LValue LV;
-    bool NonGCable = VD->hasLocalStorage() &&
-      !VD->hasAttr<BlocksAttr>();
     if (VD->hasExternalStorage()) {
       llvm::Value *V = CGM.GetAddrOfGlobalVar(VD);
       if (VD->getType()->isReferenceType())
         V = Builder.CreateLoad(V, "tmp");
       LV = LValue::MakeAddr(V, MakeQualifiers(E->getType()));
     } else {
+      bool NonGCable = VD->hasLocalStorage() && !VD->hasAttr<BlocksAttr>();
+
       llvm::Value *V = LocalDeclMap[VD];
       assert(V && "DeclRefExpr not entered in LocalDeclMap?");
 
@@ -844,8 +844,8 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) {
       if (VD->getType()->isReferenceType())
         V = Builder.CreateLoad(V, "tmp");
       LV = LValue::MakeAddr(V, Quals);
+      LValue::SetObjCNonGC(LV, NonGCable);
     }
-    LValue::SetObjCNonGC(LV, NonGCable);
     setObjCGCLValueClass(getContext(), E, LV);
     return LV;
   }