[PATCH] [OPENMP] Codegen for 'private' clause in 'task' directive.

Alexey Bataev a.bataev at hotmail.com
Wed Apr 29 22:56:21 PDT 2015

John, thanks for the review!

Comment at: lib/CodeGen/CGStmtOpenMP.cpp:1391
@@ +1390,3 @@
+    }
+  }
+  CGM.getOpenMPRuntime().emitTaskCall(*this, S.getLocStart(), S, Tied, Final,
rjmccall wrote:
> You might want to consider sorting this array by alignment, which will give you an optimal packing in the structure you end up building.  On the other hand, it might be better to do that implicitly when building the structure later, then just keep a map from the index in this array to the index there.
> Is there a good reason to pass around Privates as an array of Expr* instead of an array of VarDecl*?  It feels like you just end up having to drill down to the declaration constantly.
> Also, why not make a single SmallVector of a struct containing both the VarDecl* and the copy expr?
I will sort it when building the structure, I don't think that we need to expose some specific details to general codegen procedure.
I can provide a list of VarDecls*, but all other similar methods accept ArrayRef<const Expr *>, not ArrayRef<const VarDecl *>. I just don't want to break some "uniformness" of CGOpenMPRuntime methods.
Also I thought about joining two lists in one, but again it will break some already used format of interface. But I think I will join them internally in CGOpenMPRuntime.



More information about the cfe-commits mailing list