diff options
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 66369674f25..dfa472cc26b 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -7074,7 +7074,10 @@ void Sema::ActOnBlockStart(SourceLocation CaretLoc, Scope *BlockScope) {    BlockDecl *Block = BlockDecl::Create(Context, CurContext, CaretLoc);    PushBlockScope(BlockScope, Block);    CurContext->addDecl(Block); -  PushDeclContext(BlockScope, Block); +  if (BlockScope) +    PushDeclContext(BlockScope, Block); +  else +    CurContext = Block;  }  void Sema::ActOnBlockArguments(Declarator &ParamInfo, Scope *CurScope) { @@ -7199,7 +7202,7 @@ Sema::OwningExprResult Sema::ActOnBlockStmtExpr(SourceLocation CaretLoc,      Diag(CaretLoc, diag::err_blocks_disable);    BlockScopeInfo *BSI = cast<BlockScopeInfo>(FunctionScopes.back()); - +      PopDeclContext();    QualType RetTy = Context.VoidTy; | 

