That's super! Thank you Antoniu. With the capacity of printing the expanded code, it feels a lot more freedom now when reading the source code of libgomp.
Cheers, Tim On Mon, Oct 5, 2009 at 8:29 AM, Antoniu Pop <antoniu....@mines-paristech.fr> wrote: > Hi Tim, > > >> From gcc online docs (http://gcc.gnu.org/onlinedocs/libgomp/), I found >> documentations for most of OpenMP constructs, except one very >> important construct TASK. > > I cannot answer this. It may be that the documentation was written > before tasks (which were introduced in a latter versionĀ of OpenMP) > were added to GCC OpenMP. > >> >> I don't know why it is missing, but I really >> need to find out how TASK get transformed into GOMP_* routines. I >> posted this question before, but haven't got a reply yet. I am very >> grateful if someone can point me to the right track. For example, is >> there a pretty-print feature of the AST after processing the OpenMP >> pragmas? If so, how? Of course, if someone have the expertise, and >> directly show me how TASK get transformed, it would be even better! > > > For the pretty print, just use -fdump-tree-ompexp-all on the compile > line and look for the file *.c.*ompexp that is generated. It contains > the dump just after OpenMP expansion. > > If you need to check out the code generation routines by yourself, > take a look at gcc/omp-low.c > Most of everything happens there. There are two passes, OpenMP > lowerring then expansion. The generation of the GOMP_* routine calls > happens during expansion pass and so you should start from the > "expand_omp_taskreg" function (in gcc/omp-low.c). > > Best, > Antoniu >