diff options
author | Anders Carlsson <andersca@mac.com> | 2009-11-07 22:46:42 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-11-07 22:46:42 +0000 |
commit | 0bc7049d636f63b4b0e9ee0a2edf37541f5e3bee (patch) | |
tree | 9f281d8350762d04a4c679998c69496a880428cb | |
parent | a59869b277f9fb8d6e062cab97b6bafe7c199900 (diff) |
Reduce nesting, no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86411 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGExpr.cpp | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index fbb593983d..1a3fcc180a 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -824,28 +824,30 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) { if (VD->getType()->isReferenceType()) V = Builder.CreateLoad(V, "tmp"); LV = LValue::MakeAddr(V, MakeQualifiers(E->getType())); - } else { - bool NonGCable = VD->hasLocalStorage() && !VD->hasAttr<BlocksAttr>(); + setObjCGCLValueClass(getContext(), E, LV); + return LV; + } - llvm::Value *V = LocalDeclMap[VD]; - assert(V && "DeclRefExpr not entered in LocalDeclMap?"); + bool NonGCable = VD->hasLocalStorage() && !VD->hasAttr<BlocksAttr>(); - Qualifiers Quals = MakeQualifiers(E->getType()); - // local variables do not get their gc attribute set. - // local static? - if (NonGCable) Quals.removeObjCGCAttr(); + llvm::Value *V = LocalDeclMap[VD]; + assert(V && "DeclRefExpr not entered in LocalDeclMap?"); - if (VD->hasAttr<BlocksAttr>()) { - V = Builder.CreateStructGEP(V, 1, "forwarding"); - V = Builder.CreateLoad(V, false); - V = Builder.CreateStructGEP(V, getByRefValueLLVMField(VD), - VD->getNameAsString()); - } - if (VD->getType()->isReferenceType()) - V = Builder.CreateLoad(V, "tmp"); - LV = LValue::MakeAddr(V, Quals); - LValue::SetObjCNonGC(LV, NonGCable); + Qualifiers Quals = MakeQualifiers(E->getType()); + // local variables do not get their gc attribute set. + // local static? + if (NonGCable) Quals.removeObjCGCAttr(); + + if (VD->hasAttr<BlocksAttr>()) { + V = Builder.CreateStructGEP(V, 1, "forwarding"); + V = Builder.CreateLoad(V, false); + V = Builder.CreateStructGEP(V, getByRefValueLLVMField(VD), + VD->getNameAsString()); } + if (VD->getType()->isReferenceType()) + V = Builder.CreateLoad(V, "tmp"); + LV = LValue::MakeAddr(V, Quals); + LValue::SetObjCNonGC(LV, NonGCable); setObjCGCLValueClass(getContext(), E, LV); return LV; } |