[cfe-commits] r97518 - in /cfe/trunk: include/clang/Parse/Scope.h lib/Parse/Parser.cpp lib/Sema/Sema.cpp lib/Sema/Sema.h lib/Sema/SemaChecking.cpp lib/Sema/SemaCodeComplete.cpp lib/Sema/SemaDecl.cpp lib/Sema/SemaDeclObjC.cpp lib/Sema/SemaExpr.cpp lib/Sema/SemaStmt.cpp test/Sema/warn-unused-variables.c test/SemaCXX/local-classes.cpp
clattner at apple.com
Mon Mar 1 17:41:30 CST 2010
On Mar 1, 2010, at 3:15 PM, Douglas Gregor wrote:
> Author: dgregor
> Date: Mon Mar 1 17:15:13 2010
> New Revision: 97518
> URL: http://llvm.org/viewvc/llvm-project?rev=97518&view=rev
> Keep an explicit stack of function and block scopes, each element of
> which has the label map, switch statement stack, etc. Previously, we
> had a single set of maps in Sema (for the function) along with a stack
> of block scopes. However, this lead to funky behavior with nested
> functions, e.g., in the member functions of local classes.
> The explicit-stack approach is far cleaner, and we retain a 1-element
> cache so that we're not malloc/free'ing every time we enter a
> function. Fixes PR6382.
> Also, tweaked the unused-variable warning suppression logic to look at
> errors within a given Scope rather than within a given function. The
> prior code wasn't looking at the right number-of-errors count when
> dealing with blocks, since the block's count would be deallocated
> before we got to ActOnPopScope. This approach works with nested
> blocks/functions, and gives tighter error recovery.
More information about the cfe-commits