summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2012-11-13 18:51:45 +0000
committerDavid Blaikie <dblaikie@gmail.com>2012-11-13 18:51:45 +0000
commit3403feb1d0d32e956e3045dfd5072a3d1d9adb88 (patch)
treeffa31b9fe7e7cd21fc91cfd25a76a7ac8d1afb3a
parent3946877f8835b50e67d55f6a807e62a1969e0fc3 (diff)
downloadbcm5719-llvm-3403feb1d0d32e956e3045dfd5072a3d1d9adb88.tar.gz
bcm5719-llvm-3403feb1d0d32e956e3045dfd5072a3d1d9adb88.zip
Simplify function try/catch scope handling.
Based on post-commit review feedback for r167766 by Richard Smith. llvm-svn: 167856
-rw-r--r--clang/include/clang/Sema/Scope.h11
-rw-r--r--clang/lib/Parse/ParseStmt.cpp6
2 files changed, 4 insertions, 13 deletions
diff --git a/clang/include/clang/Sema/Scope.h b/clang/include/clang/Sema/Scope.h
index 1329f97c2bc..855485d08eb 100644
--- a/clang/include/clang/Sema/Scope.h
+++ b/clang/include/clang/Sema/Scope.h
@@ -84,18 +84,9 @@ public:
/// TryScope - This is the scope of a C++ try statement.
TryScope = 0x1000,
- /// CatchScope - This is the scope of a C++ catch statement.
- CatchScope = 0x2000,
-
/// FnTryCatchScope - This is the scope for a function-level C++ try or
/// catch scope.
- FnTryCatchScope = 0x4000,
-
- /// FnTryScope - This is the scope of a function-level C++ try scope.
- FnTryScope = TryScope | FnTryCatchScope,
-
- /// FnCatchScope - This is the scope of a function-level C++ catch scope.
- FnCatchScope = CatchScope | FnTryCatchScope
+ FnTryCatchScope = 0x2000
};
private:
/// The parent scope for this scope. This is null for the translation-unit
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp
index 58831158502..a4e0c9844ac 100644
--- a/clang/lib/Parse/ParseStmt.cpp
+++ b/clang/lib/Parse/ParseStmt.cpp
@@ -2123,8 +2123,8 @@ StmtResult Parser::ParseCXXTryBlockCommon(SourceLocation TryLoc, bool FnTry) {
// FIXME: Possible draft standard bug: attribute-specifier should be allowed?
StmtResult TryBlock(ParseCompoundStatement(/*isStmtExpr=*/false,
- Scope::DeclScope |
- (FnTry ? Scope::FnTryScope : Scope::TryScope)));
+ Scope::DeclScope | Scope::TryScope |
+ (FnTry ? Scope::FnTryCatchScope : 0)));
if (TryBlock.isInvalid())
return TryBlock;
@@ -2197,7 +2197,7 @@ StmtResult Parser::ParseCXXCatchBlock(bool FnCatch) {
// The name in a catch exception-declaration is local to the handler and
// shall not be redeclared in the outermost block of the handler.
ParseScope CatchScope(this, Scope::DeclScope | Scope::ControlScope |
- (FnCatch ? Scope::FnCatchScope : Scope::CatchScope));
+ (FnCatch ? Scope::FnTryCatchScope : 0));
// exception-declaration is equivalent to '...' or a parameter-declaration
// without default arguments.
OpenPOWER on IntegriCloud