diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp
index de76b17..59450e7 100644
--- a/clang/lib/Parse/ParseOpenMP.cpp
+++ b/clang/lib/Parse/ParseOpenMP.cpp
@@ -84,14 +84,11 @@
   SmallVector<OMPClause *, 5> Clauses;
   SmallVector<llvm::PointerIntPair<OMPClause *, 1, bool>, NUM_OPENMP_CLAUSES>
                                                FirstClauses(NUM_OPENMP_CLAUSES);
-  const unsigned ScopeFlags = Scope::FnScope | Scope::DeclScope |
-                              Scope::OpenMPDirectiveScope;
+  const unsigned ScopeFlags = Scope::FnScope | Scope::DeclScope;
   SourceLocation Loc = ConsumeToken(), EndLoc;
   OpenMPDirectiveKind DKind = Tok.isAnnotation() ?
                                   OMPD_unknown :
                                   getOpenMPDirectiveKind(PP.getSpelling(Tok));
-  // Name of critical directive.
-  DeclarationNameInfo DirName;
   StmtResult Directive = StmtError();
 
   switch (DKind) {
@@ -114,9 +111,6 @@
     break;
   case OMPD_parallel: {
     ConsumeToken();
-
-    Actions.StartOpenMPDSABlock(DKind, DirName, Actions.getCurScope());
-
     while (Tok.isNot(tok::annot_pragma_openmp_end)) {
       OpenMPClauseKind CKind = Tok.isAnnotation() ?
                                   OMPC_unknown :
@@ -144,7 +138,7 @@
     {
       // The body is a block scope like in Lambdas and Blocks.
       Sema::CompoundScopeRAII CompoundScope(Actions);
-      Actions.ActOnCapturedRegionStart(Loc, getCurScope(), CR_OpenMP, 1);
+      Actions.ActOnCapturedRegionStart(Loc, getCurScope(), CR_Default, 1);
       Actions.ActOnStartOfCompoundStmt();
       // Parse statement
       AssociatedStmt = ParseStatement();
@@ -163,7 +157,6 @@
                                                          Loc, EndLoc);
 
     // Exit scope.
-    Actions.EndOpenMPDSABlock(Directive.get());
     OMPDirectiveScope.Exit();
     }
     break;
@@ -252,7 +245,7 @@
 /// \brief Parsing of OpenMP clauses.
 ///
 ///    clause:
-///       default-clause|private-clause|shared-clause
+///       default-clause|private-clause
 ///
 OMPClause *Parser::ParseOpenMPClause(OpenMPDirectiveKind DKind,
                                      OpenMPClauseKind CKind, bool FirstClause) {
@@ -278,7 +271,6 @@
     Clause = ParseOpenMPSimpleClause(CKind);
     break;
   case OMPC_private:
-  case OMPC_shared:
     Clause = ParseOpenMPVarListClause(CKind);
     break;
   case OMPC_unknown:
@@ -330,8 +322,6 @@
 ///
 ///    private-clause:
 ///       'private' '(' list ')'
-///    shared-clause:
-///       'shared' '(' list ')'
 ///
 OMPClause *Parser::ParseOpenMPVarListClause(OpenMPClauseKind Kind) {
   SourceLocation Loc = Tok.getLocation();
