Clang OpenMP frontend

Dear List,

I'm trying to understand how clang implements the OpenMP task construct i.e. how the task construct is converted to code. Page 12 of "The LLVM OpenMP Runtime Library" document provides only one example of what an OpenMP construct is converted into (http://openmp.llvm.org/Reference.pdf#page=12)

Where in the source can I find these transformations? I've cloned the repository and searched the source but cannot find the source for implementation of OpenMP constructs.

A bit of background. I'm working on a problem is a perfect fit for task parallelism. However I'm also using a custom memory allocator and I am concerned about what happens when OpenMP creates a task. How much data does OpenMP copy, or does the task object/structure (I assume there is one) merely hold a pointer to my data? I think it matters because of the way that my objects are laid out in my custom memory pool.

Regards,

- Olumide