From: Steve Naroff Date: Mon, 22 Sep 2008 15:31:56 +0000 (+0000) Subject: Remove unused slot/reference and update Sema::ActOnIdentifierExpr(). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=33ae3afcf893ee0af25401409ba1246d9cee1774;p=clang Remove unused slot/reference and update Sema::ActOnIdentifierExpr(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56438 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h index 99ce5a7429..4fbd735113 100644 --- a/lib/Sema/Sema.h +++ b/lib/Sema/Sema.h @@ -1038,7 +1038,6 @@ public: /// about the block. It is pointed to from Sema::CurBlock. struct BlockSemaInfo { llvm::SmallVector Params; - llvm::SmallPtrSet ByRefVars; bool hasPrototype; bool isVariadic; diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index b7d5c8e12c..e374a035cb 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -436,11 +436,12 @@ Sema::ExprResult Sema::ActOnIdentifierExpr(Scope *S, SourceLocation Loc, // If we are in a block and the variable is outside the current block, // bind the variable reference with a BlockDeclRefExpr. - // If the variable is in the byref set, bind it directly, otherwise it will be - // bound by-copy, thus we make it const within the closure. - if (!CurBlock->ByRefVars.count(VD)) - VD->getType().addConst(); + // The BlocksAttr indicates the variable is bound by-reference. + if (VD->getAttr()) + return new BlockDeclRefExpr(VD, VD->getType(), Loc, true); + // Variable will be bound by-copy, make it const within the closure. + VD->getType().addConst(); return new BlockDeclRefExpr(VD, VD->getType(), Loc, false); }