r204143 - [OPENMP] DSA fix

Alexey Bataev a.bataev at hotmail.com
Tue Mar 18 05:19:13 PDT 2014


Author: abataev
Date: Tue Mar 18 07:19:12 2014
New Revision: 204143

URL: http://llvm.org/viewvc/llvm-project?rev=204143&view=rev
Log:
[OPENMP] DSA fix

Modified:
    cfe/trunk/lib/Sema/SemaOpenMP.cpp

Modified: cfe/trunk/lib/Sema/SemaOpenMP.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOpenMP.cpp?rev=204143&r1=204142&r2=204143&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaOpenMP.cpp (original)
+++ cfe/trunk/lib/Sema/SemaOpenMP.cpp Tue Mar 18 07:19:12 2014
@@ -134,7 +134,22 @@ DSAStackTy::DSAVarData DSAStackTy::getDS
                                           VarDecl *D) {
   DSAVarData DVar;
   if (Iter == Stack.rend() - 1) {
-    DVar.CKind = OMPC_shared;
+    // OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced
+    // in a region but not in construct]
+    //  File-scope or namespace-scope variables referenced in called routines
+    //  in the region are shared unless they appear in a threadprivate
+    //  directive.
+    // TODO
+    if (!D->isFunctionOrMethodVarDecl())
+      DVar.CKind = OMPC_shared;
+
+    // OpenMP [2.9.1.2, Data-sharing Attribute Rules for Variables Referenced
+    // in a region but not in construct]
+    //  Variables with static storage duration that are declared in called
+    //  routines in the region are shared.
+    if (D->hasGlobalStorage())
+      DVar.CKind = OMPC_shared;
+
     return DVar;
   }
 





More information about the cfe-commits mailing list