From 1fc5194039fc01e84af46342bf6e0790f0ebb58c Mon Sep 17 00:00:00 2001 From: Steve Naroff Date: Tue, 14 Apr 2009 20:53:38 +0000 Subject: Fix [sema] jumps into Obj-C exception blocks should be disallowed. This builds on Eli's work from http://llvm.org/viewvc/llvm-project?view=rev&revision=65678. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69073 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaDecl.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'lib/Sema/SemaDecl.cpp') diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 7675d5a9d6..7cc3029aae 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -2897,21 +2897,22 @@ Sema::DeclPtrTy Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope, DeclPtrTy D) { } static bool StatementCreatesScope(Stmt* S) { - DeclStmt *DS = dyn_cast(S); - if (DS == 0) return false; - for (DeclStmt::decl_iterator I = DS->decl_begin(), E = DS->decl_end(); - I != E; ++I) { - if (VarDecl *D = dyn_cast(*I)) { - if (D->getType()->isVariablyModifiedType() || - D->hasAttr()) - return true; - } else if (TypedefDecl *D = dyn_cast(*I)) { - if (D->getUnderlyingType()->isVariablyModifiedType()) - return true; + if (DeclStmt *DS = dyn_cast(S)) { + for (DeclStmt::decl_iterator I = DS->decl_begin(), E = DS->decl_end(); + I != E; ++I) { + if (VarDecl *D = dyn_cast(*I)) { + if (D->getType()->isVariablyModifiedType() || + D->hasAttr()) + return true; + } else if (TypedefDecl *D = dyn_cast(*I)) { + if (D->getUnderlyingType()->isVariablyModifiedType()) + return true; + } } + } else if (isa(S)) { + return true; } - return false; } -- cgit v1.2.3-18-g5258