]> granicus.if.org Git - clang/commitdiff
SEH was crashing under -fms-extensions.
authorFrancois Pichet <pichet2000@gmail.com>
Thu, 28 Apr 2011 03:14:31 +0000 (03:14 +0000)
committerFrancois Pichet <pichet2000@gmail.com>
Thu, 28 Apr 2011 03:14:31 +0000 (03:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130377 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseStmt.cpp

index 3741ccbca15704734d2462c623b18ad6696e4a53..f0ab531080338aa4548117790030246b4570c45b 100644 (file)
@@ -386,13 +386,18 @@ StmtResult Parser::ParseSEHExceptBlock(SourceLocation ExceptLoc) {
 
   ParseScope ExpectScope(this, Scope::DeclScope | Scope::ControlScope);
 
-  Ident__exception_info->setIsPoisoned(false);
-  Ident___exception_info->setIsPoisoned(false);
-  Ident_GetExceptionInfo->setIsPoisoned(false);
+  if (getLang().Borland) {
+    Ident__exception_info->setIsPoisoned(false);
+    Ident___exception_info->setIsPoisoned(false);
+    Ident_GetExceptionInfo->setIsPoisoned(false);
+  }
   ExprResult FilterExpr(ParseExpression());
-  Ident__exception_info->setIsPoisoned(true);
-  Ident___exception_info->setIsPoisoned(true);
-  Ident_GetExceptionInfo->setIsPoisoned(true);
+
+  if (getLang().Borland) {
+    Ident__exception_info->setIsPoisoned(true);
+    Ident___exception_info->setIsPoisoned(true);
+    Ident_GetExceptionInfo->setIsPoisoned(true);
+  }
 
   if(FilterExpr.isInvalid())
     return StmtError();