[PATCH] [OPENMP] Codegen for 'omp barrier' directive.

John McCall rjmccall at gmail.com
Wed Dec 3 12:12:59 PST 2014

Comment at: lib/CodeGen/CGOpenMPRuntime.cpp:640
@@ -642,3 +639,3 @@
                                          OpenMPLocationFlags Flags) {
-  // Build call __kmpc_barrier(loc, thread_id)
+  // Build call __kmpc_cancel_barrier(loc, thread_id);
   llvm::Value *Args[] = {EmitOpenMPUpdateLocation(CGF, Loc, Flags),
ABataev wrote:
> rjmccall wrote:
> > Does this runtime function always exist, or is it contingent on having a sufficiently new OpenMP runtime?  If the latter, you should introduce the concept of a target OpenMP runtime version, patterned on the target Objective-C runtime version.
> > 
> > Also, please describe in a comment why we're using this function rather than the other, since apparently both "work" in some sense.
> Yes, it exists always. In OpenMP 3.1 it works just the same way as a regular kmpc_barrier() (actually, kmpc_cancel_barrier just calls it). But it adds processing of cancellation directives introduced in OpenMP 4.0.
> Ok, I'll add the comment.
Okay.  Is that desired for the existing uses of EmitOMPBarrierCall?  If everybody always wants a cancel barrier, and both runtime functions take the same arguments, why are there two runtime functions at all?


More information about the cfe-commits mailing list