From: Anders Carlsson Date: Sat, 7 Nov 2009 22:43:34 +0000 (+0000) Subject: We only need to call SetObjCNonGC for local variables. No functionality change. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a59869b277f9fb8d6e062cab97b6bafe7c199900;p=clang We only need to call SetObjCNonGC for local variables. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86410 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index 62e16e8ba2..fbb593983d 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -819,14 +819,14 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) { if (VD && (VD->isBlockVarDecl() || isa(VD) || isa(VD))) { LValue LV; - bool NonGCable = VD->hasLocalStorage() && - !VD->hasAttr(); 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(); + 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; }