summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2012-11-12 22:25:41 +0000
committerDavid Blaikie <dblaikie@gmail.com>2012-11-12 22:25:41 +0000
commit1d6178065c327015a5c80bf95696f61ad2a7a85d (patch)
tree576b5fdb6a1c82c766d57219d0e0a54b9c461706 /clang/lib
parent29424311754406f71d32cd2802d7c7687cfb4ad2 (diff)
downloadbcm5719-llvm-1d6178065c327015a5c80bf95696f61ad2a7a85d.tar.gz
bcm5719-llvm-1d6178065c327015a5c80bf95696f61ad2a7a85d.zip
Fix more try scoping bugs introduced by r167650.
Introduces more clear scoping flags & flag combinations which should hopefully be more understandable. llvm-svn: 167766
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Parse/ParseStmt.cpp2
-rw-r--r--clang/lib/Sema/IdentifierResolver.cpp13
2 files changed, 6 insertions, 9 deletions
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp
index f604e038d2a..58831158502 100644
--- a/clang/lib/Parse/ParseStmt.cpp
+++ b/clang/lib/Parse/ParseStmt.cpp
@@ -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 : 0));
+ (FnCatch ? Scope::FnCatchScope : Scope::CatchScope));
// exception-declaration is equivalent to '...' or a parameter-declaration
// without default arguments.
diff --git a/clang/lib/Sema/IdentifierResolver.cpp b/clang/lib/Sema/IdentifierResolver.cpp
index 00939151c67..7d5530442f4 100644
--- a/clang/lib/Sema/IdentifierResolver.cpp
+++ b/clang/lib/Sema/IdentifierResolver.cpp
@@ -135,16 +135,13 @@ bool IdentifierResolver::isDeclInScope(Decl *D, DeclContext *Ctx,
// of the controlled statement.
//
assert(S->getParent() && "No TUScope?");
- if (S->getFlags() & Scope::FnTryScope)
- return S->getParent()->isDeclScope(D);
if (S->getParent()->getFlags() & Scope::ControlScope) {
- if (S->getParent()->getFlags() & Scope::FnCatchScope) {
- S = S->getParent();
- if (S->isDeclScope(D))
- return true;
- }
- return S->getParent()->isDeclScope(D);
+ S = S->getParent();
+ if (S->isDeclScope(D))
+ return true;
}
+ if (S->getFlags() & Scope::FnTryCatchScope)
+ return S->getParent()->isDeclScope(D);
}
return false;
}
OpenPOWER on IntegriCloud