Hello Jakub et al., I have a question regarding the parallel for implementation. I am implementing _Cilk_for based on the routines in omp-low.c and I would like to create a child function but would like to move the items that gimplify_omp_for inserts in for_pre_body in the top-level function. I need to do this because in _Cilk_for, we insert the body of the function into a child function and then we call a builtin CilkPlus function called __cilkrts_cilk_for_64 and pass in the child function's name, data pointer, loop-count and grain.
The loop count computation gets to be an issue in C++ when we use iterator. For example, if we have something like this: Vector <int> array; For (vector<int>::iterator iter = array.begin(); iter != array.end (); iter++) gimplify_omp_for function gimplifys the condition expression (array.end ()) and then inserts the following in pre_body.... iter = std::vector<int>::begin (&array); D.28387 = std::vector<int>::end (&array); try { retval.0 = __gnu_cxx::operator-<int*, std::vector<int> > (&D.28387, &iter); } finally { D.28387 = {CLOBBER}; } ..and moves it to the child function at a later stage (I believe in lower_omp_for). I want to make it *NOT* do that and keep it in the current function, since I want to use the retval.0. Can someone please suggest me how to do that? Any help is greatly appreciated! Sincerely, Balaji V. Iyer.