Index: cfe/trunk/lib/Sema/SemaOpenMP.cpp =================================================================== --- cfe/trunk/lib/Sema/SemaOpenMP.cpp +++ cfe/trunk/lib/Sema/SemaOpenMP.cpp @@ -2268,7 +2268,11 @@ // Check default data sharing attributes for referenced variables. DSAAttrChecker DSAChecker(DSAStack, *this, cast(AStmt)); - DSAChecker.Visit(cast(AStmt)->getCapturedStmt()); + int ThisCaptureLevel = getOpenMPCaptureLevels(Kind); + Stmt *S = AStmt; + while (--ThisCaptureLevel >= 0) + S = cast(S)->getCapturedStmt(); + DSAChecker.Visit(S); if (DSAChecker.isErrorFound()) return StmtError(); // Generate list of implicitly defined firstprivate variables. Index: cfe/trunk/test/OpenMP/target_parallel_default_messages.cpp =================================================================== --- cfe/trunk/test/OpenMP/target_parallel_default_messages.cpp +++ cfe/trunk/test/OpenMP/target_parallel_default_messages.cpp @@ -23,5 +23,8 @@ foo(); #pragma omp target parallel default(shared) ++argc; + #pragma omp target parallel default(none) + #pragma omp parallel default(shared) + ++argc; return 0; }