Make the RAII extension warning silencing for __extension__ a bit 
narrower, so it doesn't catch expresions that aren't sub-expressions of
__extension__ operator.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71967 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseStmt.cpp b/lib/Parse/ParseStmt.cpp
index d0d462b..50db966 100644
--- a/lib/Parse/ParseStmt.cpp
+++ b/lib/Parse/ParseStmt.cpp
@@ -435,13 +435,13 @@
       SourceLocation ExtLoc = ConsumeToken();
       while (Tok.is(tok::kw___extension__))
         ConsumeToken();
-      
-      // __extension__ silences extension warnings in the subexpression.
-      ExtensionRAIIObject O(Diags);  // Use RAII to do this.
 
       // If this is the start of a declaration, parse it as such.
       if (isDeclarationStatement()) {
+        // __extension__ silences extension warnings in the subdeclaration.
         // FIXME: Save the __extension__ on the decl as a node somehow?
+        ExtensionRAIIObject O(Diags);
+
         SourceLocation DeclStart = Tok.getLocation(), DeclEnd;
         DeclGroupPtrTy Res = ParseDeclaration(Declarator::BlockContext,DeclEnd);
         R = Actions.ActOnDeclStmt(Res, DeclStart, DeclEnd);